AVR Assembler-Code für HD44780-Displays

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

Download

avr_hd44780.zip

LinkedIn logo mail logo