요즘은 timer0을 사용하여 255에서 0으로 오버플로하는 프로그램을 만들려고했는데 T0CKI 핀의 버튼을 한 번 누르면 마이크로 칩의 지시에 따라 LED가 켜지는 isr 코드로 이동합니다.PIC16f877a Timer0 코드가 작동하지 않습니다.
#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는 다음과 같습니다 XC8 컴파일 MPLAB X IDE로 작성 내가 코드에서 변경하려고 어떤 Timer0와 데이터 시트 튜토리얼하지만 전혀 작동하지 않는 경우는, 여기에 코드입니다 config.h는 MPLAB의 Windows-> Configuration 비트를 사용하여 구성 비트를 설정하는 곳입니다.
감사합니다. 모든 응답자에게 미리 감사드립니다.
당신은 TMR0IE 확인합니다. 어디에서 설정합니까? –
1로 설정된 intcon 레지스터의 비트 5입니다. – user3674628