Beschreibung
Der im Folgenden vorgestellte Code ist aus einem größeren Projekt entnommen. Die
Parameter an eine Prozedur werden in die Register RP0
, RP1
und RP2
geschrieben, der Rückgabewert steht nach dem Aufruf im Register RRet
. Diese
Registernamen müssen also vor der Verwendung dieser Prozeduren definiert
werden. Zur Verwendung dieses Codes ist neben der Datei display.asm
die Datei
inttimer16.asm
notwendig. In dieser sind zwei Delay-Prozeduren enthalten, die
den Prozessor während des delays in den Sleep-Modus versetzen, um Strom zu
sparen.
Der Code besteht aus den Prozeduren bzw. Makros:
disp_instruction
und disp_data
: (Makro) Setzt das Display in den Daten-
bzw. Intruktions-Modus.
disp_put_byte
: Schreibt ein Byte auf das Display. Beispiel:
disp_data
ldi RP0, 'A'
rcall disp_put_byte
ldi RP0, 'B'
rcall disp_put_byte
disp_read_byte
: Liest ein Byte vom Display zurück.
disp_reset
: Setzt das Display in den Ausgangszustand zurück. Dabei wird der
Display-Inhalt gelöscht und der Cursor auf der Position des ersten Zeichens
gesetzt.
disp_write_string
: Schreibt einen null-terminierten String aus dem
Programmspeicher auf das Display. Beispiel:
CSEG:
string_hello_world:
.db 'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!', 0
ldi RP0, LOW( 2 * string_hello_world )
ldi RP1, HIGH( 2 * string_hello_world )
rcall disp_write_string