www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD / KS0070B Problem


Autor: Daniel Steffen (derdaniel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

ich würde gerne das Reichelt Display LCD 162C LED (laut Datenblatt ist 
der Controller ein KS0070B) an einem ATMEAG48 mit folgendem Quelltext 
zum laufen bekommen.
.include "m48def.inc"
 
.equ XTAL  = 8000000

;   Belegung PORTD
;   V R R E D D D D
;   e S W   7 6 5 4
;
;PD 7 6 5 4 3 2 1 0

ldi r16, LOW(RAMEND)
out SPL, r16
ldi r16, HIGH(RAMEND)
out SPH, r16

LDI r16, 0xFF
OUT DDRD, r16  ;PORTD ausgang

LDI r16, 10   ;50ms warten
  poweron:                      
    RCALL waitms5
    DEC r16
    BRNE poweron


LDI r16, 0b00000010  ;4bit Modus
OUT PORTD, r16
RCALL tgen
RCALL waitus50


LDI r16, 0b00000010  ;4bit Modus + 2-lines + 5x7 dots
OUT PORTD, r16
RCALL tgen
LDI r16, 0b00001000
OUT PORTD, r16
RCALL tgen
RCALL waitus50


LDI r16, 0b00000000  ;display on + cursor on + blink on
OUT PORTD, r16
RCALL tgen
LDI r16, 0b00001111
OUT PORTD, r16
RCALL tgen
RCALL waitus50


LDI r16, 0b00000000  ;clear dosplay
OUT PORTD, r16
RCALL tgen
LDI r16, 0b00000001
OUT PORTD, r16
RCALL tgen
RCALL waitms5


LDI r16, 0b00000000  ;entry mode increment + entire shift off
OUT PORTD, r16
RCALL tgen
LDI r16, 0b00000110
OUT PORTD, r16
RCALL tgen
RCALL waitms5



loop: rjmp loop



waitus50:
    LDI  r16, ( XTAL * 50 / 3 ) / 1000000
  WGLP3:
    DEC  r16
    BRNE WGLP3
    RET


waitms5:
    LDI r16, (XTAL * 5 / 607) / 1000
  WGLOOP0:
    LDI  r17, $C9
  WGLOOP1:
    DEC  r17
    BRNE WGLOOP1
    DEC r16
    BRNE WGLOOP0
    RET


tgen:
    SBI PORTD, 4
    NOP
    NOP
    NOP
    NOP
    CBI PORTD, 4
    RET

Das einzige was das Display jedoch macht, ist mir in der ersten Zeile 
schwarze Kästchen anzeigen, mehr nicht.
Der Anschluss des Display ist wie im Quelltext unter Belegung PORTD.

Was ist im Quelltext falsch bzw. warum geht das Display nicht?

Autor: Sascha Weber (sascha_w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

deine PWR-ON-Pause funktioniert schon mal nicht, da du r16 doppelt 
verwendest!
Nach dem RET aus waitms5 ist r16=0, in der Hauptschleife wird r16=255 
und damit hast du eine Endlosschleife.

Sascha

Autor: Daniel Steffen (derdaniel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach mist, den fehler hatte ich schonma irgendwo bemerkt und beseitigt.
Und 10 minuten später mach ich den gleichen scheiß wieder...
Füs irgend etwas gibts den Stack halt doch...

Danke, ist gelöst!

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.