Hallo,
ich habe zwei 7 Segment Anzeigen, die ich per Tastendruck hochzählen
lasse, funktioniert auch alles soweit ganz gut. Nun möchte ich die
"hochzählenFunktion" gerne auslagern, mit hochzaehlen.h und
hochzaehlen.c.
Folgendes habe ich probiert, leider funktioniert es mit meinem
PIC16F1937 und dem Taster nicht.
hier die main.c:
1
inteinersekunde=1;
2
intzehnersekunde=1;
3
intstartwerteiner=0;
4
intstartwertzehner=0;
5
#include"mcc_generated_files/mcc.h"
6
#include"hochzaehlen.h"
7
...//alle weiteren #includes sind natürlich vorhanden
Dass man mehrere Rückgabewerte über Zeiger auf die jeweiligen Adressen
zurückgeben kann, ist mir bekannt. Leider weiß ich nicht, wie ich das
hier anwenden kann, da ich ja eigentlich nichts zurückgeben muss oder?
Jemand eine Idee wie sich die Auslagerung realisieren lässt?
Ich arbeite mit MPLAB v.3.6.
LG
totem
Lukas K. schrieb:> Leider weiß ich nicht, wie ich das> hier anwenden kann, da ich ja eigentlich nichts zurückgeben muss oder?
Naja, du willst doch die neuen Werte von einersekunde und zehnersekunde
zurückgeben, oder nicht? So wie die hochzaehlen Funktion derzeit
ausgestaltet ist, bewirkt sie rein praktisch garnichts. Sie zählt die
Variablen auf dem Stack hoch, was genauso effektiv ist wie die CPU Zeit
in einer Warteschleife zu verbraten :-)
hochzaehlen müsste so in der Art aussehen:
Wenn du die Variablen schon übergibst, dann musst die Adresse der
Variablen (by reference) übergeben und nicht eine Kopie ihres Wertes.
Die Funktion sieht dann wohl so aus
Aufgerufen wird sie mit hochzaehlen(&einersekunde, ...
BTW:
Der Name der Funktion ist nicht sehr aussagekräftig. Irgendwas wird
hochgezählt,. wichtig wäre was wir hochgezählt.
Ach ja, int ist keine gute Wahl. Verschwendet Speicherplatz und
Rechenzeit.
Zählen tust du auch merkwürdig ;-)
Oder zeigst du etwa bei 1 eine Null an und bei 10 eine 9?
Teo D. schrieb:> PS: Las solch Sprüche lieber. Kommt hier selten gut an, trotz> Zwinker-Smiley.
Hier vielleicht schon. Mir geht das Studieren ohne Probieren meist
ziemlich schnell auf den Geist. Reines Raten und eine fertige Lösung
(an)nehmen ohne zu irgendwas verstanden zu haben allerdings noch
schneller ;-)
Es gibt keinen Grund, überhaupt für jedes Digit separate Variablen zu
verschwenden.
Ein char kann bequem 0..99 zählen und ein int 0..9999.
Und nur für die Ausgabe zerlegt man es:
Peter D. schrieb:> Es gibt keinen Grund, überhaupt für jedes Digit separate Variablen zu> verschwenden.
Jetzt mal nicht zu schnell, sonst sind wir ja gleich bei der BCD
Codierung von zwei Stellen in den zwei Nibbles eines Bytes ... ;-)
Peter D. schrieb:> Es gibt keinen Grund, überhaupt für jedes Digit separate Variablen zu> verschwenden.
Deine Variante frisst aber relativ viel Speicher. Könnte also doch
Gründe geben.
(die vom TO hab ich mir nicht angesehen)