Gast
#1329106
Würde mal bitte einer der angemeldeten User die "lcd-routines.asm" aktualisieren, diese Datei wurde stark überholt (Unstimmigkeiten beseitigt), stark erweitert und entspricht jetzt dem AVR-LCD-Tutoriel. Es sind jetzt folgende Subs implementiert: - lcd_data - lcd_command - lcd_init - lcd_clear - lcd_home - lcd_cursor_on - lcd_cursor_off - lcd_space - lcd_flash_string - lcd_ram_string - lcd_load_user_chars - lcd_number - lcd_number16 - lcd_number_hex - lcd_number_bit - lcd_bcd zum Nachweis der Funktionsfähigkeit ein kleines Testprogramm. <avrasm> .include "m8def.inc" .def temp1 = r16 .def temp2 = r17 .def temp3 = r18 ldi temp1, LOW (RAMEND) ; LOW-Byte der obersten RAM-Adresse out SPL, temp1 ldi temp1, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse out SPH, temp1 rcall lcd_init ; Display initialisieren rcall lcd_clear ; Display löschen rcall lcd_load_user_chars ; User Zeichen in das Display laden rcall lcd_cursor_off ; Cursor aus ; *** erste Zeile *** ldi temp1, 0x00 + 0x80 ; DDRam Adr. + Bit 7 rcall lcd_command ; Adresse ausgeben ; const Text aus Flash mit eingebautem Zeichengenerator ldi ZL, LOW (text * 2) ; Adresse des Strings in den ldi ZH, HIGH(text * 2) ; Z-Pointer laden rcall lcd_flash_string ; Unterprogramm gibt String aus der rcall lcd_space ; Leerzeichen ; Hex Zahl ausgeben ldi temp1, 0xAB rcall lcd_number_hex rcall lcd_space ; Leerzeichen ; Binär Zahle ausgeben ldi temp1, 0b10101010 rcall lcd_number_bit ; *** zweite Zeile *** ldi temp1, 0x40 + 0x80 ; DDRam Adr. + Bit 7 rcall lcd_command ; Adresse ausgeben ; const Text User-Zeichen ldi temp1, 2 ; Ausgabe des User-Char "R" rcall lcd_data ldi temp1, 1 ; Ausgabe des User-Char "V" rcall lcd_data ldi temp1, 0 ; Ausgabe des User-Char "A" rcall lcd_data rcall lcd_space ; Leerzeichen ; 8 Bit Zahl ausgeben ldi temp1, 123 ; 123 ausgeben rcall lcd_number rcall lcd_space ; Leerzeichen ; 16 Bit Zahl ausgeben ldi temp3, High (54321) ; 54321 ausgeben ldi temp2, Low (54321) rcall lcd_number16 rcall lcd_space ; Leerzeichen ; BCD Zahl ausgeben ldi temp1, 0x78 ; 78 ausgeben rcall lcd_bcd loop: rjmp loop text: .db "AVR",0 ; Stringkonstante, durch eine 0 ; abgeschlossen .include "lcd-routines.asm" ; LCD Funktionen </avrasm> Entweder darf ich es nicht als Unangemeldeter User oder ich stelle mich zu prasselig an. Danke Z8