Atmel LCD Tutorial Port wechseln

OP #1388138
Lesenswert?

Hallo,
ich möchte mit dieser Anleitung arbeiten:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD#Anwendung

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
Moderator (Firma: Titel) Persönliche Seite #1388442
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:
1
;; DB4-DB7:       PD4-PD7                      ;;
2
;; RS:            PD2                          ;;
3
;; E:             PD3                          ;;
4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5
 
6
.equ LCD_PORT = PORTD
7
.equ LCD_DDR  = DDRD
8
.equ PIN_E    = 3  ; ***
9
.equ PIN_RS   = 2  ; ***
10
 
11
 ;sendet ein Datenbyte an das LCD
12
lcd_data:
13
           mov temp2, temp1             ; "Sicherungskopie" für
14
                                        ; die Übertragung des 2.Nibbles
15
                                        ; *** Vertauschen entfällt hier
16
           andi temp1, 0b11110000       ; *** unteres Nibble auf Null setzen
17
           sbr temp1, 1<<PIN_RS         ; *** entspricht 0b00000100
18
           out LCD_PORT, temp1          ; ausgeben
19
           rcall lcd_enable             ; Enable-Routine aufrufen
20
                                        ; 2. Nibble, kein swap da es schon
21
                                        ; an der richtigen stelle ist
22
           swap temp2                   ; *** Vertauschen
23
           andi temp2, 0b11110000       ; *** unteres Nibble auf Null setzen 
24
           sbr temp2, 1<<PIN_RS         ; *** entspricht 0b00000100 
25
           out LCD_PORT, temp2          ; ausgeben
26
           rcall lcd_enable             ; Enable-Routine aufrufen
27
           rcall delay50us              ; Delay-Routine aufrufen
28
           ret                          ; zurück zum Hauptprogramm

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren