mikrocontroller.net

Forum: PC-Programmierung Verständnisproblem mit Sourcecode


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe mir einen Borland Builder Code für die Ansteuerung eines
Displays T6963 via LPT heruntergeladen.
Ich verstehe diesen Ausdruck nicht. "DLPortIO1->Port[BASE + 0x402] =
Tmp;" (BASE = 0x378). Warum addiert er 0x402 zu der BASE Adresse?

void __fastcall TForm1::WaitDisplayReady(void)
// lukee näytön status byten ja varmistaa,
// että näyttö on valmiina ennen kirjoitusta

// ei sisällä vielä mitään tarkistusta sen varalta,
// että status byten luku ei onnistu, joten
// ohjelma on melko helppo saada jumiin

// Tässä kun on vähän aikaa tätä käytetty, niin
// eipä tämä olekaan mennyt jumiin kuin silloin
// jos koneessa ei ole LCD näyttöä ollenkaan kiinni.
// Jokin tarkistus pitäisi kuitenkin tehdä.

{
  int Tmp;

       Tmp = DLPortIO1->Port[BASE + 0x402];
       Tmp = Tmp & 0x1F;
       Tmp = Tmp | 0x20;
       DLPortIO1->Port[BASE + 0x402] = Tmp;

       do{

             DLPortIO1->Port[BASE + 2] = 0x20 + 4 + 2;     //In, CD=1,
CS=0, Wr=1
             DLPortIO1->Port[BASE + 2] = 0x20 + 4 + 2 + 8; //In, CD=1,
CS=0, Wr=1, Rd=0
             Tmp = DLPortIO1->Port[BASE];
             DLPortIO1->Port[BASE + 2] = 0x20 + 4 + 2;     //In, CD=1,
CS=0, Wr=1

       }while ((Tmp & 3) != 3 );
       DLPortIO1->Port[BASE + 2] = 0;
}

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das steht doch da:

  "// lukee näytön status byten ja varmistaa,
  // että näyttö on valmiina ennen kirjoitusta

  // ei sisällä vielä mitään tarkistusta sen varalta,
  // että status byten luku ei onnistu, joten
  // ohjelma on melko helppo saada jumiin

  // Tässä kun on vähän aikaa tätä käytetty, niin
  // eipä tämä olekaan mennyt jumiin kuin silloin
  // jos koneessa ei ole LCD näyttöä ollenkaan kiinni.
  // Jokin tarkistus pitäisi kuitenkin tehdä."


Spaß beiseite.
Das könnte mit EPP/ECP-Betriebsarten zu tun haben; hier gabs vor
einigen Tagen einen Thread, in dem jemand eine ausführliche
englischsprachige Dokumentation postete:

http://www.mikrocontroller.net/forum/read-8-150864...
- ja, ich hab' recht:

(Zitat aus obigem Link)

Base + 401h Configuration Register B (Configuration Mode) Read/Write
Base + 402h Extended Control Register (Used by all modes) Read/Write

Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Rufus.

Trotzdem verstehe ich nicht ganz warum das ECR Register dazu verwendet
wird. Ok da steht "Used by all modes". Was bedeutet dies?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine Ahnung. Da wirst Du Dir schon die Dokumentation der erweiterten
Betriebsarten (EPP/ECP) der Parallelschnittstelle durchlesen müssen.

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.