在8051中设置定时器中断,卡住了

时间:2013-02-12 06:14:57

标签: embedded 8051 interrupt sdcc

您好我正在尝试在8051的定时器3上设置溢出定时器中断。代码卡在中断例程中。我正在使用2511F32(wixel)

这是中断设置代码:

{     ......

T3CTL |= 0xE0;                  // set prescaler to tick frequency / 128 (DIV) bits 7:5
T3CTL |= 0x04;                  // Clear counter value (CLR - bit 2)
T3CTL |= 0x00;                  // Timer mode set to free running (00) bits 1:0
T3CTL |= 0x08;                  // Enable overflow interrupt (OVFIM) bit 3

T3CCTL1 &= ~0x40;               // disable timer compare interrupts
T3CCTL0 &= ~0x40;               // disable timer compare interrupts

IEN1  |= 0x08;                  // Enable Timer 2 interrupts


T3CTL |= 0x10;                  // Start the timer (START - bit 4)

EN = 1;

......

}

这是中断例程代码

ISR(T3,0)
{
    TIMIF &= ~0x07;      //   T3OVFIF Clear T3 overflow interrupt flag - bit 0
    LED_YELLOW_TOGGLE();
}

它仍然被困在ISR例行程序中。没有其他中断标志可以清除。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

怎么说代码卡在ISR中?如果指示灯正在切换,则中断始终处于启用状态,并且一旦完成就会调用isr。它永远不会返回主代码..