Anfänger mit C "oder Verknüpfung"und Funktionen

Gast #660497
Lesenswert?
• ▲
▼
Hallo Leute,

wie kann ich in C eine "oder Verknüpfung" erreichen?

Also ich habe folgendes Problem.
Ich will eine Fussgesteuerte Schleife haben, die mit der Voraussetzung
(PortA==0x0 oder PortA==0x255)nach oben springt.

Ich weis nicht ob man das so machen kann?

do
 {

irgend was...
 }
while(PORTA==0x0||PORTA==0x255)

Und dann habe ich noch Probleme mit den Funktionen, der Compiler gibt 
eine Warnung und verweist auf die Funktion.

void vergleich();   //noch vor main deklariert

int main()
{
.
.
vergleich();
.
.
}


//__________Funktion___Vergleich____________________

void vergleich()

{
 if(PORTA==PINC)
   {
    PORTA=0xFF;
   }
 else
   {
    PORTA=0x0;
   }
}

Was habe ich falsch gemacht?
Gast #660501
Lesenswert?
• ▲
▼
1) 0x255 ist wahrscheinlich nicht was du willst. Eher 0xFF ;-)
   Ansonsten siehts ok aus. Ich würde die einzelnen Ausdrücke
   nur noch klammern ((PORTA == 0x00) || (PORTA == 0xFF))

2) Poste doch mal die Warnung/Fehlemeldung
Gast #660502
Lesenswert?
• ▲
▼
> while(PORTA==0x0||PORTA==0x255)

Die Schleife wird nochmal ausgeführt wenn PORTA entweder 0 oder 255 ist, 
soweit kein Problem. Hat der Compiler rumgezickt? Evtl. musst du noch
while((PORTA==0x0)||(PORTA==0x255))
die beiden Vergleiche in Klammern setzten, ich weiß gerade nicht 
Auswendig wie die Vorrangregeln sind.

>  der Compiler gibt eine Warnung und verweist auf die Funktion.

Was schreibt der Compiler denn?

Randy
Gast #660512
Lesenswert?
• ▲
▼
Danke schon mal, ja hast Recht ich meine 0xFF.

Hier sind die Warnungen:

../Lauflicht_in_C.c:34: warning: implicit declaration of function 
'vergleich'
../Lauflicht_in_C.c: At top level:
../Lauflicht_in_C.c:71: warning: conflicting types for 'vergleich'
../Lauflicht_in_C.c:34: warning: previous implicit declaration of 
'vergleich' was here
../Lauflicht_in_C.c: In function 'vergleich':

Jetzt spinnt das ding Komplett jetzt bringt er mir auch Fehlermeldungen:

../Lauflicht_in_C.c:26: error: 'PINC' undeclared (first use in this 
function)
../Lauflicht_in_C.c:72: error: 'PORTA' undeclared (first use in this 
function)
../Lauflicht_in_C.c:72: error: 'PINC' undeclared (first use in this 
function)


woran kann es liegen?
#660525
Lesenswert?
• ▲
▼
Die Warnung mit der Funktion 'vergleich' erklärt sich aus den 
unterschiedlichen Prototypen.
Prototyp deklariert als 'void vergleich()' Funktion angelegt als (per 
Definition) 'int vergleich'. Du hast das void vergessen, das du vorher 
geschrieben hast, der Kompiler macht dann daraus ein int. Empfehlung: 
als Parameter in beiden Fällen auch ein 'void' rein, so dass das ganze 
dann so aussieht 'void vergleich(void)'.
Die anderen Fehler rühren daher, dass dem Compiler die Begriffe 'PINC' 
und 'PORTA' nichts sagen. Mikrocontrollerinclude vergessen?
Frage ist dein PORTA wirklich breiter als 8 Bit (wegen 
'PORTA==0x255')???

Christian
Gast #660526
Lesenswert?
• ▲
▼
1
#include <io.h>
2

3
void vergleich(void);
4

5
int main(void)
6
{
7

8
// ...
9
return 0;
10
}

Und noch was:
1
while(PORTA==0||PORTA==255)
2

3
// oder
4

5
while(PORTA==0x00||PORTA==0xFF)

Du solltest dringend ein C-Buch lesen und dich überhaupt mit µC's 
auseinander setzen bevor du anfängst.

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