#1 4. August 2006 Hallo, ich habe ein kleines Deklarationsproblem. Ich möchte die Systemzeit, also "unsigned char" an ein LCD Display ausgeben. Die Funktion dafür lautet: void stringout (char *c) stringout("dieser text wird richtig ausgegeben" ---- Jetzt habe ich versucht, den tag von "unsigned char" in "char*" zu konvertieren. Die variable "tagi" kann nur auf dem Normalbildschirm als "08" ausgegeben werden. Auf dem LCD Display wird ein falsches Zeichen ausgegeben. char *tagi = "00"; tagi = (char*) tag; stringout(tagi); Ich wäre euch sehr Dankbar, wenn ihr mir helfen könntet! DANKE! TanGoo ------ Hier noch der Quelltext zur Übersicht. ---- // chrout() // zum Senden von Daten mssen RS=1 und RW=0 sein. // Die Daten werden in zwei Halbbytes zerlegt. -E=0 / E=1 void chrout (char c) { int hb=c>>4,lb=c&0x0F; // DatenByte zerlegt // High HalbByte senden i2c_transmit(i2c_lcd,0x50+hb); // RS -RW E h h h h i2c_transmit(i2c_lcd,0x40+hb); // RS -RW -E h h h h // Low HalbByte senden i2c_transmit(i2c_lcd,0x50+lb); // RS -RW E l l l l i2c_transmit(i2c_lcd,0x40+lb); // RS -RW -E l l l l i2c_release(); } // stringout() // Sendet einen nullterminierten String zur LCD-Anzeige. // Die Bytes des Strings werden on Halbbytes zerlegt und // gesendet. // Die Frequenz des I2C-Bus schein so gering zu sein, // dass die bertragung eines Zeichens mehr als 120s // bentigt. Damit wird die Abfrage des Busy-Flags // berflssig. -E=0 / E=1 void stringout (char *c) { int n=0; do{ chrout(c[n]); } while (c[++n]!=0); } // ZEIT: unsigned int jahr; unsigned char monat, tag, tagnr; unsigned char stunde, minute, sekunde; char *tagi = "00"; char *wotag[]= {"So","Mo","Di","Mi","Do","Fr","Sa","So"}; // Zeitdaten sind als dezimale Zahlen // gespeichert void holedatum (void) { inregs.h.ah = 0x2A; // SoftINT 21h, Funktion 2Ah int86(0x21,&inregs,&outregs); jahr =outregs.x.cx; // Jahr 4 Stellen (16Bit) monat =outregs.h.dh; // Monat 1-12(8Bit) tag =outregs.h.dl; // Tag 1-31 tagnr =outregs.h.al; // Wochentag, 0-Sonntag //string tach=outregs.h.dl; tagi = (char*) tag; //chrout(tagnr); stringout(tagi); //stringout("08:33:32sdfsdfsdf" ; printf("\n%0.2d",tagi); } void holezeit(void) { inregs.h.ah = 0x2C; // SoftINT 21h, Funktion 2Ch int86(0x21,&inregs,&outregs); stunde =outregs.h.ch; // Stunde 0-23 minute =outregs.h.cl; // Minute 0-59 sekunde =outregs.h.dh; // Sekunde 0-59 } // ENDE ZEIT + Multi-Zitat Zitieren
#2 5. August 2006 char * tagi = &tag; Sollte so gehen, weil du ja dem Zeiger tagi die Adresse von tag zuweist. Mfg Hamml + Multi-Zitat Zitieren
#3 6. August 2006 Danke für deine Antwort! ich hab das problem schon so gelöst: char st[20]; itoa (stunde, st, 10); mfg tangoo + Multi-Zitat Zitieren