PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grundsatzfrage: jede Variable als bit dimmen oder 1byte reservieren



mat-sche
14.09.2011, 08:06
Guten morgen liebe Gemeinde!

Ich habe eine Grundsatzfrage:

ich habe in meinem Programm einige Variablen die als Bit's gedimmt sind. Um nicht die Ressourcen vom Controller zu verschwenden habe ich ein Byte reserviert und aus dem dann die einzelnen Bits den Variablen zugewiesen. Ist das so ok oder wie ist in der Praxis die Vergabe von Variablen gängige Methode? Welche Möglichkeit gibt es noch der Vergabe und welche Vor- und Nachteile haben diese?

Dank schon mal für Eure Antwort!

Nen schönen Tag Euch! MAT

peterfido
14.09.2011, 15:18
Wieviel Platz Deine Art verbrät, zeigt Dir Bascom nach dem kompilieren mit STRG+W
Ich nutze oft Deine Methode:



Dim Evari1 as eram byte
dim Vari1 as byte

Lichtan alias vari1.0
Fernbedienung alias vari1.1
...

Das hat den Vorteil, dass ich Werte einfach im EEPROM speichern kann:


evari1=vari1

und auch einfach wieder laden kann.


vari1=evari1


Wenn der Controller noch ausreichend Platz hat, nutze ich auch schon mal ein ganzes Byte für ein Bit. Da einige Operationen auf ein Byte schneller durchlaufen als die gleichen Operationen auf ein Bit.

PicNick
14.09.2011, 16:27
Bei den als BIT gedimmten Werten macht Bascom in seinem Maschinencode letztlich nix anderes als du. Also performancemässig und platzmässig ist das alles eins.

Nachteil: Bascom versteckt das Byte (od. die Bytes), die er dazu verwendet, und du hast keinen direkten Einfluss, in welchem Byte welches Bit drin steckt.

Ich persönlich seh keinen wirklichen Vorteil bei den "Gedimmten" Bits.

Und die Argumente von @peterfido zählen ja auch.

mat-sche
15.09.2011, 08:32
Guten Morgen,

danke für Eure beiden Aussagen! Die Info ist genau dies was ich für mein Verständnis gebraucht habe!
Dann ist es beim Arbeiten mit ERam-Variablen der bessere Weg ein Byte zu nehmen und diesem dann gezielt die einzellnen Bits zuzuweisen.
Gut zu wissen, werde ich in Zukunft mit beachten.

Dank nochmal & Gruß MAT