Hallo,
etwas aehnliches hatte ich mal gemacht, um den ADC Rohwert per UART
auszugeben. Der ADC-Wert wird erwartet in Registern binH und binL.
Gerhard
;--------------------------------------------------
sendDecimal:
ldi decH, high(10000)
ldi decL, low(10000)
rcall bin2digit
ldi decH, high(1000)
ldi decL, low(1000)
rcall bin2digit
ldi decH, high(100)
ldi decL, low(100)
rcall bin2digit
ldi decH, high(10)
ldi decL, low(10)
rcall bin2digit
; Einser-Stellen bleiben übrig
mov digit, binL
rcall sendDigit
ret
;--------------------------------------------------
bin2digit:
clr digit
label1: ; vergleichen mit 10er-Potenz
cp binH, decH
brlo label3
brne label2
cp binL, decL
brlo label3
label2: ; 10-er Potenz abziehen
sub binL, decL
sbc binH, decH
inc digit
rjmp label1 ; neu testen
label3:
rcall sendDigit
ret
;--------------------------------------------------
sendDigit:
subi digit, -48 ; addi gibt es nicht
mov send, digit
rcall transmit
ret