; Pulsador sin rebotes enciende un LED ^
; Que hace => Encender un LED, lo apaga y enciende el siguiente ^
; hasta el LED 8, luego vuelve a emepzar. ^
; ^
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;
STATUS equ h'0003'
OPTION_REG equ h'0081'
PORTA equ h'0005'; define puerto A
PORTB equ h'0006'; define puerto B
; Estos estan definidos en #include <P16F84a.INC>
;W equ h'0000'
;f equ h'0001'
;--------------- Encabezado -------------
List P=PIC16F84a
#include <P16F84A.INC>;Inclusion de fichero de etiquetas
;
ORG 0x00
Inicio: BSF 03,5;Ir a pagina1 para ajustar los puertos
MOVLW 04h;W se Carga con 04 = 0000 0100b
MOVWF 05h;Hace RA2 la entrada para el botón A
MOVLW 00h;Pone 00 en W
MOVWF 06h;Hace toda RB líneas de salida
BCF 03,5;Ir a Pagina0 para seguir programa
; Los ánodos de los LED's se conectan al positivo, de esta forma
; un nivel alto en el puerto B apaga los LEDs.
; Por tanto, para encender un LED aplicamos un 0 a la salida
; que deseamos.
CLRF PORTB
MOVLW .255 ;Apaga los LEDs
MOVWF PORTB;en el puerto B
SwLoop1: BTFSC 05,2;¿esta apretado el pulsador (bit2)?
GOTO SwLoop1;NO. Ir a SwLoop1
CALL Delay;Llamada a rutina de Retardo
SwLoop2:
BTFSS 05,2;¿esta apretado el pulsador?
GOTO SwLoop2;No. Ir a SwLoop2
DECFSZ PORTB,1
BCF STATUS,C; limpio el bit C del STATUS para no intro. error
RRF PORTB,1
CALL Delay;Llamada a rutina de Retardo
GOTO SwLoop1
Delay: DECFSZ 1Bh,1; Retardo
GOTO Delay
DECFSZ 1Ch,1
GOTO Delay
RETURN
END