Timer PIC16f877a定时器0代码不工作
最近,我尝试制作一个程序,使用timer0从255溢出到0,并转到isr代码,当我在microchip的timer0数据表教程中学习时,按下T0CKI引脚上的按钮一次,该代码将点亮led,但无论我试图从代码中更改什么,它都无法工作,该代码是用XC8编译的MPLAB X IDE编写的,代码如下:Timer PIC16f877a定时器0代码不工作,timer,interrupt,pic,microchip,mplab,Timer,Interrupt,Pic,Microchip,Mplab,最近,我尝试制作一个程序,使用timer0从255溢出到0,并转到isr代码,当我在microchip的timer0数据表教程中学习时,按下T0CKI引脚上的按钮一次,该代码将点亮led,但无论我试图从代码中更改什么,它都无法工作,该代码是用XC8编译的MPLAB X IDE编写的,代码如下: #include "config.h" void interrupt ISR(); void INIT(); void main(){ INIT(); while(1){
#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就是我在MPLAB中使用Windows->configuration bits设置配置位的地方
提前感谢所有回复者,非常感谢计时器硬件不会检查算术运算的结果。只有在没有内核干预的情况下(即计时器正在运行且从255溢出回零),才会设置中断标志。当您这样做时:
TMR0--;
它基本上是在核心硬件中实现的
Read TMR0 memory location
Add 1
Write TMR0 memory location
你检查TMR0IE。您在哪里设置它?它是intcon寄存器中设置为1-on的第5位-