bits einer Variable ansprechen

Gast #1776
Lesenswert?

Hallo AVR Cracks
Ich arbeite mit dem AVR2313.

ich möchte in meiner Software nach Bit-Zuständen abfragen, welche in 
einer von mir definierten Variabel enthalten sind
//*************************************
//die definition der Variabel
static volatile uint8_t move_reg;

//die definition der Bits in der Variabel
#define  acc_ramp  =0
#define  dec_ramp  =1
#define  dir_cw  =2
#define  dir_ccw  =3

//der Zugriff auf das Bit (versuchte Variante 1)
if(move_reg,dir_ccw)
{
}

//Zugriff Variante 2
if(bit_is_set(move_reg,dir_ccw)
{
}

//Zugriff Variante 3
if((move_reg,dir_ccw)==1)
{
}
//**************************
>>der avrgcc compiler gibt mir dabei immer Fehler aus!!

Ich habe im Assembler-instruction-set gesehen, dass es einen Befehl
SBRC und SBRS gibt, welche bits in Registern kontrollieren. Nun habe ich
nirgens ein "C"-Befehl dafür gefunden.

Hat jemand von Euch eine Idee, wie ich das Lösen kann.

Vielen Dank
Gruss
Kay
Gast #1778
Lesenswert?

Hallo Lars
Das sieht doch schon nach einem Kurzen Befehl nach meinen Vorstellungen 
aus!

Meine Fragen dazu:
-kann ich den Befehl gerade so eintippen (Klammern)?
 (oder so: if(move_reg&(1<))

-Wie sieht dieser Befehl in asm aus?

Vielen Dank für Deine Hilfe

Gruss
Kay
Gast #1782
Lesenswert?

hmm irgendwie geht das nicht sehr seltsam....liegt am forum
also ich probier das mal so zu schreiben mit worten :)

if "klammerauf" move_reg "und" "klammerauf" 1 "kleiner kleiner" dir_ccw 
"klammerzu" "klammerzu"
Gast #1784
Lesenswert?

das will bei mir nicht so richtig funzen.

Der compiler gibt immer die Fehlermeldung:
>>parse error before '='
..obwohl ich kein "=" im Code habe.
(Mein Notebook muste ziemlich viel schimpf und schande anhören...;-)

Das selbe Problem hatte ich schon mit den ersten 3 Versuchen.
muss ich noch zusätzliche "Headers includen".

folgende sind bereits vorhanden.
>>>************************
#include <io.h>
#include <io2313.h>
#include <sig-avr.h>
#include <interrupt.h>
#include <inttypes.h>
#include <progmem.h>
#include <eeprom.h>
#include <iomacros.h>
#include <stdlib.h>
>>>************************


Gruss
Kay
Gast #1788
Lesenswert?

ufff ich habe den Fehler gefunden (ich dachte mir noch es sei so was 
banales.....

ich habe die Bit-Definition so geschrieben
#define dir_ccw =3

..dort wird aber die Zuweisung ohne "=" erwartet..

das ist meine Erkenntnis für heute Nachmittag.....;-)

das Positive dabei ist, dass ich nun durch das Probieren verschieden 
Wege gefunden habe

Ich Danke Euch vielmals für die Unterstützung!!

Grüsse aus der Schweiz

PS: Andreas, ich werde den Code gerne im Forum posten, wenn SOLCHE 
Fehler eliminiert sind.

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