Hallo
ich hätte ein Frage im Bezug auf Unterprogramme, ich will aus meinem
Unterprogramm 2 Werte in das Hauptprogramm übergeben, weiß aber nicht
wie man das richtig in C-Code schreibt (die Stelle, die Falsch ist, ist
mit Fragezeichen makiert). Wie man eine Variable vom Unterprgramm
übergibt ist das kein Problem. Im Hauptprogramm teste ich dann mit LED's
ob die Variablen den richtigen Wert haben, diese leuchten allerdings
nicht.
Ich verwende den dsPIC33FJ256MC710A, das dsPICDEM MCLV, einen CCS
Compiler
Philipp schrieb:> wie man das richtig in C-Code schreibt
Spätestens jetzt ist der Zeitpunkt erreicht, in dem du in deinem C Buch
mit dem Abschnitt "Funktionsargumente und wann muss ich einen Pointer
einsetzen?" beginnen musst.
> return(b,c);
Wann immer du in nächster Zeit versucht bist, ein Komma ',' zu benutzen:
lass es. Der Komma-Operator macht etwas völlig anderes, als du denkst.
Für manche Sachen ist er ganz nett, aber im Grunde wirft er eine Menge
Probleme auf, die man ohne ihn nicht hätte. Man hätte ihn auch weglassen
können, ohne dass es sich gravierend ausgewirkt hätte.
Versuch es mal so. Mit der zweiten Möglichkeit musst du einfach
aufpassen, damit du keine Variablennamen zweimal benützt. Dafür musst du
dich nicht mit dem Übergeben von Daten beschäftigen.
1
#include<33FJ256MC710A.h>
2
#include<stdio.h>
3
#include<stdlib.h>
4
#fuses XT,PR_PLL, NOWDT
5
#use delay (crystal=8M,clock=80M)
6
7
inteins(intb,intc)
8
{
9
intx=1,y=3;
10
b=x*y;
11
c=x+y;
12
return(b,c);
13
}
14
15
voidmain()
16
{
17
set_tris_e(0);
18
while(1)
19
{
20
intb,c,u,i;
21
22
i=eins(b);
23
u=eins(c);
24
if(i==3)
25
{output_high(PIN_E0);}
26
else
27
output_low(PIN_E0);
28
29
if(u==4)
30
{output_high(PIN_E1);}
31
else
32
output_low(PIN_E1);
33
}
34
}
35
36
// Andere Möglichkeit mit globalen Variablen
37
intx=1,y=3;
38
intb,c,u,i;
39
40
inteins(void)
41
{
42
b=x*y;
43
c=x+y;
44
}
45
46
voidmain()
47
{
48
set_tris_e(0);
49
while(1)
50
{
51
eins();
52
if(i==3)
53
{output_high(PIN_E0);}
54
else
55
output_low(PIN_E0);
56
57
if(u==4)
58
{output_high(PIN_E1);}
59
else
60
output_low(PIN_E1);
61
}
62
}
Warum benutzt du eigentlich long ??
Mit char oder int würdest du weniger Speicher benötigen.
P_ Richner schrieb:> Versuch es mal so.> int eins(int b, int c)> {> ...> i=eins(b);> u=eins(c);
Das wird so aber nichts.
> Mit der zweiten Möglichkeit musst du einfach> aufpassen, damit du keine Variablennamen zweimal benützt. Dafür musst du> dich nicht mit dem Übergeben von Daten beschäftigen.
Ah, die gute alte 'Ich brauch das nicht lernen'Ä Methode.
Kann man machen. Klar.
Aber irgendwann wird es nicht ausbleiben sich auch mal mit dem
Schreckgespenst aller angehenden C-Programmierer 'Pointer' zu
beschäftigen.
Auf dieser Ebene ist das alles noch recht einfach. Das zu lernen, darum
kommt er auf Dauer nicht herum. Warum also nicht jetzt, wo die Dinge
noch einfach sind.
Karl Heinz schrieb:> kommt er auf Dauer nicht herum. Warum also nicht jetzt, wo die Dinge> noch einfach sind.
So gehts einfacher zum Lernen klar.
> int x=1,y=3;> b=x*y;> c=x+y;> return(b);> return(c);> i=eins(b);> u=eins(c);
Geht es dann so??
Ich denke schon.