LCD_CHAR_OUT Funktion

Gast #2709552
Lesenswert?

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 #2709580
Lesenswert?

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 #2709646
Lesenswert?

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"
#2709647
Lesenswert?

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 #2709663
Lesenswert?

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

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