Está en la página 1de 3

.include"m16def.

inc"

programa:
ldi r16,high(ramend)
out sph,r16
ldi r16,low(ramend)
out spl,r16

ldi r16,0xff
out ddrc,r16
out ddrd,r16

ldi r16,0x00
out ddra,r16

inicio:
in r16,pina
cpi r16,0x01
breq giro_x

cpi r16,0x02
breq giro_y

cpi r16,0x04
breq giro_ambos

jmp inicio

giro_x:
ldi r16,0x01
out portc,r16
call retardo
ldi r16,0x02
out portc,r16
call retardo
ldi r16,0x04
out portc,r16
call retardo
ldi r16,0x08
out portc,r16

jmp inicio

giro_y:

ldi r16,0x01
out portd,r16
call retardo
ldi r16,0x02
out portd,r16
call retardo
ldi r16,0x04
out portd,r16
call retardo
ldi r16,0x08
out portd,r16

jmp inicio

giro_ambos:

ldi r16,0x01
out portc,r16
out portd,r16
call retardo
ldi r16,0x02
out portc,r16
out portd,r16
call retardo
ldi r16,0x04
out portc,r16
out portd,r16
call retardo
ldi r16,0x08
out portc,r16
out portd,r16

jmp inicio

retardo:

; =============================
; delay loop generator
; 160000 cycles:
; -----------------------------
; delaying 159975 cycles:
ldi R17, $E1
WGLOOP0: ldi R18, $EC
WGLOOP1: dec R18
brne WGLOOP1
dec R17
brne WGLOOP0
; -----------------------------
; delaying 24 cycles:
ldi R17, $08
WGLOOP2: dec R17
brne WGLOOP2
; -----------------------------
; delaying 1 cycle:
nop
; =============================
ret

mi cui: 20061550 brian ccupa aleman

También podría gustarte