Sunteți pe pagina 1din 2

.

DEF AUX=R16
.DEF AUX1=R17
.DEF TEMP=R18

.CSEG
.ORG 0X00
RJMP CONFIG

CONFIG:
SER AUX
OUT DDRA,AUX ;SALIDA PUERTO A

LDI AUX,0b0000_1111 ;SALIDAS CON 0 ENTRADAS CON 1 .......7-4 IN, 3-0 OUT
OUT DDRC,AUX

LDI AUX,0b1111_1111 ;ACTIVA PULL UPS


OUT PORTC,AUX

NOP

LAZO:
CALL BARRIDO

RJMP LAZO

BARRIDO:
;FILA1
CBI PORTC,0
SBIS PINC,4 ;columna 4
LDI AUX1,0
SBIS PINC,5
LDI AUX1,1
SBIS PINC,6
LDI AUX1,2
SBIS PINC,7
LDI AUX1,3

;FILA2
SBI PORTC,0 ; FILA 1 RETORNA AL VALOR INICIAL 1
CBI PORTC,1
SBIS PINC,4
LDI AUX1,4
SBIS PINC,5
LDI AUX1,5
SBIS PINC,6
LDI AUX1,6
SBIS PINC,7
LDI AUX1,7

;FILA3
SBI PORTC,1 ; FILA 1 RETORNA AL VALOR INICIAL 1
CBI PORTC,2
SBIS PINC,4
LDI AUX1,8
SBIS PINC,5
LDI AUX1,9
SBIS PINC,6
LDI AUX1,10
SBIS PINC,7
LDI AUX1,11

;FILA4
SBI PORTC,2 ; FILA 1 RETORNA AL VALOR INICIAL 1
CBI PORTC,3
SBIS PINC,4
LDI AUX1,12
SBIS PINC,5
LDI AUX1,13
SBIS PINC,6
LDI AUX1,14
SBIS PINC,7
LDI AUX1,15
CALL MOSTRAR
SBI PORTC,3
RET

MOSTRAR:
LDI zl,low(TABLA<<1) ;inicializa Z el << es para direccionar el numero de
intruccion
LDI zh,high(TABLA<<1) ; el lpm es para manejarnos con el numero de la instruccion

ADD zl,AUX1 ; val es el numerto de dato que quiero sacar de la tabla, osea si
quiero el 2 pongo 2
LPM AUX,z
OUT PORTA,AUX
RET

;TABLA DE ANODO COMUN


TABLA:
.DB 0B0111111, 0B0000110, 0B1011011, 0B1001111, 0B1100110, 0B1101101, 0B11111101,
0B00000111, 0B111111111, 0B11100111

S-ar putea să vă placă și