Forum: www.mikrocontroller.net Aktualisierung der "lcd-routines.asm" im ASM AVR-Tut


von Z8 (Gast)


Angehängte Dateien:

Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.