Gast
#96319
Hallo
habe wieder mal eine Frage. Das Menü für meinen Sternprojekt ist fertig
und funktioniert eigentlich ganz gut.
menu_main_table:
.db "Time ","Anzeigen ","§§§§§§§§§§","§§§§§§§§§§"
.db "Teleposi ","Anzeigen ","§§§§§§§§§§","§§§§§§§§§§"
.db "Datenbank ","Blättern ","akt. Posi ","§§§§§§§§§§"
.db "§§§§§§§§§§","suchen ","akt. Posi ","§§§§§§§§§§"
.db "Setup ",laber laber laber
Jeder Menüpunkt ist 10 Zeichen lang, so das die Berechnung des
Z-Pinters relativ leicht ist; adiw ZH:ZL,10 (in einer Schleife).
Menüpunkte mit "§" werden nicht angezeigt und im 16x2 Display steht
oben der Haupt-Menüpunkt = linke Spalte und darunter der jeweilige
Untermenüpunkt.
Jetzt habe ich aber auch noch mehrere Standardtexte von
unterschiedlicher Länge. Diese sollten ebenfalls in eine Tabelle
untergebracht werden, und über eine Routine auf Dipsplay gezaubert
werden. Ich stelle mir das so vor.
text_table:
.db "Sternzeit",0 ;(0)
.db "Rektaszension",0 ;(10)
.db "Sternzeit",0 ;(24)
.db laber,laber,laber
Die Zahl in der Klammer ist das Offset vom Anfang der "text_table".
Dieses wollte ich im SRAM speichern High/Low Register und dann in der
Routine verwenden.
Das Offset wird aber in den Bereich von über 255 kommen. Wie addiere
ich jetzt richtig denn add / adc kümmert sich ja nur um ZL.
Muß ich da eine 16-Bit-Additionsroutine verwenden oder gibt es einen
Trick? Es kann ja auch sein das ZL schon den Wert 250 hat, so das ich
mit dem 2. Eintrag in's Schleudern komme. Ich möchte nämlich nicht mit
dem Zeiger ins ungewisse stürzen, deshalb die Frage.
Und noch eine hinterher:
Ist es besser die Texte in eine Tabelle zu nageln oder in der Routine
separat anzugeben.
zB. ldi R16,'S'
rcall lcd_print
ldi R16, 'e'
rcall lcd_print usw.
Welches verbraucht weniger Programmspeicher?
Gruß
Stevko