?? freq.c
字號(hào):
#include "reg52.h"
#include "Zlg7290.h" //Zlg7290庫
#include "viic_c51.h" //iic庫
unsigned char scount,pcount;
void counter1_int() interrupt 3
{
TR1=0; //關(guān)閉定時(shí)器
TR0=0;
pcount++; //計(jì)算溢出的次數(shù)
TF1=0; //清除溢出標(biāo)志
TR1=1; //開定時(shí)器
TR0=1;
}
void timer0_int() interrupt 1
{
TR0=0; //關(guān)閉定時(shí)器
//TR1=0;
TH0=0x4C; //重裝定時(shí)器
TL0=0x19;
TF0=0; //清除溢出標(biāo)志
scount--;
if(scount>0) //到1s了嗎?
{
TR0=1; //沒到,開定時(shí)器
//TR1=1;
}
else
TR1=0; //到了,停止T1的計(jì)數(shù)
}
main()
{
unsigned char a[8];
unsigned char i,resh,resl;
unsigned long int freq;
TMOD=0xD1; //定時(shí)器0工作在定時(shí)方式1,定時(shí)器1工作在計(jì)數(shù)方式1
TH0=0x4C; //50ms
TL0=0x19;
TH1=0; //計(jì)數(shù)值清0
TL1=0;
scount=20; //定時(shí)1s
PT1=1; //定時(shí)器1高優(yōu)先級(jí)
ET1=1; //使能定時(shí)器中斷
ET0=1;
EA=1;
TR0=1; //啟動(dòng)定時(shí)器和計(jì)數(shù)器
TR1=1;
for (i=0;i<8;++i)
a[i]=0;
ZLG7290_SendBuf(a,5);
while(1)
{
if(!scount) //1s時(shí)間到
{
//TR1=0;
//TR0=0;
resh=TH1; //取出計(jì)數(shù)值
resl=TL1;
i=pcount;
pcount=0;
TH1=0; //計(jì)數(shù)值清零
TL1=0;
TH0=0x4C; //重裝定時(shí)器0
TL0=0x19;
scount=20; //定時(shí)1S
TR0=1; //啟動(dòng)定時(shí)器和計(jì)數(shù)器
TR1=1;
freq=65535*i+resh*256+resl; //計(jì)算頻率值
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);*/
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -