EL microprocesador a usarce es el ATEMEGA164P
Este es el codigo del programa
.include "m164pdef.inc"
.def tempo=r16
.def igualdades=r17
.org 0x0
rjmp inicio
.org 0x20
rjmp igualdad
inicio:
ldi tempo,0b000_0001
out DDRB,tempo // configuracion del puerto PB0
ldi tempo,0b0000_0000
out PORTB,tempo // salida a cero
clr r16
out ddra,r16
ser r16
out porta,r16
ldi tempo,high(ramend)
out sph,tempo
ldi tempo,low(ramend)
out spl,tempo
// configuro timmer
ldi tempo,0b0000_0010 ; ctc y desconectado OCRA ojo
out TCCR0A,tempo
ldi tempo,0b0000_0010 ; activo bandera del comparador cero
sts TIMSK0,tempo
ldi igualdades,5
ldi tempo,0b0000_0011 ; prescalador 64
out TCCR0B,tempo
sei
lazo:
rjmp lazo
igualdad:
push r16
in r16,sreg
push r16
sbic pina,0
rjmp re
ldi tempo,14 // cargo valor para do
out OCR0A,tempo
dec igualdades
brne re
in tempo,PINB
com tempo
ori tempo,0b1111_1110
out PORTB,tempo
ldi igualdades,2
re:
sbic pina,1
rjmp mi
ldi tempo,8 // cargo valor
out OCR0A,tempo
dec igualdades
brne salir
in tempo,PINB
com tempo
ori tempo,0b1111_1110
out PORTB,tempo
ldi igualdades,3
mi:
sbic pina,2
rjmp fa
ldi tempo,11 // cargo valor
out OCR0A,tempo
dec igualdades
brne salir
in tempo,PINB
com tempo
ori tempo,0b1111_1110
out PORTB,tempo
ldi igualdades,2
fa:
sbic pina,3
rjmp sol
ldi tempo,10 // cargo valor
out OCR0A,tempo
dec igualdades
brne salir
in tempo,PINB
com tempo
ori tempo,0b1111_1110
out PORTB,tempo
ldi igualdades,2
sol:
sbic pina,4
rjmp la
ldi tempo,9 // cargo valor
out OCR0A,tempo
dec igualdades
brne salir
in tempo,PINB
com tempo
ori tempo,0b1111_1110
out PORTB,tempo
ldi igualdades,2
la:
sbic pina,5
rjmp si
ldi tempo,17 // cargo valor
out OCR0A,tempo
dec igualdades
brne salir
in tempo,PINB
com tempo
ori tempo,0b1111_1110
out PORTB,tempo
ldi igualdades,1
si:
sbic pina,6
rjmp salir
ldi tempo,15 // cargo valor
out OCR0A,tempo
dec igualdades
brne salir
in tempo,PINB
com tempo
ori tempo,0b1111_1110
out PORTB,tempo
ldi igualdades,1
salir:
pop r16
out sreg,r16
pop r16
reti
rjmp igualdad
No hay comentarios.:
Publicar un comentario