资源简介
本设计利用定时器中断功能实现了频率测量的功能,模块化的程序可读性强。

代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[11] = {0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};
long uint pulse=0;//计数输入的方波的个数;
long uint freq=0;//频率
uchar temp=0; //临时变量
uchar f;
void delay_1ms(uint i) //延时函数,约1ms
{
uint xj;
for(j=0;j for(x=0;x<=148;x++);
}
void Time0_Init()//定时器和计数器的初始化函数
{
EA=1; //打开全局中断
TMOD = 0x15;//设定定时器1和计数器0的工作方式为方式1
TH0 = 0xff;//计数器0的初值
TL0 = 0xff;//计数器0的初值
ET0=1; //允许计数器0中断
TR0=1; //打开计数器0,开始计数
TH1 = 0x3c;//定时器1的初值
TL1 = 0xb0;//定时器1的初值
ET1=1; //允许定时器1中断
TR1 = 1;//打开定时器1,开始计数
}
void main()
{
Time0_Init(); //初始化定时器和计数器
while(1)
{
P2=0xf7; //以下为数码管显示函数
P0=0x00;
P0=table[freq/1000%10];
delay_1ms(2);
P2=0xfb;
P0=0x00;
P0=table[freq/100%10];
delay_1ms(2);
P2=0xfd;
P0=0x00;
P0=table[freq/10%10];
delay_1ms(2);
P2=0xfe;
P0=0x00;
P0=table[freq%10];
delay_1ms(1);
}
}
void ISQ_timer0(void) interrupt 1 //用来计数脉冲数,每一个方波脉冲,计数器进入中断,脉冲数加一
{
TR0 = 0;
pulse++;
TH0 = 0xff;
TL0 = 0xff;
TR0 = 1;
}
/****************************************************************
用来设定时间,定时器的周期为50ms,当经过20次后,
也即1s后,关断定时器和计数器,将一秒内计数的脉冲数赋给频率pulse
一秒内采集的脉冲数即为输入方波的频率
****************************************************************/
void ISQ_time1() interrupt 3
{
TH1 = 0x3c;
TL1 = 0xb0;
temp++;
if(temp==20)
{
TR0 = 0;
TR1 = 0;
temp=0;
freq=202642400/pulse*100/pulse;
pulse=0;//将脉冲数清零,重新计数
TR0 = 1;//打开计数器0,进入下一个循环
TR1 = 1;//打开定时器1,进入下一个循环
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-08-15 23:53 test_fre_x\
文件 6376 2009-05-07 14:37 test_fre_x\STARTUP.A51
文件 14070 2018-07-08 15:12 test_fre_x\STARTUP.LST
文件 749 2018-07-08 15:12 test_fre_x\STARTUP.OBJ
文件 2429 2018-07-06 17:02 test_fre_x\day5_tf.c
文件 1490 2018-07-08 15:12 test_fre_x\frequence.LST
文件 2034 2018-07-08 15:12 test_fre_x\frequence.OBJ
文件 293 2018-07-06 22:45 test_fre_x\frequence.c
文件 131 2018-07-06 22:51 test_fre_x\frequence.h
文件 894 2018-07-06 22:50 test_fre_x\it.LST
文件 592 2018-07-06 22:50 test_fre_x\it.OBJ
文件 52 2018-07-06 22:50 test_fre_x\it.__i
文件 53 2018-07-06 22:51 test_fre_x\it.c
文件 4113 2018-07-08 15:18 test_fre_x\lcd.LST
文件 6832 2018-07-08 15:18 test_fre_x\lcd.OBJ
文件 53 2018-07-08 15:18 test_fre_x\lcd.__i
文件 1499 2018-07-08 15:18 test_fre_x\lcd.c
文件 322 2018-07-08 14:52 test_fre_x\lcd.h
文件 6213 2018-07-06 21:03 test_fre_x\main.LST
文件 8590 2018-07-06 21:03 test_fre_x\main.OBJ
文件 3451 2018-07-06 21:03 test_fre_x\main.c
文件 4060 2018-07-08 15:23 test_fre_x\test_freq.LST
文件 4858 2018-07-08 15:23 test_fre_x\test_freq.OBJ
文件 59 2018-07-08 15:23 test_fre_x\test_freq.__i
文件 1464 2018-07-08 15:23 test_fre_x\test_freq.c
文件 12740 2018-07-08 15:23 test_fre_x\test_frequency
文件 4390 2018-07-05 23:37 test_fre_x\test_frequency.LST
文件 14749 2018-07-08 15:23 test_fre_x\test_frequency.M51
文件 0 2018-08-15 23:11 test_fre_x\test_frequency.build_log.htm
文件 1573 2018-07-05 20:28 test_fre_x\test_frequency.c
文件 2471 2018-07-08 15:23 test_fre_x\test_frequency.hex
............此处省略9个文件信息
- 上一篇:电机测速程序的实现很使用 可读性强
- 下一篇:电工学答案电工学答案.rar
相关资源
- STM32F103定时器中断程序
- STM32定时器使用入门。看了这个程序会
- 8259A中断控制实验
- PIC 单片机定时器初值计算器
- fpga实现频率测量
- 课程设计蔬菜大棚自动控制系统,包
- 一个mfc前端显示秒表
- SCI串口中断接收发送例程
- 4_USART串口通信(空闲中断+DMA.zip
- STM32F042F6P6 Uart12DMA;发送中断接收
- 基于ARM7 PWM定时器的图像传感器时序信
- 在IAR环境下,lpc1788用户程序的地址及
- ARM7内核的中断屏蔽方法
- 湖南大学操作系统实验报告
- 易语言液晶定时器源码
- 易语言API定时器源码
- 易语言关机定时器源码
- 易语言定时器正常显示倒记时源码
- 51单片机定时器/计数器的结构和原理
- MCS-51单片机定时器和计数器区别的理
- STM32F030从机中断接收的iic代码,附带
- 西门子plc定时器ton与tonr有什么区别
- BIOS中断调用表
- STM32F2技术培训_通用定时器_TIM.pdf
- mini2440全套裸机程序MDK 运行
- TQ2440裸机中断(外部中断)
- 控制台程序使用串口
- MSP430F5438A Timer_B 操作实验
- MSP430F5438A Timer_A 操作实验
- MCS-51单片机定时器/计数器常见习题解
评论
共有 条评论