【发布时间】:2014-08-27 21:37:38
【问题描述】:
我最近尝试编写一个程序,使用 timer0 从 255 溢出到 0 并转到 isr 代码,如果按一次 T0CKI 引脚上的按钮,则会打开一个 LED,正如我从 microchip 的 timer0 数据表教程中学到的那样无论我试图从代码中更改什么,都无法正常工作,用 XC8 编译的 MPLAB X IDE 编写,这里是代码:
#include "config.h"
void interrupt ISR();
void INIT();
void main(){
INIT();
while(1){
if(PORTAbits.RA4 == 1){
TMR0--;
}
}
}
void interrupt ISR(){
if(INTCONbits.TMR0IF == 1 && INTCONbits.TMR0IE == 1){
TMR0 = 255;
INTCONbits.TMR0IF = 0;
PORTDbits.RD0 = 1;
}else{
PORTDbits.RD0 = 0;
}
}
void INIT(){
INTCON = 0b11100000;
OPTION_REG = 0b11100111;
TRISDbits.TRISD0 = 0;
PORTDbits.RD0 = 0;
TRISAbits.TRISA4 = 1;
TMR0 = 255;
}
这是我编写所有代码的 main.c config.h 正是我使用 Windows->MPLAB 中的配置位设置配置位的地方
提前感谢所有回复,非常感谢
【问题讨论】:
-
您检查 TMR0IE。你在哪里设置的?
-
intcon 寄存器中的第 5 位设置为 1 -on-
标签: timer interrupt pic microchip mplab