|
|
最近在用60S2做以后測(cè)風(fēng)速的實(shí)驗(yàn),但是在定時(shí)計(jì)數(shù)上出現(xiàn)問題,只用T1的計(jì)數(shù)功能沒問題,但是風(fēng)速不能清零,要用T0定時(shí)一秒的話,就檢測(cè)不到風(fēng)速,有大佬知道原因嗎?源碼如下
void Timer1_init(void)
{
TMOD = 0X62;//1設(shè)定定時(shí)器1模式2,計(jì)數(shù)功能0110 定時(shí)器0模式2,定時(shí)功能 0010
TH1 = 0xfe;//設(shè)置定計(jì)數(shù)器初值 PS這里有兩種思路 1 一個(gè)脈沖溢出 進(jìn)T1的服務(wù)函數(shù)加一 ,或者直接計(jì)數(shù)在T0的服務(wù)函數(shù)里讀值
TL1 = 0xfe;
TH0 =(65536-50000)/256;//50ms中斷一次
TL0 =(65536-50000)%256;
ET0 = 1;
ET1 = 1;
TR0 = 1;
TR1 = 1; //啟動(dòng)定時(shí)器
EA = 1;
}
/*---------------------T0中斷服務(wù)子函數(shù)------------------*/
/*
void Timer0_int(void) interrupt 1 using 2 //定時(shí)T0中斷服務(wù)程序
TR0=0;TR1=0;//先關(guān)閉定時(shí)器
// fs=TH1;
//fs=fs << 8;
// fs= TL1;
flag=1; //轉(zhuǎn)換結(jié)束
TH1=1;TL1=1; //清0重新計(jì)數(shù)
TR0=1;TR1=1; TF0=0;
}
}
/*---------------------T1中斷服務(wù)子函數(shù)------------------*/
/*
void Timer1_int(void) interrupt 3 using 1 //計(jì)數(shù)T1中斷服務(wù)程序
{
fs++;
//TF1=0;
}
如果只用T1的服務(wù)函數(shù)就可以準(zhǔn)確讀取FS的脈沖,但是要同時(shí)用T0的服務(wù)函數(shù) T0會(huì)增加 但是T1的FS就讀不出來
post_newreply
|
|