Algmeine Funktion

Gast #3650293
Lesenswert?
• ▲
▼
Hallo,
ich versuche gerade mit einer Funktion mein Programm zu verschönern.
Das Gesamte Programm liest eine I2C RTC(PCF8583P) aus, deshalb verwende 
ich die Bibliothek von Peter Fleury.

Die zwei ausgelesnen Bytes werden in diesen Variabeln gespeichert:
buff_sekunde
buff_minute

Nun hab ich mir gedach ich schreib mir eine Funktion
1
uint8_t getsm (uint8_t  ) {
2
  uint8_t zehn = 0 ;
3
  
4
  
5
  
6
  ergebnis = buff & 0b00001111; // maskieren der 1er Stelle 
7
  zehn = buff & 0b01110000; // hier die 10er Stelle
8
  zehn = zehn >> 4 ; //um 4 Stellen zurückschieben für richtige Wertichkeit 
9
  ergebnis = (ergebnis >> 4) * 10 + (ergebnis & 0x0F); // umwandeln von BDC in Binär
10
  ergebnis = ergebnis + zehn *10 ; //Gesamt Ergebnis
11
  
12
  
13
  
14
  
15
  
16
  
17
  return (); // In der Klammer sollte die Rückgabevariable stehen
18
  
19
};

Im "main" frage ich einefach das Ergbniss ab
1
sekunde= getsm(buff_sekunde) ;
2
minute= getsm(buff_minute);

Zu erwähnen ist noch, dass ich die Funktion in eine *.c Datei 
ausgelagert habe. Aber ich weiß nicht wie die Variablen Übergabe 
aussehen soll? Was soll ich in return() schreiben?

Vielen Danke wenn jemand so nett wäre und mich einwenig unterstützen 
kann.
Ich lerne grade µC programmieren in C nur durch Tutorials. I2C und LCD 
laufen schon mal die Uhr läuft auch schon =) Die komplette Uhr ist so zu 
sagen mein Lehrnprojekt.
Gast #3650536
Lesenswert?
• ▲
▼
1
ergebnis = buff & 0b00001111; // maskieren der 1er Stelle 
2
ergebnis = (ergebnis >> 4) * 10 + (ergebnis & 0x0F); // umwandeln von BDC

die 2. Zeile ist vollkommen überflüssig.
(ergebnis >> 4) * 10
ist in deinem Fall immer null


im Grunde läuft es auf das hier hinaus:
1
uint8_t getsm (uint8_t value_bcd) {
2
  uint8_t value_dec;
3
  value_dec = 10 * (value_bcd >> 4) + (value_bcd & 0x0f);
4
  return (value_dec);
5
};

Antwort schreiben

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.

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.