Hice muchas investigaciones pero no pude averiguar cuál es el problema. En realidad mi código de la siguiente manera. Estoy tratando de implementar un código en C con el compilador XC8.
Para habilitar una oración en la pantalla LCD de la placa mientras se presiona el botón RB6. Habilito INCTONbits.GIE = 1 y INTCONbits.RBIE = 1 y INTCONbits.RBIF = 0.
Dentro de la interrupción, la función displaySentence () se ingresa al bucle infinito para ver el resultado. Revisé todas las respuestas relacionadas con la interrupción aquí, pero no ayudé a mi problema. Lo que puede ser un problema para la interrupción del RB7-4, estoy trabajando en PIC18f8722 .
void displaySentence();
void initialize();
void interrupt RBINT_ISR(void){
INTCONbits.GIE = 0;
__delay_ms(10);
while(1){
displaySentence();
}
INTCONbits.RBIF = 0;
INTCONbits.RBIE = 1;
INTCONbits.GIE = 1;
}
void main(void)
{
__delay_ms(15);
__delay_ms(15);
__delay_ms(15);
__delay_ms(15);
InitLCD(); // Initialize LCD in 4bit mode
ClearLCDScreen(); // Clear LCD screen
initialize();
while(1);
}
void initialize(){
TRISB = 0x40;
PORTB = 0x00;
// | GIE/GIEH | PEIE/GIEL | TMR0IE | INT0IE | RBIE | TMR0IF | INT0IF | RBIF
// | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0
INTCONbits.RBIF = 0;
INTCONbits.RBIE = 1;
INTCONbits.GIE = 1;
}
void displaySentence(){
WriteCommandToLCD(0x80);
WriteStringToLCD("Interrupt");
WriteCommandToLCD(0xC0);
WriteStringToLCD("is working");
}