- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 5 von 5

Thema: Problem mit der anweisung LCD var

  1. #1
    AVRJIS
    Gast

    Problem mit der anweisung LCD var

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    Sobald Ich in meinem kleinen programm zum LCD testen die anweisung LCD benutze sagt er mir:
    "Error:5 Line x (immer wo End steht) No more Space for Bit[___LCDNO]"

    Was bedeutet das und wie bekomme ich das hin das es futz?

    Hier ist das Programm!

    ' LCD mit zwei Controller von Pollin.de ca.5Euro 27 * 4
    $regfile = "m16def.dat"
    $crystal = 4000000

    Config Lcdmode = Port
    Config Lcdbus = 4 ' 4Bit Modus
    Config Lcd = 40 * 4 ' eigendlich 27 * 4
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , E2 = Portc.3 , Rs = Portc.0

    Dim ___lcde As Byte
    Dim S As String * 10
    S = "Hallo"

    ' obere Displayhälfte
    ___lcde = 0

    Cls

    Lcd "test"
    Lcd S

    ' untere Displayhälfte
    ___lcde = 1

    Lcd "test"
    Lcd S

    End
    MFG
    JIS

  2. #2
    Gast
    OK, es lag wohl daran das ich die Libfile "lcd4e2.lib" nicht benutzt habe!!!
    ' LCD mit zwei Controller von Pollin.de ca.5Euro 27 * 4
    $regfile = "m16def.dat"
    $crystal = 4000000
    $lib "lcd4.lib"

    Config Lcdmode = Port
    Config Lcdbus = 4 ' 4Bit Modus
    Config Lcd = 40 * 4 ' eigendlich 27 * 4
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
    [/b]

    Aber: wie man sieht möchte Ich das Display über den PortC ansteuern, doch er nimmt beim Simulator und auch auf meinem Testboard PortB!!!
    Woran mag das denn liegen?

    MFG
    JIS

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Hallo,

    Wenn Du eine LCDxxx.LIB mit wie in Deinem Fall mit $LIB "LCD4.LIB" verwendest, werden die in der LIB definierten Port bzw Pins verwendet.

    Ansteuerung der LCD über entsprechend definierte LIBs haben den Vorteil, dass weniger Code benötigt wird und man auf Besonderheiten der LCD eingehen kann.
    Dann kommen aber die im Programm oder den Optionen festgelegten LCD - Pins nicht zu tragen, da ja diese fest in der LIB programmiert sind.

    Du musst in der entsprechenden LIB die Zuordnung ändern.
    Sie ist in den Zeilen:
    .EQU LCDDDR=$17 ; change to another address for DDRD ($11)
    .EQU LCDPORT=$18 ; change to another address for PORTD ($12)
    enthalten.
    Ändere die Adresse $17 und $18 entsprechend deinem verwendeten Port.

    Auch die im Port verwendeten Pins müssen mit Deine Hardware übereinstimmen, diese Information ist im Kommentar (;-Zeilen) im oberen Bereich enthalten.

    Viele Grüße
    Josef

  4. #4
    Gast
    Oh ja danke,

    aber woh finde Ich die Adresse für DDRC und PORTC?

    Wenn Ich $lib lcdxxx.lib weglasse kommt wieder die fehlermeldung:
    "Error:5 Line x (immer wo End steht) No more Space for Bit[___LCDNO]"

    Hab Ich etwas vergessen zu definieren wenn ich es ohne $lib machen möchte?

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Die Port-Adressen findest Du in dem entsprechenden Dat File (in Deinem Fall im File M16def.dat) oder im ATMEL Datasheet für den Prozessor im Bereich Register Summary.

    Ich habe keine Erfahrung mit LCDs mit 2 Kontrollern (das dürften alle sein mit mehr als 80 Zeichen), aber ich glaube, Du musst Dich hier an das Beispiel LcdCustom4Bit2E.bas halten und brauchst keine Config LCD... Statements im Code, da ja wie im gestrigen Beitrag erwähnt, die ganzen Zuordnungen hard-codiert im Lib-File gegeben sind.

    Viele Grüße
    Josef

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen