Hola a todos, estoy haciendo una rutina en Mikrobasic, y tengo problemas con las interrupciones INTCON.RBIE. El problema es el siguiente, puedo entrar en la interrupción, pero no salir de ella, por mas que borre el flag (bandera) de la interrupción, a ver que se les ocurre que puede andar mal?? dejo el código comentado. Gracias de antemano...!!!
PD: Por ahí leí que hay que leer el estado del puerto b antes de borrar la bandera, (no se como hacerlo, no lo vi en ningún ejemplo), también leí por ahí que solo con leer el puerto b se borra el flag....Esto es así??
Para quedar bien, tendría que pasar en 5 display por 7 segmentos cada uno, de "00000" a "EEEEE" al precionar un boton en RB7 que se encuentra a 5v y al soltarlo retornar a "00000", no se si me explico bien?
sub procedure interrupt
if portb.7=1 then 'Si el puerto B7 esta en1 5V entonces
delay_ms(10) 'Espera0,1 seg (antirrebote)
porta=%000000 'Apaga todos los puertos de A
portc=0x79 'Indica EEEEE en display 5 x 7 segmentos
portb=%11100000 'Puerto B inicia 765 y apaga el resto
ClearBit(INTCON,rbif) 'Borra flag
end if 'Fin de sentencia if
end sub 'Fin de interrupcion
main:
ClearBit(OPTION_REG,INTEDG) ' configura interrupcion por flanco de bajada.
INTCON.RBIE = 1 ' Se habilitan las interrupciones por el cambio en el puerto PORTB
SetBit(INTCON,GIE) ' habilita interrupciones globales.
TRISA = %001100 'Configura puertos A5, A4, A1 y A0 de salida y A3 y A2 de entrada
TRISC = %00000000 'Configura puertos C como salida
TRISB = %11100000 'Configura puertos de B4,3,2,1,0 de salida y B7,6,5 entradas
inicio:
portc = %00000000 ' Pone todos los puertos de C en 0 (apaga puertos)
portb= %11100000 'Pone todos los puertos de C en 1 (inicia puertos)
porta = %000011 ' Pone puertos A 5,4,3,2 en 0 (apaga) y puertos A 1,0 en 1 (inicia)
delay_ms 500 ' Espera 1/2 segundo
porta = %0000000 ' Apaga todos los puertos de A
espera:
PORTc=0x3F 'Indica en display 5 X 7 segmentos 00000 (correcta la recepcion y en espera)
portb=%0000000 'Apaga todos los puertos de B
porta=%100001 'Enciende puertos A7 y 0 apaga el resto
goto espera
end.