안녕하세요, 8051의 타이머 3에서 오버플로 타이머 인터럽트를 설정하려고합니다. 코드가 인터럽트 루틴에 걸려 있습니다.타이머가 8051에서 인터럽트가 걸리는 시간이 느려짐
{ ......
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;
......
}
여기에 인터럽트 루틴 코드
이다 : 나는 2511F32 (wixel) 여기 인터럽트 설정 코드를 사용하고ISR(T3,0)
{
TIMIF &= ~0x07; // T3OVFIF Clear T3 overflow interrupt flag - bit 0
LED_YELLOW_TOGGLE();
}
ISR 루틴에 남아 있습니다. 삭제할 다른 인터럽트 플래그가 없습니다. 어떤 아이디어?
LED_YELLOW_TOGGLE()은 무엇을합니까? 그 코드도 게시 할 수 있습니까? –
'IRCON & = ~ 0x07; 시도해주세요. – UncleO
@MartinThompson 단지 I/O 핀 토글입니다 : #define LED_YELLOW_TOGGLE() {P2DIR^= 0x04;} – jelipito