Forum: Mikrocontroller und Digitale Elektronik M16C Speicher reservieren


von Michael B (Gast)


Lesenswert?

Hallo,

Ich programmiere erst seit sehr kurzer Zeit uC. Ich möchte nun ein
Flagregister anlegen, damit ich gewisse Zustände anzeigen kann. Wie
reserviere ich mir den benötigten Speicher, damit es keine Probleme mit
dem Rest des Programmes gibt?

Vielen Dank für Eure Hilfe

Michael B

von Jochen (Gast)


Lesenswert?

was willst du machen??

von Michael B (Gast)


Lesenswert?

Wenn ich z.B. Daten an ein Display senden will muss ich zuerst prüfen ob
das Display Busy ist. Ist dies der Fall möchte ich also ein Flag in
einem Register setzen können damit dann die Funktion dieses eine Bit
prüfen kann.
Es wäre nun praktisch wenn ich ein Register im Speicher reservieren
könnte, wo ich dann die ganzen Flags unterbringen könnte. Sonst muss
ich ja immer ein ganzes Byte benutzen.

von Jochen (Gast)


Lesenswert?

ja ich geh jetzt mal davon aus das du in C Programmierst
eine möglichkeit:
Bit Felder
typedef struct
{
  uint8 bit0 : 1;
  uint8 bit1 : 1;
  uint8 bit2 : 1;
  .
  .
  .
  uint8 bit7 : 1;
} bitfeld;

bitfeld flag;

flag.bit0=1;

zu bitfelder ist allerdings zu sagen, dass hier durch optimierungen des
compilers etwas anderes rauskommt (später im asm) als erwartet,
d.h. größer sind als erwartet

oder
über masken
#define BIT0 0x1    //  1b
#define BIT1 0x2    //  10b
#define BIT2 0x4    // 100b
#define BIT3 0x8
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80

setzten über flag|=BIT0;
löschen über flag&=~BIT0; (~  Komplement)

if(flag&BIT0)
{
  //Wenn BIT0 gesetzt
}

if(!(flag&BIT0))
{
  //Wenn BIT0 nicht gesetzt
}

von Jochen (Gast)


Lesenswert?

nachtrag zu bitfelder
es ist nicht nach ansi geregelt wie ein compiler bitfelder anlegen
muss. Manche compiler bieten explizite anweisungen an um bitfelder so
klein wie möglich zu machen. und in der regel wenn ein bitfeld aus acht
bits besteht sind auch nur ein Byte was vom compiler an platz dafür
vorgesehen wird. jedoch ich wiederhole, keine reglung durch ANSI

von Michael B (Gast)


Lesenswert?

vielen dank für die infos zu den bitfeldern. probiere das problem einmal
wie vorgeschlagen anzugehen.

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.