www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Anfänger mit C "oder Verknüpfung"und Funktionen


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: ARM-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Randy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian Gärtner (christiang)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <io.h>

void vergleich(void);

int main(void)
{

// ...
return 0;
}

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

// oder

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

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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein PORTA ist 8 Bit Breit also 0xFF
OK

Danke es funktioniert.

Ein C Buch werde ich demnächst durchlesen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.