Forum: Mikrocontroller und Digitale Elektronik Wert übergabe in Hauptprogramm


von Martin (Gast)


Lesenswert?

Hallo
ich habe ein Unterprogramm geschrieben, in dem ich ein Poti einlese und 
den Wert einer Variable zuweise. Nun möchte ich diesen Wert im 
Hauptprogramm weiter verwenden.
Ich weiß das es mit einer globalen Variable geht, doch leider scheitert 
es an der Umsetztung.
Ich hoffe jemand kann mir helfen den Fehler zu beheben.

mfg


#include <33FJ256MC710A.h>
#device ADC=10
#include <stdio.h>
#include <stdlib.h>

#fuses XT,PR_PLL, NOWDT
#use delay (crystal=8M,clock=80M)

void Normierung(signed long p)
{
    set_tris_b(0x100);

    setup_adc_ports(sAN8);
    setup_adc(ADC_CLOCK_INTERNAL);
    set_adc_channel(8);

     p=read_adc();
     p=p-511;
     p=p*8;
}


void main ()
{
    Normierung(p);

    while(1)
    {
        if(p>4000)
        {
         output_high(PIN_E1);
        }
    }
}

von Stefan R. (srand)


Lesenswert?

Martin schrieb:
> Ich weiß das es mit einer globalen Variable geht

Das ist Quatsch. Dafür nimmt man Zeiger.

Mach aus "void Normierung(signed long p)"
ein "void Normierung(signed long *p)"

Und dann legst du in deiner main() erstmal eine signed-long-Variable an, 
die du übergeben kannst: "signed long bla;" bzw "Normierung(&bla);"

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das Lesen von Büchern scheint ja heutzutage komplett verboten zu sein, 
ansonsten hätte hier der übliche Literaturhinweis auf die zweite Ausgabe 
des K&R gut hingepasst.

von Coder (Gast)


Lesenswert?

Wie wäre es mit einer Funktion der Form
1
signed long Normierung(void)
2
{
3
    signed long p;
4
    set_tris_b(0x100);
5
6
    setup_adc_ports(sAN8);
7
    setup_adc(ADC_CLOCK_INTERNAL);
8
    set_adc_channel(8);
9
10
     p=read_adc();
11
     p=p-511;
12
     p=p*8;
13
     return p
14
}

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
Noch kein Account? Hier anmelden.