Documentos de Académico
Documentos de Profesional
Documentos de Cultura
list p=16F84A
#include P16F84A. inc
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;**** Definicion de variables ****
Contador1 equ 0x0C
Contador2 equ 0x0D
;.............................................
;**** Rutina de servicio de Interrupcion ****
;**** Interrupcion por RB0 ****
ISR
btfss INTCON, INTF ; Consultamos si es por RB0. -
retfie ; No, Salimos de interrupcin. -
call Demora_20ms ; Comprueba si es rebote. -
btfss PORTB,Pulsador
goto Fin_ISR ; Es rebote, entonces salimos. -
btfss PORTB,Led ; Si esta prendido, lo apagamos. -
goto Prender_Led
bcf PORTB,Led ; Apagamos Led
goto Fin_ISR
Prender_Led
bsf PORTB,Led ; Encendemos Led
Fin_ISR
bcf INTCON, INTF ; Limpiamos bandera. -
retfie ; Salimos de interrupcin. -
;..........................................
;**** Demora ****
Demora_20ms
movlw 0xFF ;
movwf Contador1 ; Iniciamos contador1. -
Repeticion1
movlw 0x19 ;
movwf Contador2 ; Iniciamos contador2
Repeticion2
decfsz Contador2, 1 ; Decrementa Contador2 y si es 0 sale. -
goto Repeticion2 ; Si no es 0 repetimos ciclo. -
decfsz Contador1, 1 ; Decrementa Contador1. -
goto Repeticion1 ; Si no es cero repetimos ciclo. -
return ; Regresa de la subrutina. -
end