📄 freq.c
字号:
#include "reg52.h"
#include "Zlg7290.h" //Zlg7290库
#include "viic_c51.h" //iic库
unsigned char scount,pcount;
void counter1_int() interrupt 3
{
TR1=0; //关闭定时器
TR0=0;
pcount++; //计算溢出的次数
TF1=0; //清除溢出标志
TR1=1; //开定时器
TR0=1;
}
void timer0_int() interrupt 1
{
TR0=0; //关闭定时器
//TR1=0;
TH0=0x4C; //重装定时器
TL0=0x19;
TF0=0; //清除溢出标志
scount--;
if(scount>0) //到1s了吗?
{
TR0=1; //没到,开定时器
//TR1=1;
}
else
TR1=0; //到了,停止T1的计数
}
main()
{
unsigned char a[8];
unsigned char i,resh,resl;
unsigned long int freq;
TMOD=0xD1; //定时器0工作在定时方式1,定时器1工作在计数方式1
TH0=0x4C; //50ms
TL0=0x19;
TH1=0; //计数值清0
TL1=0;
scount=20; //定时1s
PT1=1; //定时器1高优先级
ET1=1; //使能定时器中断
ET0=1;
EA=1;
TR0=1; //启动定时器和计数器
TR1=1;
for (i=0;i<8;++i)
a[i]=0;
ZLG7290_SendBuf(a,5);
while(1)
{
if(!scount) //1s时间到
{
//TR1=0;
//TR0=0;
resh=TH1; //取出计数值
resl=TL1;
i=pcount;
pcount=0;
TH1=0; //计数值清零
TL1=0;
TH0=0x4C; //重装定时器0
TL0=0x19;
scount=20; //定时1S
TR0=1; //启动定时器和计数器
TR1=1;
freq=65535*i+resh*256+resl; //计算频率值
a[0]=freq%10; //将各位分离显示
a[1]=(freq/10)%10;
a[2]=(freq/100)%10;
a[3]=(freq/1000)%10;
a[4]=(freq/10000)%10;
a[5]=freq/100000;
ZLG7290_SendBuf(a,6); //送ZLG7290显示
//delayNS(100);*/
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -