// Timer1 Interrupt Handler by 4ms interval
// internal RC OSC 8MHz 4ms ; external OSC 4.194304MHz 3.9998ms
//------------------------------------------------------------------------------
void T1_Int_Handler(void) interrupt 14
{
WDTCR= 0x20; // Clear WDT Counter
count_1s++;
if(r4mS_STOP) r4mS_STOP--;
T1_4ms++;
if(T1_4ms>=125) // 500ms定时值到
{
T1_4ms=0;
T1_500ms++;
if(T1_500ms>=2) // 1s定时值到
{
T1_500ms=0;
T1_1s++;
if(T1_1s>=60) // 1minute定时值到
{
T1_1s=0;
T1_minute++;
if(T1_minute>=60) // 1hour定时值到
{
T1_minute=0;
T1_hour++;
if(T1_hour>=24) T1_hour=0;
}
}
}
}
试试这种中断干服务函数。
我总觉得,对zhongduan_CNT值,在while(1)函数体里处理,总觉得不够好。是产生误差的根本原因。
|