【发布时间】:2014-07-02 20:57:32
【问题描述】:
我正在使用带有PIC18F87J11 的 MPLAB XC8 编译器,我需要使用内部 time1 进行计数。我注意到如果将中断设置为高优先级,我的代码可以正常工作。然而,低优先级它不起作用,我就是想不通。
定时器 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;
}
}
我错过了什么?
【问题讨论】:
标签: embedded interrupt microcontroller pic microchip