Matriz de leds 4x4
Enviado por sphandar • 8 de Octubre de 2015 • Trabajo • 4.847 Palabras (20 Páginas) • 224 Visitas
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC> ; se incluye la librería del pic
ORG 0
Principal
bsf STATUS,RP0 ;nos ubicamos en el banco 0
clrf TRISB ;se declara B como salidas
movlw b'00011111'
movwf TRISA ; se declara A como entradas
bcf STATUS,RP0 ;se vuelve al banco 0
clrf PORTB ; se limpian los puertos B
instruccion0 ;se inicia subrutina para A0
btfss PORTA,0 ;se lee si A0 es ?1? o ?0?
goto clean0 ;si es ?0? va a subrutina clean0
goto secuencia0 ;si es ?1? va a subrutina secuencia0
instruccion1 ;se inicia subrutina para A1
btfss PORTA,1 ;se lee si A1 es ?1? o ?0?
goto clean1 ; si es ?0? ir a subrutina clean1
goto secuencia1 ; si es ?1? ir a subrutina secuencia1
instruccion2 ; se inicia subrutina para A2
btfss PORTA,2
goto clean2
goto secuencia2
instruccion3 ; se inicia subrutina para A3
btfss PORTA,3
goto clean3
goto secuencia3
instruccion4 ; se inicia subrutina para A4
btfss PORTA,4
goto clean4
goto secuencia4
clean0 ;subrutina de limpieza0
movlw b'00000000' ;mueve la literal ?0? a w
movwf PORTB ; mueve los datos de w al puerto B
goto instruccion1 ; ir a subrutina de A1
clean1 ; subrutina de limpieza1
movlw b'00000000' ; mueve la literal ?0? a w
movwf PORTB ; mueve los datos de w al puerto B
goto instruccion2 ; ir a subrutina de A2
clean2 ;subrutina de limpieza2
movlw b'00000000'
movwf PORTB
goto instruccion3 ;ir a subrutina de A3
clean3 ;subrutina de limpieza3
movlw b'00000000'
movwf PORTB
goto instruccion4 ;ir a subrutina de A4
clean4 ;subrutina de limpieza 4
movlw b'00000000'
movwf PORTB
goto instruccion0 ; ir a ubrutina de A0
secuencia0 ; secuencia de leds0
movlw b'00011000'
movwf PORTB
call Retardo_200ms
movlw b'00010100'
movwf PORTB
call Retardo_200ms
movlw b'00010010'
movwf PORTB
call Retardo_200ms
movlw b'00010001'
movwf PORTB
call Retardo_200ms
movlw b'00100010'
movwf PORTB
call Retardo_200ms
movlw b'01000100'
movwf PORTB
call Retardo_200ms
movlw b'10001000'
movwf PORTB
call Retardo_200ms
movlw b'10000100'
movwf PORTB
call Retardo_200ms
movlw b'10000010'
movwf PORTB
call Retardo_200ms
movlw b'10000001'
movwf PORTB
call Retardo_200ms
movlw b'01000010'
movwf PORTB
call Retardo_200ms
movlw b'00100100'
movwf PORTB
call Retardo_200ms
movlw b'00011000'
movwf PORTB
call Retardo_100ms
goto instruccion0
secuencia1 ; secuencia de leds 1
call Retardo_200ms ; se llama la subrutina de retardos
movlw b'00010001' ; segunda literal de secuencia 1
movwf PORTB
call Retardo_200ms
movlw b'00010010' ; tercer literal de secuencia 1
movwf PORTB
call Retardo_200ms
movlw b'00010100' ;cuarta literal de secuencia 1
movwf PORTB
call Retardo_200ms
movlw b'00011000' ;quinta literal de secuencia1
movwf PORTB
call Retardo_200ms
movlw b'00101000' ;sexta literal de secuencia1
movwf PORTB
call Retardo_200ms
movlw b'01001000' ;séptima literal de secuencia1
movwf PORTB
call Retardo_200ms
movlw b'10001000' ;octava literal
movwf PORTB
call Retardo_200ms
movlw b'10000100' ; novena literal
movwf PORTB
call Retardo_200ms
movlw b'10000010'
movwf PORTB
call Retardo_200ms
movlw b'10000001'
movwf PORTB
call Retardo_200ms
movlw b'01000001'
movwf PORTB
call Retardo_200ms
movlw b'00100001'
movwf PORTB
call Retardo_200ms
movlw b'00100010'
movwf PORTB
call Retardo_200ms
...