目前我在液晶屏上遇到了一些問題。我試着做一個倒數計時器,但是當我設置Hour = 0,Min = 1時,sec命中0,我的小時轉向某個未知的字符,min = 59,sec = 59.我錯過了什麼?8051微控制器液晶倒數計時器
void Timer1(void) interrupt 3
{
TF1 = 0;
TH1 = 0xB1;
TL1 = 0XE0;
cd_msec--;
if(cd_msec == 0)
{
cd_msec = 99;
cd_sec--;
}
if(cd_sec == 0)
{
cd_sec = 59;
cd_min--;
}
if(cd_min == 0)
{
cd_min = 59;
cd_hour--;
}
if(cd_hour == 0)
{
cd_hour = 0;
}
if(cd_hour == 0 && cd_min == 0)
{
cd_hour = 0;
cd_min = 0;
}
if(cd_hour == 0 && cd_min == 0 && cd_sec == 0)
{
cd_hour = 0;
cd_min = 0;
cd_sec = 0;
cd_msec = 0;
}
}
哦。我現在明白了。哇謝謝你們 – 2015-02-06 09:16:54
@Sunil,@FuFu Alex:注意這裏的例子有點不對。最後一個'else'是錯誤的。這一點將會達到1滴!對「COUNTDOWN REACHED」的檢查必須在減量完成之後,即在大if語句之後。 – 4386427 2015-02-06 10:44:23
@nielsen,謝謝你指出。所以,在每個時間點上,它都會像3-> 2-> 1-> 0 - >「COUNTDOWN已達到0」。實際上,在「COUNTDOWN REACHED TO 0」時,應該在最外層if..else之後進行檢查。例如 if(milli_sec == 0 && second == 0 && minute == 0 && hour == 0 {// COUNTDOWN Delached to 0} – 2015-02-06 11:05:16