各位大佬好,
本人做一个可调时间的闹钟程序,要求设置一次时间,只要单片机不关机,每到这个时间,闹钟都会自动响铃。
部分C语言程序如下:
int total_time;
int Temp;
void main(void)
{
while(1)
{
total_time=Temp;
}
}
ISR(TIMER_vect) //定时器中断,1s进一次中断
{
if (total_time !=0)
{ beep=1;
total_time--;
}
else
{beep=0;}
在这个程序中,Temp是一个临时变量,是通过按键设置的,比如按键设置Temp=30,此时30赋值给total_time, 进入中断后,由于total_time不等于0(为30),此时闹钟响,同时totai_time每1s自减1,直到为0为止,自减到0后,闹钟停,这就实现了闹钟响30s的一个功能。
我的疑问是:
1,total_time自减到0后,total_time的值是不是永远就变成0了?如果这样的话,闹钟就只能实现一次,下一次又需要重新设置,这样不方便,有没有可以设置一次,闹钟每到这个时间点就自动闹铃?
2,我main里有一个total_time=Temp;的赋值,如果total_time在中断里自减到0后,total_time就永远是0了吗?因为total_time=Temp;这个赋值是放在while(1)循环里的,会不会自减到0后,total_time重新被赋值为30?只要我的Temp不变,total_time就是30?还是0?这个地方搞不清楚,我的需求是需要total_time一直保持30,除非Temp改变。
请各位大佬赐教!
|