C Variable von RTC.c in Main.c übergeben ?!

Janiiix3

Aktives Mitglied
28. Sep. 2013
1.333
10
38
Hannover
Sprachen
  1. ANSI C
  2. C#
Hallo Freunde ! :)

Ich habe mal wieder ein kleines "problemchen"... Und zwar möchte ich von meiner RTC.c eine Variable in Main.c übergeben... sprich...
Die Werte die in dieser Variable drinn stehen, möchte ich in mein Hauptprogramm (Main.c) bearbeiten... geht das ?

es handelt sich hierbei um die Variable "Datum"

Code:
 void DateToString(uint8_t Tag, uint8_t Monat, uint8_t Jahr, uint8_t Tag_Name)

{

	i2c_start_wait(RX8564+I2C_WRITE);
	i2c_write(0x05);
	i2c_rep_start(RX8564+I2C_READ);
	Tag= i2c_readAck();
	Tag_Name = i2c_readAck();
	Monat =i2c_readAck();
	Jahr = i2c_readNak();
	i2c_stop();
	
	Tag &= 0x3F;
	Monat &= 0x1F;
	Tag_Name &= 0x07;

 
    char Datum[12];
	
	Datum[0] = (Tag >> 4)  + 0x30;
	Datum[1] = (Tag & 0x0f) + 0x30;
	Datum[2] = '.';
	Datum[3] = (Monat >> 4)  + 0x30;
	Datum[4] = (Monat & 0x0f) + 0x30;
	Datum[5] = '.';
	Datum[6] = (Jahr >> 4)  + 0x30;
	Datum[7] = (Jahr & 0x0f) + 0x30;
	Datum[8] = '-';

	
	switch (Tag_Name)

	{

	case 00 : 
	
	Datum[9] = Tag_Name = 'S';
	Datum[10] = Tag_Name = 'o';
	break;
	
	case 01 :
	
	Datum[9] = Tag_Name = 'M';
	Datum[10] = Tag_Name = 'o';
	break;


	case 02 :
	
	Datum[9] = Tag_Name = 'D';
	Datum[10] = Tag_Name = 'i';
	break;

	case 03 :
		
	Datum[9] = Tag_Name = 'M';
	Datum[10] = Tag_Name = 'i';
	break;
	
	case 04 :
	
	Datum[9] = Tag_Name = 'D';
	Datum[10] = Tag_Name = 'o';
	break;

	case 05 :
	
	Datum[9] = Tag_Name = 'F';
	Datum[10] = Tag_Name = 'r';
	break;
	
	case 06 :
		
	Datum[9] = Tag_Name = 'S';
	Datum[10] = Tag_Name = 'a';
	break;
}
	Datum[11] = '\0';
 
Hallo Janiiix,

definiere die Vaiable in RTC.h. Ich denke RTC.h wird von RTC.c und "Main".c eingebunden, damit kennen beide c Files die Variable.

Dirk :ciao:
 
okay... das passt!


Nur wie kann ich jetzt auf den "ganzen" String zu greifen???
 
Hi Janiiix3,

was willst Du genau machen?

Wenn es ein "echter" String ist (also \0 terminiert), kannst Du mit while (...) auf die Bytes zugreifen.

Aber wie gesagt, was willst Du machen?
 
Hallo Freunde ! :)


char Datum[12];


Datum[11] = '\0';

[/CODE]

dort steht ja meine komplette Uhrzeit drinn... diese Funktion ist jetzt in RTC.c ich möchte diesen String jetzt aber so wie er da ist in Main.C ausgeben...
 
Was heißt für Dich ausgeben?

Ansonsten:

Code:
 while (*Datum) {     
    // macht was und dann:
    Datum++;
  }
 
Zeig mal die Funktion, die auf den LCD schreibt.

Bei Strings (die eigentlich Char-Arrays sind) übergibst Du den Pointer auf den ersten Byte (*Datum), da steht die Speicheradresse drin. Danach gehst Du mit einer Zählervariable über den String und inkrementierst den Pointer. Fertig.
 
Zeig mal die Funktion, die auf den LCD schreibt.

Bei Strings (die eigentlich Char-Arrays sind) übergibst Du den Pointer auf den ersten Byte (*Datum), da steht die Speicheradresse drin. Danach gehst Du mit einer Zählervariable über den String und inkrementierst den Pointer. Fertig.

void ks0108Puts(char* str) {
int x = ks0108Coord.x;
while(*str != 0) {
if(*str == '\n') {
ks0108GotoXY(x, ks0108Coord.y+ks0108FontRead(ks0108Font+FONT_HEIGHT));
} else {
ks0108PutChar(*str);
}
str++;
}
}
 
Passt doch.

Code:
void ks0108Puts(char *str)
{
  while (*str) {     
    ks0108PutChar(*str);
    str++;
  }
}

Das "!= 0" im while brauchst Du eigentlich nicht.

So müsste es gehen.
 
also was heißt das jetzt ?! wie würde ich jetzt mit...

ks0108Puts("Datum") ausgeben?
 
Nein, mit

Code:
  ks0108Puts(Datum);

Du willst ja nicht das Wort Datum sehen, sondern den Inhalt der Variable Datum.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)