Documentos de Académico
Documentos de Profesional
Documentos de Cultura
def temp=r16
.def auxiliar=r17
.def cont_barrido=r18
.def contador_global=r19
.dseg
Sieteseg:.byte 4
.cseg
.org 0x00
principal:
clr contador_global
ldi temp,0b0000_1111
out ddra,temp
ldi temp,0b1111_1111
out ddrc,temp
ldi temp,0b0000_1111
out ddrd,temp
ldi temp,0b1111_1111
out porta,temp
ldi temp,0b1111_0000
out portd,temp
in temp,MCUCR
andi temp,0b1110_1111
out MCUCR,temp
ldi temp,high(RAMEND)
out sph,temp
ldi temp,low(RAMEND)
out spl,temp
ini:
ldi R16,0b1111_0111
out portA,R16
sbis pina,7
rjmp inicio
rjmp ini
inicio:
call BARRIDO
call Teclado
call retardo
ldi R16,0b1111_1011
out portA,R16
sbis pina,7
rjmp principal
rjmp inicio
BARRIDO:
push cont_barrido
in cont_barrido, SREG
push cont_barrido
push xh
push xl
push auxiliar
push temp
ldi cont_barrido,4
ldi xh,high(Sieteseg)
ldi xl,low(Sieteseg)
ldi auxiliar,0b1111_0111
LAZO3:
ldi temp,0b1111_1111
out portd,temp
ld temp,x+
out portc,temp
out portd,auxiliar
rcall RETARDO
clr temp
out portc,temp
sec
ror auxiliar
dec cont_barrido
brne LAZO3
pop temp
pop auxiliar
pop xl
pop xh
pop cont_barrido
out SREG, cont_barrido
pop cont_barrido
ret
RETARDO:
ldi temp,255
RETARDO01:
nop
dec temp
brne RETARDO01
ret
Teclado:
push r16
in r16, SREG
push R16
ldi R17,255
ldi R16,0b1111_0111
out portA,R16
sbis pina,5
ldi R17,0b0011_1111
ldi R16,0b1111_1110
out portA,R16
sbis pina,6
ldi R17,0b0110_1111
sbis pina,5
ldi R17,0b0111_1111
sbis pina,4
ldi R17,0b0000_0111
ldi R16,0b1111_1101
out portA,R16
sbis pina,7
ldi R17,200
sbis pina,6
ldi R17,0b0111_1101
sbis pina,5
ldi R17,0b0110_1101
sbis pina,4
ldi R17,0b0110_0110
ldi R16,0b1111_1011
out portA,R16
sbis pina,6
ldi R17,0b0100_1111
sbis pina,5
ldi R17,0b0101_1011
sbis pina,4
ldi R17,0b0000_0110
ldi R16,0b1111_1111
out portA, R16
cpi contador_global, 4
breq FinTeclado
call retardo1
rjmp FinTeclado
BorrarUno:
cpi contador_global, 0
breq FinTeclado
mov r18, contador_global
dec r18
call retardo1
ldi Xl, low(Sieteseg)
ldi Xh, high(Sieteseg)
add Xl, r18
clr r16
adc xh, r16
ldi r17,$40
st x, r17
dec contador_global
FinTeclado:
pop r16
out SREG, r16
pop r16
ret
Retardo1:
push r18
push r19
push r20
ldi r18, 3
ldi r19, 138
ldi r20, 85
L1: dec r20
brne L1
dec r19
brne L1
dec r18
brne L1
pop r20
pop r19
pop r18
ret