Gast
#38511
Hallo Zusammen, ich muß zur Ansteuerung eines intelligenten LED Displays einige Bytes in einer Tabelle ablegen. Wenn ich aber in einer Tabelle mehr als 255 Bytes ablege, so zeigt der Zeiger nach dem 255 Byte auf irgendeine andere Stelle. Meine Frage ist nun, ob die Größe einer Tabelle beschränkt ist, oder ob ich einen Fehler im Programmcode habe. Zur kurzen Erläuterung : Ich setze den Zeiger an ein bestimmte Stelle (Buffer) und dann werden 5 Bytes gelesen und ausgegeben. Write: ldi Reihe,$00 ldi ZL,LOW(ASCII_Tab1*2) ldi ZH,HIGH(ASCII_Tab1*2) mov Temp,Buffer add ZL,Temp clr Temp adc ZH,Temp Write_Loop: lpm mov SPI_Byte,r0 rcall Putchar adiw ZL,1 inc Reihe mov Temp,Reihe cpi Reihe,$05 brne Write_Loop ret die Tabelle sieht ungefähr so aus : .cseg ASCII_Tab1: .db $00,$00,$00,$00,$00,$00 ; ; ! .db $04,$24,$44,$60,$84,$00 ; ; " .db $0A,$2A,$40,$60,$80,$00 ; ; # .db $0A,$3F,$4A,$7F,$8A,$00 ; ; $ .db $0F,$34,$4E,$65,$9E,$00 ; ; % .db $19,$3A,$44,$6B,$93,$00 ; ; & .db $08,$34,$4D,$72,$8D,$00 ; ; ' .db $04,$24,$40,$60,$80,$00 ; usw.