mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmel LCD Tutorial Port wechseln


Autor: Wolfgang Bertram (apfelwolle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich möchte mit dieser Anleitung arbeiten:
http://www.mikrocontroller.net/articles/AVR-Tutori...

Doch bei meinem Board von myavr sind die Ports anders belegt

Die Datenbits 4-7 gehen auf Port D4-D7 RS=enable ist D2 und E=Enable ist 
D3

wie muss ich den Code für die Initialisierung anpassen damit es passt?

Vielen Dank für die Antworten

Wolfgang

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wie muss ich den Code für die Initialisierung anpassen damit es passt?
Das Anpassen ist erst der zweite Schritt :-o
Der erste Schritt ist das Verstehen, was da gemacht wird: beim 4-Bit 
Interface wird erst das High-Nibble (obere 4 Bits), dann das Low-Nibble 
(untere 4 Bits) des zu übertragenden Bytes an das Display ausgegeben. 
Das entsprechende Byte wird so zurechtgerückt, dass es auf die Pins 
passt. Weil du eine andere Pinanordnung hast, mußt du anders rücken. Und 
das vor jeder Ausgabe auf den Displayport. Das ist alles.

Exemplarisch hier der Anfang der Routinen, mit ein wenig Vergleichen und 
Nachdenken dürften die anderen Routinen dann auch kein Problem mehr 
sein. Änderungen sind mit *** gekennzeichnet:
;; DB4-DB7:       PD4-PD7                      ;;
;; RS:            PD2                          ;;
;; E:             PD3                          ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
.equ LCD_PORT = PORTD
.equ LCD_DDR  = DDRD
.equ PIN_E    = 3  ; ***
.equ PIN_RS   = 2  ; ***
 
 ;sendet ein Datenbyte an das LCD
lcd_data:
           mov temp2, temp1             ; "Sicherungskopie" für
                                        ; die Übertragung des 2.Nibbles
                                        ; *** Vertauschen entfällt hier
           andi temp1, 0b11110000       ; *** unteres Nibble auf Null setzen
           sbr temp1, 1<<PIN_RS         ; *** entspricht 0b00000100
           out LCD_PORT, temp1          ; ausgeben
           rcall lcd_enable             ; Enable-Routine aufrufen
                                        ; 2. Nibble, kein swap da es schon
                                        ; an der richtigen stelle ist
           swap temp2                   ; *** Vertauschen
           andi temp2, 0b11110000       ; *** unteres Nibble auf Null setzen 
           sbr temp2, 1<<PIN_RS         ; *** entspricht 0b00000100 
           out LCD_PORT, temp2          ; ausgeben
           rcall lcd_enable             ; Enable-Routine aufrufen
           rcall delay50us              ; Delay-Routine aufrufen
           ret                          ; zurück zum Hauptprogramm

Autor: Wolfgang Bertram (apfelwolle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antwort. Verstanden habe ich es! Doch arbeiten alle 
mit der gleichen Belegung außer myavr. Also habe ich mein Board umgebaut 
und nun geht alles wie gewünscht.

Ich finde es gut das hier Antworten zum denken gegeben werden und nicht 
zum einfachen nachmachen.

Weiter so!

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.