Nur mal so als Vorschlag: Da ich bei mir eine Proportionalschrift haben wollte hab ich es bei mir mit Tabellen gelöst:
Code:
TABLE:
;hier werden die Zeiger zur jeweils ersten Adresse mit Daten generiert
.dw FONT00_CHAR00 ;Zeichen "0"
.dw FONT00_CHAR01 ;Zeichen "1" usw.
.dw FONT00_CHAR02
.dw FONT00_CHAR03
.
.
.
;ab hier stehen die Bitmuster, das erste Byte gibt die Breite des Zeichens an.
FONT00_CHAR00: ;0
.db 0x04, 0xFE, 0x82, 0x82, 0xFE, 0x00
FONT00_CHAR01: ;1
.db 0x04, 0x0, 0x0, 0xFE, 0x0, 0x00
.
.
.
FONT00_CHAR11: ;H
.db 0x05, 0xFE, 0x10, 0x10, 0x10, 0xFE
FONT00_CHAR12: ;I
.db 0x03, 0x82, 0xFE, 0x82
.
.
FONT00_CHAR16: ;M
.db 0x07, 0xFE, 0x4, 0x8, 0x10, 0x8, 0x4, 0xFE
Die Zahlen hab ich allerdings einheitlich breit gemacht, um die Ausgabe sich verändernder Zahlenwerte zu vereinfachen. Und meine Codierung ist nicht mehr ganz so ASCII-konform, ich hab die Ziffern 0...9 auch gleich als Ziffern 0...9 genommen, das spart einiges umrechnen
Der Zugriff geht dann so, das ich mir für das Zeichen 0x0A z.B. den Zeiger auf Table: + 2 * 0x0A setze, mir von dort den Zeiger auf den Beginn der Daten für dieses Zeichen hole, dann die Breite in Bytes nehme und entsprechend oft die nächsten Bytes hole und zum LCD schicke.
greetz Rajko
Lesezeichen