Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Print Befehle welcher Syntaxfehler ? Kategorie: Programmierung Basic (von Jens - 7.11.2011 18:14)
 Als Antwort auf Re: Print Befehle welcher Syntaxfehler ? von Pohl - 7.11.2011 9:37
Jens nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, sonstige
Hallo Bernhard!

Wie gerdl bereits geschrieben hat, eine Word-Variable besteht aus zwei Bytes bzw. 16 Bits. Werden keine „Zahlen“ hinter die Variabeln geschrieben, dann vergibt der Compiler die Zuweisung der Speicheradressen automatisch. Einzelne Bits lassen sich aber nur mit Zahlen definieren und ab hier musst Du selber dafür sorgen das es nicht zu ungewollten Überschneidungen kommt.

Folgende Word, Byte und Bits belegen die erste (ersten beiden) Speicherzelle/n:

Define W1 Word[1]   --->   belegt Speicherzelle 1 und 2
Define B1 Byte[1]   --->   belegt Speicherzelle 1
Define B2 Byte[2]   --->   belegt Speicherzelle 2
Define Bit1 Bit[1]   --->   Bit 1 von Speicherzelle 1
Define Bit2 Bit[2]   --->   Bit 2 von Speicherzelle 1
Define Bit3 Bit[3]   --->   Bit 3 von Speicherzelle 1
Define Bit4 Bit[4]   --->   Bit 4 von Speicherzelle 1
Define Bit5 Bit[5]   --->   Bit 5 von Speicherzelle 1
Define Bit6 Bit[6]   --->   Bit 6 von Speicherzelle 1
Define Bit7 Bit[7]   --->   Bit 7 von Speicherzelle 1
Define Bit8 Bit[8]   --->   Bit 8 von Speicherzelle 1
Define Bit9 Bit[9]   --->   Bit 1 von Speicherzelle 2
Define Bit10 Bit[10]   --->   Bit 2 von Speicherzelle 2
Define Bit11 Bit[11]   --->   Bit 3 von Speicherzelle 2
Define Bit12 Bit[12]   --->   Bit 4 von Speicherzelle 2
Define Bit13 Bit[13]   --->   Bit 5 von Speicherzelle 2
Define Bit14 Bit[14]   --->   Bit 6 von Speicherzelle 2
Define Bit15 Bit[15]   --->   Bit 7 von Speicherzelle 2
Define Bit16 Bit[16]   --->   Bit 8 von Speicherzelle 2

Und folgende Word, Byte und Bits belegen die letzten beiden Speicherzellen:

Define W12 Word[12]   --->   belegt Speicherzelle 23 und 24
Define B23 Byte[23]   --->   belegt Speicherzelle 23
Define B24 Byte[24]   --->   belegt Speicherzelle 24
Define Bit177 Bit[177]   --->   Bit 1 von Speicherzelle 23
Define Bit178 Bit[178]   --->   Bit 2 von Speicherzelle 23
Define Bit179 Bit[179]   --->   Bit 3 von Speicherzelle 23
Define Bit180 Bit[180]   --->   Bit 4 von Speicherzelle 23
Define Bit181 Bit[181]   --->   Bit 5 von Speicherzelle 23
Define Bit182 Bit[182]   --->   Bit 6 von Speicherzelle 23
Define Bit183 Bit[183]   --->   Bit 7 von Speicherzelle 23
Define Bit184 Bit[184]   --->   Bit 8 von Speicherzelle 23
Define Bit185 Bit[185]   --->   Bit 1 von Speicherzelle 24
Define Bit186 Bit[186]   --->   Bit 2 von Speicherzelle 24
Define Bit187 Bit[187]   --->   Bit 3 von Speicherzelle 24
Define Bit188 Bit[188]   --->   Bit 4 von Speicherzelle 24
Define Bit189 Bit[189]   --->   Bit 5 von Speicherzelle 24
Define Bit190 Bit[190]   --->   Bit 6 von Speicherzelle 24
Define Bit191 Bit[191]   --->   Bit 7 von Speicherzelle 24
Define Bit192 Bit[192]   --->   Bit 8 von Speicherzelle 24

Wenn Du ein ungewolltes überschreiben verhindern möchtest, dann musst Du die Speicherzellen so auswählen dass sich die Bytes und Bits nicht in die quere kommen.

Beispiel:

*** Dummy Byte – nicht verwenden ***
Define Dummy1 Byte[1]   --->   entspricht Word 1

*** Bits ***
Define Bit1 Bit[1]
Define Bit2 Bit[2]
Define Bit3 Bit[3]
Define Bit4 Bit[4]
Define Bit5 Bit[5]
Define Bit6 Bit[6]
Define Bit7 Bit[7]
Define Bit8 Bit[8]

*** Word Variabeln ***
Define W1 Word[2]
Define W2 Word[3]
Define W3 Word[4]
Define W4 Word[5]
Define W5 Word[6]
Define W6 Word[7]
Define W7 Word[8]
Define W8 Word[9]

*** Byte Variabeln ***
Define B1 Byte[2]   --->   entspricht Word 1
Define B2 Byte[19]
Define B3 Byte[20]
Define B4 Byte[21]
Define B5 Byte[22]
Define B6 Byte[23]
Define B7 Byte[24]

Das Byte "Dummy1" darfst Du nicht verwenden/verändern, da es die Bits1 bis 8 enthält. Dadurch fehlt Dir zum Schluss das Byte "B8", hierfür musst Du eine andere Lösung finden...

LG Jens

 Antwort schreiben

Bisherige Antworten: