各位大佬你們好,我想問一下單片機STC89C52單片機使用DHT11時與定時器發生沖突怎么辦,DHT11要是想實現檢測濕度,就得按照下面的代碼,而定時器1的作用是做倒計時用的。要想讀DHT11的就必須先關定時器再開定時器,但是倒計時就不能通過按鍵按下就開始(用一個按鍵開始倒計時)。現在的問題就是一插電,濕度顯示的同時也就直接開始倒計時,按鍵沒有作用,我該怎么解決這問題
//********************************濕度檢測*******************************//
DHT11_delay_ms(100);
TR0 = 0;
TR1 = 0;
DHT11_receive();
for(i=0;i<7;i++)
{
if(i<=2)
{
sidu[ i]= rec_dat[ i]; //讀取濕度
}
}
LCD_DispOneChar(5, 1, 'H');
LCD_DispOneChar(6, 1, ':');
LCD_DispStr(7, 1, sidu);
TR0 = 1;
TR1 = 1;
//************************************定時器1-用于實現倒計時功能***********************//
void T1_init()//定時器1初始化
{
TMOD |= 0x10; //0001 0000//設置方式1是16位的。CT=0是定時,CT = 1是記數
TH1 = 15536/256; //12MHz 的晶振,那么一個周期就是 1 us,所以需要計數 50ms / 1us = 50000
TL1 = 15536%256; //方式1
TR1 = 0;
ET1 = 1;
EA = 1;
}
void t1_irs(void)interrupt 3
{
TH1 = 15536/256; //重裝初值
TL1 = 15536%256;
if(++con == 20) //如果con自++到20 就1000ms ,最大定時時間=65536us=65.536ms。中斷20次就是1秒。
{
con = 0;
miao--;
if(miao<0)
{
miao=59;
fen--;
}
else if(fen<0)
{
fen=0;
}
}
}
|