Bedeutet das nicht einfach
tmpc = tmpc OR &B00010000
oder bedeutet 5 mal shiften
tmpc = tmpc OR &B00100000
Tatsächlich würde man wohl
Set tmpc.4 (bzw. Set tmpc.5)
eingeben
Gruß
Rolf
Tagchen!
ich würde gern folgende Zeile Avr-C in Bascom übersetzen:
Das OR ist klar.Code:tmpc |= (1<<5);
Aber was ist mit dem Shift? Im C-Code wird eine 1 um 5 Stellen in das Byte geschoben. Das Bascom-Shift scheint sowas aber nicht zu ermöglichen:Code:tmpc = tmpc OR ...
Syntax:
SHIFT var , LEFT/RIGHT[ , shifts]
-> MEIN PROJEKTBLOG <-
Bedeutet das nicht einfach
tmpc = tmpc OR &B00010000
oder bedeutet 5 mal shiften
tmpc = tmpc OR &B00100000
Tatsächlich würde man wohl
Set tmpc.4 (bzw. Set tmpc.5)
eingeben
Gruß
Rolf
Es gibt in Basic die Befehle SHIFT und ROTATE, die dem >>/<< entsprechen. Bei einem wird ein rausgeschobenes Bit erhalten, beim anderen gehts verloren.
#ifndef MfG
#define MfG
Jaecko das ist jetzt keine Antwort auf meine Frage.
Ich habs nun so gemacht:
Das packt mir ne 1 direkt an die 5. Stelle.Code:Tmp_c = Tmp_c Or 32
-> MEIN PROJEKTBLOG <-
Hallo,
wie for_ro schon geschrieben hat, in Bascom macht man es am einfachsten mit Set tmpc.5 um das Bit5 zu setzen.
Ist für den einen oder anderen auch besser zu erkennen um welches Bit es sich handelt als mit 32.
32 ist doch ganz eindeutig ^^
welche version ist denn schneller? oder WAS genau macht tmpc.5 eigentlich (in ASM)
-> MEIN PROJEKTBLOG <-
upsa... sorry verlesen. Dachte es geht ums shiften, nicht ums Bit setzen.
#ifndef MfG
#define MfG
Hallo Jaecko,
bei den C-Programmierern ist Bit setzen immer mit Shiften verbunden.
tmpc |= (1<<5);
wäre eigentlich in Bascom
tmp=1
shift tmp,left,5
tmpc=tmpc or tmp
(1<<5) macht natürlich Sinn, wenn Variablen beteiligt sind (1<<i), ansonsten kannst du genausogut
tmpc=tmpc or 32
in Bascom bzw.
tmpc| = 32
in C schreiben
Gruß
Rolf
Bei festen Wert (1<<5) macht der C kompiler gleich ein 0x20 draus,
also im Code gleich tmp |= 0x20.
Das hat Bascom dzt. nicht drauf
Mit Variablen zur Laufzeit wäre das Äquivalent
Btw: das mit dem Shiften und dann Odern geht natürlich auch, is aber mehr CodeCode:DIM TMP AS BYTE DIM POS AS BYTE pos = 5 TMP.pos = 1
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
-> MEIN PROJEKTBLOG <-
Lesezeichen