jueves, 29 de octubre de 2015

Piano: assembler

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