Forum: Mikrocontroller und Digitale Elektronik bit_is_clear in CodevisionAVR


von Patrick (Gast)


Lesenswert?

Hallo die Herren.

Ich Programmiere mit CodevisionAVR und würde gerne folgenden Code 
umsetzen.
1
if (bit_is_clear(status, 2)) {
2
        address = 0x00;
3
    }
4
    else if (bit_is_clear(status, 4)) {
5
        address = 0x02;
6
    } 
7
    else if (bit_is_clear(status, 6)) {
8
        address = 0x04;
9
    }
10
    else {
11
        /* Alle Puffer sind belegt,
12
           Nachricht kann nicht verschickt werden */
13
        return 0;
14
    }

Nun finde ich leider in der Hilfe nichts zu "bit_is_clear".
Hätte wer einen Tipp was mir fehlt um die Funktion "bit_is_clear" in 
CodevisionAVR nutzen zu können.

Da es mir mit "bit_is_clear" nicht gelungen ist habe ich mir folgendes 
überlegt.
1
    if (!(status & 0x4))   
2
    {
3
        address = 0x00;
4
    }
5
    else if (!(status & 0x10)) 
6
    {
7
        address = 0x02;
8
    }
9
    else if (!(status & 0x40))
10
    {
11
        address = 0x04;
12
    }  
13
    else 
14
    {
15
        /* Alle Puffer sind belegt,
16
           Nachricht kann nicht verschickt werden */
17
        return 0;    
18
    }

Hiermit wäre die gleiche Funktion gegeben. Richtig???



Danke im Voraus für alle Tipps welche mir weiterhelfen.
mfg
Patrick

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

ja, das sieht soweit richtig aus.

So würde ich das auch machen und ich benutze nur CVAVR
MfG winne

von Karl H. (kbuchegg)


Lesenswert?

1
#define bit_is_clear(byte,bit)    (! ((byte) && (1<<(bit)))

von karl (Gast)


Lesenswert?

&& oder &?

von Karl H. (kbuchegg)


Lesenswert?

&

danke für die Korrektur.

von Martin P. (mpeg)


Lesenswert?

und hinten fehlt eine klammer.

hier nochmal korrekt:

#define bit_is_clear(byte,bit)    (! ((byte) & (1<<(bit))))

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.