T
E
RABAJO Y
XPLICACIÓN
PROGRAMA 5
La interrupción externa RBO/INT.
Se trata de comprobar la interrupción externa que se aplica a través del pin RBO/INT.
El programa principal está en un ciclo cerrado en modo SLEEP (standby de bajo consumo).
Cada vez que se detecta un flanco descendente en RB0 se provoca una interrupción cuyo
tratamiento hace iluminar las salidas RB7-RB1 durante 1 seg.
Contador
Inter
Seguir
Delay_10ms
Inicio
;Este es el cuerpo del programa principal. Se mantiene en estado SLEEP hasta que se produce
;interrupción
Loop
D
P
ESARROLLO
ROYECTOS Y
PIC 16F87
X
List
p=16F876
include
"P16F876.INC" ;Definiciones de registros internos
equ
0x20
org
0x04
goto
Inter
org
0x05
goto
Inicio
bcf
INTCON,INTF ;Repone flag de la interrupción exetrna
movlw
b'11111110'
movwf
PORTB
movlw
b'100'
movwf
Contador
bcf
INTCON,T0IF ;Reponer flag del TMR0
movlw
b'195'
movwf
TMR0
btfss
INTCON,T0IF ;Han transcurrido 10 mS ??
goto
Delay_10ms
decfsz
Contador,F
goto
Seguir
clrf
PORTB
retfie
clrf
PORTB
bsf
STATUS,RP0
movlw
b'00000001'
movwf
TRISB
movlw
b'00000111'
movwf
OPTION_REG ;Preescaler de 256 para el TMR0
bcf
STATUS,RP0
movlw
b'10010000'
movwf
INTCON
sleep
nop
goto
Loop
end
P
E
ROTOTIPOS
LECTRÓNICOS
;Tipo de procesador
;Variable para la temporización
;Vector de interrupción
;Activa las salidas
;Inicia contador de temporizaciones de 10
;ms con 100 (1")
;Repone el TMR0 con 195
;No, esperar
;Decrementa el contador.
;No
;Si, han pasado 1", se desconecta la salida
;Retorno de interrupción
;Borra el Puerto B
;Selecciona banco 1
;RB7-RB1 salidas, RB0/INT entrada
;Selecciona banco 0
;Activa la interrupción externa RB0/INT
2º DPE
62