Hallo, möchte wie in der Überschrift bereits erwähnt eine Variable, von dem einem Unterprogramm in ein anderes Unterprogramm übergeben. Wie mache ich das? Programmiere in C mit MPLAB auf dem PIC16F887.
weist du nicht was ich meine? Halt ein Programm im Programm.
Die übergibst du einfach als Funktionsparameter beim Aufruf.
anderefunktion(uebergeben); naja für weiteres bitte mal ein Tutorial für C Grundlagen aufsuchen ;)
Sorry, wenn man mal blöd fragt. Geht es hier um die Übergabe von Variablen zu Unterprogrammen oder anderen Funktionen?? Das ist mir überhaupt nicht klar.
Die können einfach benutzt werden. Variablen sind in der ganzen Funktion definiert und deklariert.
also... ich möchte von diesem Programm
1 | |
2 | void_umrechnen(void) // Rechnet Timer Ausgang in Minuten um, Minuten werden auf "minuten" ausgegeben. |
3 | {
|
4 | unsigned int ms=0; |
5 | unsigned int min_einer=0; |
6 | unsigned int min_zehner=0; |
7 | OPTION_REG= 0b11000010; //Pull up disable |
8 | //Interrupt on rising edge of INT pin
|
9 | //Internal cycle clock
|
10 | //Increment on Low to high transition on T0CKI
|
11 | //PSA assigned to timer0
|
12 | //Prescaler 1:8
|
13 | INTCON= 11100100; //Enable all unmasked interrupts |
14 | //Enables all unmasked peripheral interrupts
|
15 | //Enables the INT external interrupt
|
16 | //Disables the INT external interrupt
|
17 | //Disables the PORTB change interrupt
|
18 | //TMR0 Register has overflowed (cleared in software)
|
19 | //INT external interrupt did not occur
|
20 | //None of the PORTB general purpose I/O pins have changed state
|
21 | TMR0 = 0; //Timer0 auf 0 Setzen |
22 | T0IF = 0; //Interrupt Flag zurücksetzen |
23 | PORTC=0b00000000; //PORTC rücksetzen |
24 | TMR0 = 6; |
25 | |
26 | |
27 | while (1) |
28 | {
|
29 | if (T0IF) |
30 | {
|
31 | ms=ms+1; //Counter bei Timerüberlauf um 1 erhöhen |
32 | T0IF=0; //Interrupt Flag zurücksetzen |
33 | TMR0=6; //Timer preload auf 6 stellen |
34 | }
|
35 | |
36 | if (ms==60000) |
37 | {
|
38 | min_einer=min_einer+1; |
39 | ms=0; |
40 | }
|
41 | |
42 | if (min_einer==9) |
43 | {
|
44 | min_zehner=min_zehner+1; |
45 | min_einer=0; |
46 | }
|
47 | |
48 | if (min_zehner==9) |
49 | {
|
50 | min_zehner=0; |
51 | }
|
52 | |
53 | |
54 | }
|
55 | }
|
in dieses Programm die Variable min_einer und min_zehner übergeben
1 | void_7Segment(void) |
2 | {
|
3 | unsigned int min_einer; |
4 | void_umrechnen(); |
5 | |
6 | while (1) |
7 | {
|
8 | if (min_einer==0) PORTC=0b00000000; |
9 | if (min_einer==1) PORTC=0b00010000; |
10 | if (min_einer==2) PORTC=0b00100000; |
11 | if (min_einer==3) PORTC=0b00110000; |
12 | if (min_einer==4) PORTC=0b01000000; |
13 | if (min_einer==5) PORTC=0b01010000; |
14 | if (min_einer==6) PORTC=0b01100000; |
15 | if (min_einer==7) PORTC=0b01110000; |
16 | if (min_einer==8) PORTC=0b10000000; |
17 | if (min_einer==9) PORTC=0b10010000; |
18 | }
|
19 | |
20 | |
21 | |
22 | }
|
Du liest in einem C-Lehrbuch nach, wie das geht, und dann machst du das so.
Bastian Schmidt schrieb: > void_7Segment(void) > { > unsigned int min_einer; > void_umrechnen(&min_einer); <--- einfach uebergeben > > while (1) > { > if (min_einer==0) PORTC=0b00000000; > if (min_einer==1) PORTC=0b00010000; > if (min_einer==2) PORTC=0b00100000; > if (min_einer==3) PORTC=0b00110000; > if (min_einer==4) PORTC=0b01000000; > if (min_einer==5) PORTC=0b01010000; > if (min_einer==6) PORTC=0b01100000; > if (min_einer==7) PORTC=0b01110000; > if (min_einer==8) PORTC=0b10000000; > if (min_einer==9) PORTC=0b10010000; > } void_umrechnen(void) // Rechnet Timer Ausgang in Minuten um, Minuten werden auf "minuten" ausgegeben. { aendern in void_umrechnen(int *min_einer) { *min_einer = blabla; }
Das sind keine Programme. Das sind einfach Funktionen. Gurgel hilft bei solchen Fragen weiter. Gurgel: "c parameterübergabe funktion"
Ich muß den Vorrednern rechtgeben. Das sind absolute C-Grundlagen, die man in jedem C-Tutorial oder Einsteigerbuch nachlesen kann. Sowas in einem Forum zu erklären ist unsinnig. ich schrieb: > Geht es hier um die Übergabe von Variablen zu Unterprogrammen oder > anderen Funktionen?? Ich kenne "Unterprogramm" nur als allgemeinen Begriff für das, was in C "Funktion" heißt. Wo ist also der Unterschied?
Stundenlanges Probieren kann einem minutenlanges Lesen ersparen :-) Und vermutlich verwendest Du wohl kein Multitasking bzw. kein OS? Das bedeutet, du hast nur ein Hauptprogramm mit einer Endlos-while(1)-schleife?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.