Microcontrolador: Interrupción externa "RBIE"

0

Estoy trabajando en un pequeño proyecto con microcontroladores (PIC 16f84A) y me quedé atascado en un punto. Tengo 4 interruptores y esas son las interrupciones externas ahora la idea es que no entiendo, ¿cómo puedo saber qué interruptor causó la interrupción?

Digamos que tengo cuatro interruptores SW1, SW2, SW3, SW4, ahora todos tienen un modo de interrupción externo común y el indicador RBIE y RBIF. Si alguien presiona el interruptor SW2, debería hacer una función "2". ¿Cómo puedo saber que SW2 fue el que presiona y no SW1?

    
pregunta Hasan Hammoud

1 respuesta

0

Leer el puerto sería la respuesta.

Me resultó útil simplemente calcular esto cada vez, ya que luego obtengo marcas para todos los estados con los que me gustaría tratar, cada vez que se presiona o libera lo que quiero saber

ThisPort = PORTB   //note you only read the actual port in one place
ThisPort = NOT ThisPort  //if switches pull low
Changed = ThisPort XOR LastPort  //bit set if change of state
Pushed = ThisPort AND Changed    //bit set if change was pushing
Released = NOT ThisPort AND Changed
LastPort = ThisPort
    
respondido por el Henry Crun

Lea otras preguntas en las etiquetas