|
各位大佬好,
本人做一個可調(diào)時間的鬧鐘程序,要求設(shè)置一次時間,只要單片機不關(guān)機,每到這個時間,鬧鐘都會自動響鈴。
部分C語言程序如下:
int total_time;
int Temp;
void main(void)
{
while(1)
{
total_time=Temp;
}
}
ISR(TIMER_vect) //定時器中斷,1s進(jìn)一次中斷
{
if (total_time !=0)
{ beep=1;
total_time--;
}
else
{beep=0;}
在這個程序中,Temp是一個臨時變量,是通過按鍵設(shè)置的,比如按鍵設(shè)置Temp=30,此時30賦值給total_time, 進(jìn)入中斷后,由于total_time不等于0(為30),此時鬧鐘響,同時totai_time每1s自減1,直到為0為止,自減到0后,鬧鐘停,這就實現(xiàn)了鬧鐘響30s的一個功能。
我的疑問是:
1,total_time自減到0后,total_time的值是不是永遠(yuǎn)就變成0了?如果這樣的話,鬧鐘就只能實現(xiàn)一次,下一次又需要重新設(shè)置,這樣不方便,有沒有可以設(shè)置一次,鬧鐘每到這個時間點就自動鬧鈴?
2,我main里有一個total_time=Temp;的賦值,如果total_time在中斷里自減到0后,total_time就永遠(yuǎn)是0了嗎?因為total_time=Temp;這個賦值是放在while(1)循環(huán)里的,會不會自減到0后,total_time重新被賦值為30?只要我的Temp不變,total_time就是30?還是0?這個地方搞不清楚,我的需求是需要total_time一直保持30,除非Temp改變。
請各位大佬賜教!
|
|