;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