Hola. No entiendo cuál es el problema con utilizar dos interrupciones.
Sólo debes habilitarlas y crear las subrutinas correspondientes, así son atendidas cuándo sean llamadas.
Hace tiempo que no utilizo PIC Basic, para recomendar que al activarse una interrupción deshabilites la posibilidad de que se active otra, hasta que termines de ejecutar la que fué atendida.
Hola, amigo Gudino. El problema es que no me salen. jajaja.
No logro hacer esas subrutinas, es decir, cómo hacer que el programa diferencia entre una interrupción por RB0 y entre por cambio de estado RB4-RB7. Saludos.
Saludos amigos. Después de tanto batallar, creo que he logrado hacer un programa donde se utilizan las interrupciones por RB0 y por cambio de estado RB4-RB7 juntas.
Lo he probado en Proteus Isis, ahora lo voy a implementar en mi protoboard y ojalá funcione.
Lo que no logro entender hasta ahora es por qué no funcionan las instrucciones luego de la etiqueta "accion:" ( las que las tengo desactivas) a pesar de que hacen lo mismo.
Gracias por alguna ayuda más o corregir este programa.
Código:
cmcon=7 ; todo el puerto A como digital
Trisa=%00000000 ; toto el puerto A como salida
Trisb=%11110001 ; Pines RB4 al RB7 y RB0 como entradas
porta=0
portb=0
;**************
;**************
on interrupt goto accion
intcon=%10011000 ; habilita la interrupcion por RB0
option_reg.6=1 ; para activarla por el flanco de subida (para RB0)
'main:
' VACIO. Para tener la certeza de detectar el impacto del balín sin
' que ninguna rutina demore esto.
'goto main
;***************
main:
porta=0
portb=0
goto main
;***************
disable ; deshabilita las interrupciones en el handler
accion:
if portb.0=1 then porta.0=1
; high porta.0=1
;pause 100
;low porta.0=0
INTCON.7=0 ; Todas las interrupciones desactivadas momentáneamente.
; para que se diferencie del puerto RB
if portb.4=1 then porta.1=1
if portb.5=1 then porta.2=1
if portb.6=1 then porta.3=1
if portb.7=1 then portb.2=1
pause 100 ' tiempo necesario para que el HT12E detecte el pulso del PIC.
intcon=%10011000
resume
enable
end