.include"m8def.inc" .def temp = r16 .def hreg1 = r17 .def data = r18 .def count = r19 ldi hreg1, 32 ;--------------------------------------------------- ;===> Zeichen empfangen (Zeichen in r16) <=== ;--------------------------------------------------- sub temp, hreg1 ;32 vom Zeichen subtrahieren weil Tabelle ;bei 0 und nicht bei 32 beginnt. ldi zl, LOW (ascii_table*2) ldi zh, HIGH(ascii_table*2) ;Z-Pointer auf Tabelle setzen. ldi hreg1, 6 mul temp, hreg1 ;Um 32 verminderter ASCII-Wert mit 6 Multiplizieren. add zl, r0 adc zh, r1 ;Ergebnis aus Multiplikation zum Z-Pointer Addieren ;damit er auf das richtig Bayte zeigt. ldi count, 6 print_to_lcd: lpm data, z+ ;==> Daten an das LCD senden (Daten in "data" Register) <== dec count brne print_to_lcd ;6 mal Senden und Z-Pointer um 1 erhöhen. loop: rjmp loop ;Endlosschleife ascii_table: ;Font = 6x8 .db 0x00,0x00,0x00,0x00,0x00,0x00 ;Space .db 0x7E,0x11,0x11,0x11,0x7E,0x00 ;A .db 0x7F,0x49,0x49,0x49,0x36,0x00 ;B .db 0x3E,0x41,0x41,0x41,0x22,0x00 ;C