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

Gast #660497
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
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
> 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
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
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
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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.