|
|
以兩種時間單位(s/ms)倒計時沒有任何技術(shù)問題,不過以1ms周期刷新LCD不現(xiàn)實。就算LCD能完成但肉眼根本無法分辨。給你改為1ms中斷周期并增加一個標(biāo)志位allow用于區(qū)分兩種時間單位的倒計時,至于LCD顯示ms問題只能呵呵了。
void Timer1_isr(void) interrupt 3
{
TH1=(65536-1000)/256;//定時器裝初值
TL0=(65536-1000)%256;
if(allow==0)
{
count++; //中斷次數(shù)累加
if(count==1000) //1000次1毫秒為1秒
{
count=0;
Pon--; // 單片機(jī)工作默認(rèn)繼電器閉合,Pon上電時間倒計時,單位秒
write_twodate(9,Pon); //變化送到LCD顯示
if(Pon==0)
{
JDQ=0; //繼電器斷開
allow=1;
// count++; //繼電器斷電后,Poff掉電時間倒計時
}
}
}
else
{
// if(count==1) //1次為1毫秒,這里是錯誤的,實際為50ms,還沒想到辦法轉(zhuǎn)換不同單位
// {
// count=0;
Poff--; //Poff掉電時間倒計時,單位毫秒
write_onedate(10,Poff); //變化送到LCD顯示
// }
if(Poff==0)
{
JDQ=1; //繼電器吸合
TR1=0; //定時器1關(guān)閉,即倒計時關(guān)閉
TR0=1; // 定時器0開啟,即按鍵掃描開啟
allow=0;//到此一輪倒計時結(jié)束,等待定時器1再次開啟
}
}
} |
|