LCD_CHAR_OUT Funktion

Gast #2709552
Hallo Leute!

Ich verzweifel hier grad leicht an einer Progammieraufgabe.
Wir haben einen ADuC 832 und ein HD44780 Display, welches durch Adressen 
im Programmspeicher angesprochen werden kann.

Nun soll ich eine Funktion schreiben, die einen Charakter auf dem 
Display ausgibt. Leider hab ich überhaupt keinen Plan wie ich das 
realisieren soll. An der benötigten Delay-Funktion hab ich auch schon 
viele Nerven verloren.

Hier ist die Vorlage:

//---------------------------------------------------------------------- 
---------
//  Function:   write one char to lcd
//  Used Func:  Delay_50us
//  Parameter:  char
//  Return:     none
//---------------------------------------------------------------------- 
---------
void LCD_CHAR_OUT(uint8_t ucTemp)
{

}


#include <intrins.h>  // Fuer NOP-Befehl
void Delay_50us(void)
{
  uint8_t ucCount = 0;  // Zaehlvariable
  for(ucCount = 70; ucCount > 0; ucCount--)  // 50us / 712ns = 70
  {
  _nop_();                  // Warte 1 Maschinenzyklus
  }


Ich wär euch sehr dankbar für eure Hilfe :)

Liebe Grüße
Gast
Bin jetzt etwas weiter....

void LCD_CHAR_OUT(uint8_t ucTemp)
{
  pLCD_Data = ucTemp;
}

pLCD_Cont nd pLCD_Data sind beides Zeiger auf den Adressraum für dsa 
Display.
Bei der Initialisierung arbeiten wir ja mit pLCD_Cont, bei dem Schreiben 
von Anzeigedaten mit pLCD_Data. Stimmt diese Zuweisung?
Gast
Hmm, da meckert Keil.

LCD.c(96): error C195: '*' illegal indirection

Das Display nimmt bei der Initialisierung auch diese Befehle entgegen:
        pLCD_Cont = 0x1;  // Display resetten
  Delay_4ms();
  pLCD_Cont = 0x0C;  // Display ein, Cursor aus, kein Blinken
  Delay_50us();

Hier auch die Deklaration der Zeiger:

// Zeiger anlegen
  uint8_t xdata  pLCD_Cont   at AdrLCD_CONT;  // Zeiger fuer 
"Steuerdaten schreiben"
  uint8_t xdata  pLCD_Data   at AdrLCD_DATA;  // Zeiger fuer 
"Anzeigedaten schreiben"
Doenercola schrieb:

> Hier auch die Deklaration der Zeiger:

Das sind aber ziemlich offensichtlich keine Zeiger. Das sind Variablen, 
die offenbar an eine bestimmte Speicheradresse gemappt wurden. D.h. für 
dein Programm verhalten sie sich wie ganz normale Variablen. Du 
schreibst einen Wert rein und durch das Mapping wird der Wert an die 
Hardware weitergeleitet.

Du solltest dich in erster Linie an dem orientieren, was im Quellcode 
steht und nicht so sehr an dem in den Kommentaren. Denn hier wurden im 
Kommentar die falschen Begriffe benutzt.
Gast
Die Kommentare sind zwar von mir, aber die Informationen hab ich aus den 
Texten zu den Laborübungen - also scheinen dort auch die falschen 
Begriffe verwendet worden zu sein. Ich sprech den Betreuer nächste Woche 
mal darauf an. :)

Könnte die Ausgabefunktion so ihren Dienst tun?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.