|
芯片是STC32G12K, 用STC-LINK仿真,Timer0初始化程序如下,如果TMOD设置为不可屏蔽中断,则ISR中断正常运行,如果是设置为普通的自动重装计时器,运行时进入中断几次后就再也不进了,这是怎么回事呢?
#define Timer0_Reload (65536UL - (MAIN_Fosc / 1000)) // Timer 0 中断频率, 1000次/秒
// MODE3, Timer0 set as 16 bits timer auto-reload
//TMOD = 0x00;
//工作模式, 0: 16 位自动重装, 1: 16 位定时/计数, 2: 8 位自动重装, 3: 16 位自动重装, 不可屏蔽中断
TMOD = 0x03;
AUXR |= 0x80; // Timer0 set as 1T
TH0 = (u8)(Timer0_Reload / 256);
TL0 = (u8)(Timer0_Reload % 256);
ET0 = 1; // Timer0 ISR enable
TR0 = 1; // Tiner0 run
EA = 1; // 打开总中断
void Timer0_ISR(void) interrupt TMR0_VECTOR
{
B_1ms = 1; // 1ms 标志
}
我这个现象和这个帖子的有点类似,https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2497&extra=page%3D1
|
-
不进中断
|