; nur um beim Debuggen zu testen, welche Startadresse das erste Telegram hat ldi ZL, LOW(rx_telegram_1*2) ; load address of telegram #1 ldi ZH, HIGH(rx_telegram_1*2) ; into Z-pointer ; Adresse der Sprungtabelle laden ldi ZL, LOW(rx_table*2) ; load address of statetable ldi ZH, HIGH(rx_table*2) ; into Z-pointer lpm ; get value of flash cell (low byte) mov YL,r0 ; save value adiw ZL,1 ; increment address lpm ; get value of flash cell (high byte) mov YH,r0 ; save value mov ZL, YL ; load new address to Z-pointer mov ZH, YH ; load new address to Z-pointer ;Hier ist leider nicht die Adresse von rx_telegram_1 im Z-Pointer, d.h. nach dem nächsten Befehl lpm ;ist in r0 nicht die erwartete 1 (= erstes Byte vom Telegram Nr.1) - warum??? rx_table: rx_1: .dw rx_telegram_1 rx_2: .dw rx_telegram_2 rx_3: .dw rx_telegram_3 rx_telegram_1: .db 1,2,3 rx_telegram_2: .db 4,5,6 rx_telegram_3: .db 7,8,9