mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik M16C Speicher reservieren


Autor: Michael B (Gast)
Datum:

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

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was willst du machen??

Autor: Michael B (Gast)
Datum:

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

Autor: Jochen (Gast)
Datum:

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

Autor: Jochen (Gast)
Datum:

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

Autor: Michael B (Gast)
Datum:

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

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.