list P=16f877A,
include <[Link]>
valor1 equ H'21'
valor2 equ H'22'
valor3 equ H'23'
cte1 equ 60h
cte2 equ 55h
cte3 equ 65h
dato00 equ H'24'
dato01 equ H'25'
dato02 equ H'26'
dato03 equ H'27'
dato04 equ H'29'
dato05 equ H'30'
cte00 equ 0h
cte01 equ 1h
cte02 equ 2h
cte03 equ 3h
cte04 equ 4h
cte05 equ 5h
org 0
goto inicio
org 5
inicio:
BSF STATUS,5
BCF STATUS,6
MOVLW H'0'
MOVWF TRISB
CLRF PORTB
CLRF PORTA
MOVLW 06h
MOVWF ADCON1
MOVLW 3Fh
MOVWF TRISA
BCF STATUS,5
CICLO
MOVLW d'5'
MOVWF PORTA
MOVLW cte00
MOVWF dato00
MOVFW PORTA
SUBWF dato00,W
BTFSC STATUS,Z
GOTO APAGAR
MOVLW cte01
MOVWF dato01
MOVFW PORTA
SUBWF dato01,W
BTFSC STATUS,Z
GOTO PRENDER
MOVLW cte02
MOVWF dato02
MOVFW PORTA
SUBWF dato02,W
BTFSC STATUS,Z
GOTO DERECHA
MOVLW cte03
MOVWF dato03
MOVFW PORTA
SUBWF dato03,W
BTFSC STATUS,Z
GOTO IZQUIERDA
MOVLW cte04
MOVWF dato04
MOVFW PORTA
SUBWF dato04,W
BTFSC STATUS,Z
GOTO DER_IZQ
MOVLW cte05
MOVWF dato05
MOVFW PORTA
SUBWF dato05,W
BTFSC STATUS,Z
GOTO APA_PREN
GOTO CICLO
APAGAR
CLRF PORTB
GOTO CICLO
PRENDER
MOVLW d'255'
MOVWF PORTB
GOTO CICLO
DERECHA
CLRF PORTB
DER_CICLO
RRF PORTB,1
CALL retardo
BTFSS PORTB,0
GOTO DER_CICLO
GOTO CICLO
IZQUIERDA
CLRF PORTB
IZQ_CICLO
RLF PORTB,1
CALL retardo
BTFSS PORTB,7
GOTO IZQ_CICLO
GOTO CICLO
DER_IZQ
CLRF PORTB
D1_CICLO
RRF PORTB,1
CALL retardo
BTFSS PORTB,0
GOTO D1_CICLO
MOVLW d'1'
MOVWF PORTB
CALL retardo
I1_CICLO
RLF PORTB,1
CALL retardo
BTFSS PORTB,7
GOTO I1_CICLO
GOTO CICLO
APA_PREN
CLRF PORTB
CALL retardo
MOVLW d'255'
MOVWF PORTB
CALL retardo
GOTO CICLO
retardo MOVLW cte1
MOVWF valor1
tres MOVLW cte2
MOVWF valor2
dos MOVLW cte3
MOVWF valor3
uno
DECFSZ valor3
GOTO uno
DECFSZ valor2
GOTO dos
DECFSZ valor1
GOTO tres
return
END