我正在使用MPLAB XC8編譯器PIC18F87J11,我需要使用內部time1進行計數。我注意到如果中斷設置爲高優先級,我的代碼工作得很好。然而,低優先級它不起作用,我只是無法弄清楚。低優先級Timer1不工作
定時器1設置:
// 1/1 prescalar
T1CONbits.T1CKPS1 = 1;
T1CONbits.T1CKPS0 = 1;
// Use Internal Clock
T1CONbits.TMR1CS = 0;
// Timer1 overflow interrupt
PIE1bits.TMR1IE = 1;
// Enable Timer 1
T1CONbits.TMR1ON = 1;
INTCONbits.PEIE = 1; // Enable Perpherial Interrupt
INTCONbits.GIE = 1; // Enable Global Interrupt
這工作得很好
void interrupt high_priority lowISR(void) {
if (PIR1bits.TMR1IF == 1) {
Printf("\r\n 1 second");
PIR1bits.TMR1IF = 0;
}
}
然而,這並不和我不知道爲什麼。
void interrupt low_priority lowISR(void) {
if (PIR1bits.TMR1IF == 1) {
Printf("\r\n 1 second");
PIR1bits.TMR1IF = 0;
}
}
我錯過了什麼?