Hello, I'm trying to make code for atmega16 in assembler reading data from the ADC to registers.
Is this code working and what needs to be changed?
PORTA,0 - data
PORTA,1 - clk
.include "m16def.inc"
.device ATmega16
.org 0x00
ldi r23,low(0x045f)
out SPL,r23
ldi r23,high(0x045f)
out SPH,r23
ldi r16,0b00000010
out DDRA,r16
ldi r16,0b00000001
out PORTA,r16
ldi r16,0
c:
sbic PINA,0
rjmp c
cyc:
sbi PORTA,1
nop
cbi PORTA,1
sbic PINA,0
jmp tt
jmp tt0
tt:
sbr r29,1
jmp za
tt0:
cbr r29,1
jmp za
za:
cpi r16,7
breq tt1
cpi r16,15
breq tt2
cpi r16,23
breq loop
lsl r29
inc r16
jmp cyc
tt1:
mov r27,r29
inc r16
jmp cyc
tt2:
mov r28,r29
inc r16
jmp cyc
loop:
rjmp loop
Is this code working and what needs to be changed?
PORTA,0 - data
PORTA,1 - clk
.include "m16def.inc"
.device ATmega16
.org 0x00
ldi r23,low(0x045f)
out SPL,r23
ldi r23,high(0x045f)
out SPH,r23
ldi r16,0b00000010
out DDRA,r16
ldi r16,0b00000001
out PORTA,r16
ldi r16,0
c:
sbic PINA,0
rjmp c
cyc:
sbi PORTA,1
nop
cbi PORTA,1
sbic PINA,0
jmp tt
jmp tt0
tt:
sbr r29,1
jmp za
tt0:
cbr r29,1
jmp za
za:
cpi r16,7
breq tt1
cpi r16,15
breq tt2
cpi r16,23
breq loop
lsl r29
inc r16
jmp cyc
tt1:
mov r27,r29
inc r16
jmp cyc
tt2:
mov r28,r29
inc r16
jmp cyc
loop:
rjmp loop