本帖最后由 hzocce 于 2015-12-16 08:45 编辑
我的定时器中断服务函数为:
// unsigned char Second=0;这个是全局变量在程序中已经定义好!
void Time0() interrupt 1
{
Fifty_ms++;
if(Fifty_ms==20)
{
Fifty_ms=0;
Second++;
if( ((Second%2)==1) )Two_Sec_Flag=1;
}; //自加一次为50ms
}
先定义一个时间戳数组,用于处理6个超时登记:unsigned char Device_Time_Buffer[6];
//进入for循环体后:
Device_Time_Buffer=Second;//将当时时间的秒的值符放在数组中
//然后工作过一段时间后,将后面的Second跟数组中的初值比对
if( Second>Device_Time_Buffer ? ( (Second-Device_Time_Buffer)>10 ) : ( (256-Device_Time_Buffer+Second)>10) ) //是否超过预定的10秒钟时间?
//这样比对,是否可以?
|