Anfängerfragen in C

Gast #360736
Lesenswert?

Fragen von einem Noob


Port A soll z.b. auf x gespeichert werden

1.) Wie speichert man den gesamten Wert eines I/O Ports auf eine
Variable in C ?

2.) Welcher Datentyp muss x sein?

3.) Wie kann ich den aktuellen Wert von x abfragen

z.b.: if(x=128) then ...   wenn am Port (1000.0000) anliegt

Danke für eure Antworten!
Gast #360738
Lesenswert?

2. unsigned char
1. Ausgang: x=PORTy; Eingang: x=PINy; wobei y den Port angibt
(Buchstabe von A bis H je nach Controller)
3.Guck ins Tutorium! In ein C-Buch.
>if(x=128) then
Lerne C! Und finde heraus, was dein Konstrukt bewirkt!
Bis auf ein paar Sachen, ist C auf einem Mikrocontroller nichts anderes
als auf dem PC. Somit kann man auf einem PC (C-)Programmierung erlernen
und diese dann auf den Mikrocontroller übertragen.
Gast #360741
Lesenswert?

bitte korrigiert mich falls es nicht sitmmt

1.) x=PORTA; (Fürs abspeichern von Port A auf x)
2.) unsigned char x;

das verstehe ich noch nicht
3.) if (x & (????))
Der Wert von x soll mit dem Wert der Fragezeichen übereinstimmen -->
Verknüpfungsergebnis ist "1" und die If-schleife wird durchgeführt.

Was schreibe ich nun für "????" wenn ich abfragen will ob am Port
"1000.0000" liegt (also 128) ?
#360744
Lesenswert?

> 3.) if (x & (????))
> Der Wert von x soll mit dem Wert der Fragezeichen übereinstimmen

Dann brauchst du einen Vergleich auf Gleichheit.
Aber beachte: In C wird ein Vergleich auf Gleichheit mit 2 =
geschrieben:

    if( x == 120 )

ganz im Gegensatz zu einer Zuweisung: die hat nur 1 = Zeichen

   a = 5;

Jetzt kommt aber dazu, dass eine Zuweisung an dieser Stelle
völlig legal ist:

   if( x = 120 )

nur macht das halt was völlig anderes als
   if( x == 120 )

Wie hier schon mal gesagt wurde: Du brauchst mindestens 1
Buch um C-Programmierung zu lernen.
Gast #360745
Lesenswert?

1. und 2. ist soweit korrekt.
zu 3.: Das was oben von anderen angeführt wurde, stimmt nicht mit
Deiner Aufgabenstellung überein (if(x & (1 << 7)) entspricht if(x >=
128)!). Deshalb: Vergiss das erstmal. Du kannst selbstverständlich
schreiben
if(x == 128){/*irgendwelcher Code*/}
Gast #360748
Lesenswert?

Genau! If ist KEINE SCHLEIFE!!!!! Weder in C noch in irgend einer
anderen Programmiersprache. Hierbei handelt es sich um eine
Fallunterscheidung. Such ma nach nem C-Kurs im Netz oder kauf dir n
Buch.
Gast #360756
Lesenswert?

Hast du dir schon einmal die Header-Files angesehen?!
WEnn nicht, dann tu es einmal... da stehen oft schöne hilfreiche sachen
darin ;-)

Aus dem Headerfile:

/*  BYTE Register  */
sfr P0     = 0x80;
sfr P1     = 0x90;
sfr P2     = 0xA0;
sfr P3     = 0xB0;
sfr P4     = 0xE8;
sfr P5     = 0xF8;

Somit weist du das sie mit P0 usw angesprochen werden.

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