Está en la página 1de 2

;

; JUEGJ DE LUCES
; Seleccion Funcion
; 0 Intercalar
; 1 Rotar Izquierda
; 2 Incremento Izquierda
;

List P=16f84
#include "P16f84.inc"
opcion equ PJRTA
numero2 equ 0x11
luz equ PJRTB
repe equ 0x20
JRG 0
tabla
bsf STATUS,RP0
movlw 0xFF
movwf TRISA ;el puertoA tiene 8 bits de entrada
clrf TRISB ;el puertoB tiene 8 bits de salida
bcf STATUS,RP0 ;banco 0
clrf PJRTB
main
opcion0
movlw 0x01
subwf opcion,0
btfsc STATUS,C ;si C=0 entonces era 0
goto opcion1
call intercalar
opcion1
movlw 0x01
subwf opcion,0
btfss STATUS,Z ;si Z=1 entonces era 1
goto opcion2
call rotar_izquierda
opcion2
movlw 0x02
subwf opcion,0
btfss STATUS,Z ;si Z=1 entonces era 2
goto main
call incremento_izquierda

retardo
movlw d'255'
movwf 0x98
movlw d'255'
movwf 0x9A
ret1
decfsz 0x98
goto ret1
ret2
decfsz 0x9A
goto ret2
return
intercalar
movlw b'10101010'
movwf luz
movlw 0x50
movwf repe
INTER
call retardo
comf luz,1
decfsz repe,1
goto INTER
return

rotar_izquierda
bcf STATUS,C
movlw b'10000000'
movwf luz
movlw 0x50
movwf repe
RJTAR_I
call retardo
rrf luz,1
decfsz repe,1
goto RJTAR_I
return

incremento_izquierda
movlw 0x50
movwf repe
INC_I
movlw b'00000001'
movwf luz
call retardo
movlw b'00000011'
movwf luz
call retardo
movlw b'00000111'
movwf luz
call retardo
movlw b'00001111'
movwf luz
call retardo
movlw b'00011111'
movwf luz
call retardo
movlw b'00111111'
movwf luz
call retardo
movlw b'01111111'
movwf luz
call retardo
movlw b'11111111'
movwf luz
call retardo

decfsz repe,1
goto INC_I
return
END

También podría gustarte