2013-02-12 1 views
0

안녕하세요, 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 루틴에 남아 있습니다. 삭제할 다른 인터럽트 플래그가 없습니다. 어떤 아이디어?

+0

LED_YELLOW_TOGGLE()은 무엇을합니까? 그 코드도 게시 할 수 있습니까? –

+0

'IRCON & = ~ 0x07; 시도해주세요. – UncleO

+0

@MartinThompson 단지 I/O 핀 토글입니다 : #define LED_YELLOW_TOGGLE() {P2DIR^= 0x04;} – jelipito

답변

0

어떻게 ISR에 코드가 고정되어 있다고합니까? led가 켜지면 인터럽트가 항상 활성화되고 isr은 끝나자 마자 호출됩니다. 주 코드로 돌아 가지 않습니다 ..

+0

안녕하세요, 문제가 발견. MCU에는 부트 로더가 있으며 노란색 led 핀인 P2_2를 읽음으로써 부트 로더 모드로 들어갔다. 지금 일하고있다. 모두에게 감사드립니다. – jelipito

관련 문제