Está en la página 1de 2

;Fusibles:WDT off, PWRT on, OSCILLATOR xt.

;Programa para mostrar el corriemiento de una luz sobre los dos puertos
;Basicamente lo que hace es cargar valores en los registros 0x06 y 0x05 que son
;desplegados mediante LED's en las terminales de los puertos, completar
;el ciclo y reiniciarlo, se ocupa una rutina de retardo para que sea
;posible la visualizacin en el circuito.
LIST P=16F84 ;Usaremos el PIC16F84A-04/P
RADIX HEX ;Todo en hexadecimal
w EQU 0 ;Cuando d=0 el destino es w
f EQU 1 ;Cuando d=1 el destino es f
PUERTAA EQU 05 ;Declaracin de las variables
PUERTAB EQU 06
ESTADO EQU 03
AUX1 EQU 0D ;Variables auxiliares para el retardo
AUX2 EQU 0E
ORG 0
goto inicio ;Salto al vector de interrupcin
ORG 5
inicio bsf ESTADO,5 ;Apertura del banco 1
clrw
movwf PUERTAA ;se configuran PUERTAA
movwf PUERTAB ;y PUERTAB como salidas
bcf ESTADO,5 ;Cierre del banco 1
clrf PUERTAA ;Todo a pagado
clrf PUERTAB
ciclo movlw b'10001' ; lleva el valor 1h a W
movwf PUERTAA ; Lleva W al puerto A
call retardo
movlw b'10010' ; lleva el valor 2h a W
movwf PUERTAA ; Lleva W al puerto A
call retardo
movlw b'10100' ; lleva el valor 4h a W
movwf PUERTAA ; Lleva W al puerto A
call retardo
movlw b'11000' ; lleva el valor 8h a W
movwf PUERTAA ; Lleva W al puerto A
call retardo
movlw b'00000' ;lleva el valor 10h a W
movwf PUERTAA ; Lleva W al puerto A
call retardo
movlw b'10000' ;lleva el valor 10h a W
movwf PUERTAA

movlw 0x01 ; lleva el valor 1h a W
movwf PUERTAB ; Lleva W al puerto B
call retardo
movlw 0x02 ; lleva el valor 2h a W
movwf PUERTAB ; Lleva W al puerto B
call retardo
movlw 0x04 ; lleva el valor 4h a W
movwf PUERTAB ; Lleva W al puerto B
call retardo
movlw 0x08 ; lleva el valor 8h a W
movwf PUERTAB ; Lleva W al puerto B
call retardo
movlw 0x10 ; lleva el valor 10h a W
movwf PUERTAB ; Lleva W al puerto B
call retardo
movlw 0x20 ; lleva el valor 20h a W
movwf PUERTAB ; Lleva W al puerto B
call retardo
movlw 0x40 ; lleva el valor 40h a W
movwf PUERTAB ; Lleva W al puerto B
call retardo
movlw 0x80 ; lleva el valor 80h a W
movwf PUERTAB ; Lleva W al puerto B
call retardo
clrf PUERTAB
goto ciclo ;Vuelve a iniciar
retardo ;Rutina de retardo
movlw 0xff ;Carga el valor ff en el registro w
movwf AUX1 ;se lleva este valor a AUX1
movwf AUX2 ;se lleva este valor tambin a AUX2
one decfsz AUX1,f ;Se decrementa AUX1 y se deposita en ella mis
ma
goto one ;si llega a cero decrementa AUX2
decfsz AUX2,f
goto one

return ;Una vez completados los ciclos se reg
resa
END ;Fin del programa