Gast
#427772
jo hoi,.. hoffe es ist noch jemand wach ;)
also ein byte zu empfangen und je nach wertigkeit eine funktion
ausführen funzt,.. jetzt wollte ich mehrere bytes empfangen und diese
verarbeiten,...
ok,.. mein ansatz war:
erstma speicherzuweisung
.dseg
rxd_buffer:.BYTE 4
.cseg
sooo der interrupt kommt
int_RXD: ldi ZL,LOW(rxd_buffer)
ldi ZH,HIGH(rxd_buffer)
(axo mal nebenbei,... wieso wird im tutorial das speicherlabel mit 2
multipliziert??? á la shiftleft ???)
in get, UDR
tst get ;wenn NULL dann raus , halt ohne terminierungszeiche
breq wech
st Z+,get
rjmp int_RXD
wech:
;den pointer muss ich ja wieder an den anfang setzen
ldi ZL,low(rxd_buffer)
ldi ZH,high(rxd_buffer)
;dann will ich mal gucken wat so daaa is
call check
feddich
ret
check:
ld temp,Z+
tst temp
breq check_end
;ich will es hier an dieser stelle mal wieder zurück ans terminal
;ausgeben
mov send,temp
call sendbyte
rjmp check
check_end: ret
soooo,.. ich arbeite das erste mal mit den Z pointern (r31:r30)
wo is mein fehler, da es ja net funzt,...