PIC18f8722 problema de interrupción

0

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");
}
    
pregunta Alihuseyn

1 respuesta

1

Gracias, @brhans por tu respuesta, hice lo que dijiste. Deshabilité INTCON2bits.RBPU = 0 y funcionó para mí.

    
respondido por el Alihuseyn

Lea otras preguntas en las etiquetas