Está en la página 1de 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

También podría gustarte