Ich hab mal verschiedene Befehle im Simulator angesehen:Zitat:
Zitat von Goblin
GrußCode:Dim X As Word
Dim I As Byte
X.1 = 1 8 cycles
I.1 = 1 8
Set X.1 7
Set I.1 5
X = X Or 1 16
I = I Or 1 7
Rolf
Druckbare Version
Ich hab mal verschiedene Befehle im Simulator angesehen:Zitat:
Zitat von Goblin
GrußCode:Dim X As Word
Dim I As Byte
X.1 = 1 8 cycles
I.1 = 1 8
Set X.1 7
Set I.1 5
X = X Or 1 16
I = I Or 1 7
Rolf
Eben. Bascom kann sowas wieZitat:
..klar, ... GCC Compilierzeit ....Bascom nicht.
CONST wert = 1 << 5
eben nicht, soweit ich weiss. das geht nur zur laufzeit.
Bestenfalls
CONST wert = 2 * 2 * 2 * 2 * 2
das ist aber wohl keine Alternative
const wert = &B00100000
kann bascom sehrwohl
Aber geh, das hätt' ich jetzt nicht gedacht :-)Zitat:
Zitat von Vitis
Hast du gelesen, worum es geht ?
Das liegt ja nur daran, dass es keinen Shift-Operator gibt, sondern nur einen Shift-Befehl. Sowas wieZitat:
Zitat von PicNick
CONST wert = 2 + 3
kann Bascom schon und wertet es auch zur Compilezeit aus.
Gruß
Rolf
sorry, aber die syntax 1<<5 erscheint mir eh
hirnrissig wer sich den Käse ausgedacht hat
hatte sadomasochistische Anwandlungen ... ;)
wenn ich n bit 5 setzen möchte, dann mach ich
set variable.5 oder meinetwegen auch
variable = variable or &B00100000 ...
aber reinshiften, das dann doch vom compiler als
set compiliert wird ... sorry, nicht mein Ding.
dagegen ist asm ja richtig elegant ... SBI
Na, da möcht ich aber doch den C verteidigen.
Bits braucht man (meistens) auf zwei Arten:
als Maske (&B00100000) für OR und AND
und als Bit-offset ( 5) für Bit-SET befehle
ein Port-Pin müßte man also zweifach definieren
#define V_PB5 5
#define M_PB5 0x20
das ist gefährlich bei Projekt Anpassungen etc und vor allem grad bei µC recht umfangreich
also definiert man nur
#define V_PB5 5
und die Maske eben direkt im Befehl
XXbyte |= (1 << V_PB5) oder
XXbyte &= ~(1 << V_PB5)
das ist dann nur Arbeit für den Compiler, zur Laufzeit kost' das nix
Hallo,
ist zwar schon etwas her aber wie wäre es mit dem Befehlen Bits() und NBits() zum stzen oder löschen einzelner Bits? Geht wunderbar und sieht übersichtlich aus.
zb.: Admux = Bits(adlar , Refs0)
In wieweit dies mehr Resourcen verbraucht kann ich allerdings nicht sagen.
Mfg
OEP