mikrocontroller.net

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


Autor: Z8 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.