Variablen zwischen Unterprogrammen übergeben

OP #3038720
Lesenswert?

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
}
#3038751
Lesenswert?

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;
}
#3038805
Lesenswert?

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?
Gast #3038826
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren