Secuencia pic 16f84 con pulsador

Saludos a todo el foro.
LLevo poco tiempo con electronica como hobbye y ahora estoy con la programacion de un 16f84a para una secuencia de leds. Con la secuencia no tengo problema pero quiero añadir un pulsador de tal manera que al pulsarlo comience la secuencia.
Lo he preparado para que el modificar la secuencia y los retardos sea lo mas sencillo posible, usando el software pdel para los retardos. He intentado con el pulsador en Ra0 que el pic detecte al pulsarlo pero no hay manera.
Os pongo una secuencia ejemplo:

CUENTA1 equ 0Ch
CUENTA2 EQU 0DH
CUENTA3 EQU 0EH
STATUS EQU 03H
PORTA EQU 05H
PORTB EQU 06H
TRISA EQU 05H
TRISB EQU 06H
F EQU 1
W EQU 0
PDel0 EQU 0x20
PDel1 EQU 0x21
PDel2 EQU 0x22

#DEFINE ON1 BSF PORTB,0
#DEFINE ON2 BSF PORTB,1
#DEFINE ON3 BSF PORTB,2
#DEFINE ON4 BSF PORTB,3
#DEFINE ON5 BSF PORTB,4
#DEFINE ON6 BSF PORTB,5
#DEFINE ON7 BSF PORTB,6
#DEFINE ON8 BSF PORTB,7
#DEFINE ONTODO CALL ENCIE

#DEFINE OFF1 BCF PORTB,0
#DEFINE OFF2 BCF PORTB,1
#DEFINE OFF3 BCF PORTB,2
#DEFINE OFF4 BCF PORTB,3
#DEFINE OFF5 BCF PORTB,4
#DEFINE OFF6 BCF PORTB,5
#DEFINE OFF7 BCF PORTB,6
#DEFINE OFF8 BCF PORTB,7
#DEFINE OFFTODO CALL APAGA

#DEFINE ESPERA CALL DELAY
#DEFINE ESPERA3 CALL DELAY3
#DEFINE ESPERA4 CALL DELAY4
ORG 00H
CLRF PORTA
CLRF PORTB
BSF STATUS,5
CLRF TRISA
CLRF TRISB
BCF STATUS,5
INICIO

;********************************************************************************************
;********A PARTIR DE AQUI ESCRIBE TU SECUENCIA***********************************************
;--------------------------------------------------------------------------------------------
ON1
ESPERA3
ON2
ESPERA3
ON3
ESPERA3
ON4
ESPERA3
ON5
ESPERA3
ON6
ESPERA3
ON7
ESPERA3
ON8
ESPERA4
OFFTODO
ESPERA4
ONTODO
ESPERA4
OFF8
ESPERA3
OFF7
ESPERA3
OFF6
ESPERA3
OFF5
ESPERA3
OFF4
ESPERA3
OFF3
ESPERA3
OFF2
ESPERA3
OFF1
ESPERA3
;--------------------------------------------------------------------------------------------
;****************FIN DE LA SECUENCIA*********************************************************
;********************************************************************************************

GOTO INICIO

DELAY3 movlw .165 ; 1 set numero de repeticion (C)
movwf PDel0 ; 1 |
PLoop0 movlw .41 ; 1 set numero de repeticion (B)
movwf PDel1 ; 1 |
PLoop1 movlw .147 ; 1 set numero de repeticion (A)
movwf PDel2 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 ciclo delay
decfsz PDel2, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (C)
goto PLoop0 ; 2 no, loop
return ; 2+2 Fin.

DELAY4 MOVLW 500H ;3SEG
GOTO DEL
DELAY2 MOVLW 40H ;2SEG
GOTO DEL
DELAY1 MOVLW 20H ;1SEG
GOTO DEL
DELAY MOVLW 010H ;.5SEG
DEL MOVWF CUENTA1
ACA1 MOVLW 0FFH
MOVWF CUENTA2
ACA DECFSZ CUENTA2
GOTO ACA
DECFSZ CUENTA1
GOTO ACA1
RETURN

APAGA CLRF PORTA
CLRF PORTB
RETURN

ENCIE MOVLW 0FFH
MOVWF PORTA
MOVWF PORTB
RETURN
 
Atrás
Arriba