You are on page 1of 5

;PROGRAMA LUCES DEL AUTO FANTSTICO

;Realizamos en un editor el siguiente listado de programa que llamaremos


;LUCES AUTO FANTASTICO.ASM
; -------------------------------------------------------
; --------------------------------------------------------
LIST P=16F628A; Modelo de PIC
; list p=16f628A ; list directive to define processor
#include <p16F628A.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF &
_WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT ;configuramos (oscilador, tipo e
tc.)
RADIX HEX
reg1 EQU 0X20
reg2 EQU 0X21
reg3 EQU 0X22
org 0x0000 ;org coloca el programa en el origen, 0x
0000 para el 16F628,
;Por aqu es por donde empieza el programa
a ejecutarse
movlw 0x07
movwf CMCON ;Deshabilito los comparadores
bsf STATUS, RP0 ;Selecciono el Bank 1 para poder acceder
a TRISA
movlw b'00000000' ;Configuro todo el PortA para que sea de
salida
movwf TRISA
bcf STATUS, RP0 ;Selecciono de nuevo el Bank 0
bsf STATUS, RP0 ;Selecciono el Bank 1 para poder acceder
a TRISB
movlw b'00000000' ;Configuro todo el PortB para que sea de
salida
movwf TRISB
bcf STATUS, RP0 ;Selecciono de nuevo el Bank 0
Loop
;DESPLAZAMIENTO IZQUIERDA DERECHA DEL PUERTO A Y PUERTO B
movlw b'00000001' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000010' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000100' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00001000' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00010000' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00100000' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'01000000' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'10000000' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000001' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000010' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000100' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00001000' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00010000' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00100000' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'01000000' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'10000000' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
;DESPLAZAMIENTO DERECHA IZQUIERDA DEL PUERTO A Y PUERTO B
movlw b'10000000' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'01000000' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00100000' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00010000' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00001000' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000100' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000010' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000001' ;Pongo a '1' el primer bit del PortA
movwf PORTA
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortA
movwf PORTA
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'10000000' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'01000000' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00100000' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00010000' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00001000' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000100' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000010' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
movlw b'00000001' ;Pongo a '1' el primer bit del PortB
movwf PORTB
call Delay ;Llamo a la rutina que espera ...
movlw b'00000000' ;Pongo a '0' el primer bit del PortB
movwf PORTB
call Delay ;Llamo de nuevo a la rutina que espera .
..
goto Loop ;Salto al comienzo y as hasta el infinito
Delay
movlw 0x30 ;Espero 250 ms (Para un reloj de 4 MHz)
movwf reg1
tres movlw 0x40
movwf reg2
dos movlw 0x10
movwf reg3
uno decfsz reg3,f
goto uno
decfsz reg2,f
goto dos
decfsz reg1,f
goto tres
return
end

You might also like