Hi, kann mir bitte einer sagen was in der letzten #define Zeile gemacht wird? #define SED1335_M0 0 #define SED1335_M1 0 #define SED1335_M2 0 #define SED1335_WS 0 #define SED1335_IV 1 #define SED1335_SYS_P1 0x10 | (SED1335_IV << 5) | (SED1335_WS << 3) | (SED1335_M2 << 2) | (SED1335_M1 << 1) | SED1335_M0 Zusammengezählt oder? Danke.
kurz gesagt - schei.e 0x10 | (1 << 5) = 0x30 die restlichen schiebeoperationen und "oder" sind absolut witzlos, da die (0 << x) immer 0 ist...
> Zusammengezählt oder?
Nö, da wird ein Kommando draus gebildet.
0x10 ist das Grundmuster für das Kommando, die restlichen Bits sind
entsprechende Flags.
Das obige Beispiel ergibt 0x30.
Ralf
Hi, super das brauche ich. Also 30 Hex. Das dachte ich mir. #define SED1335_FX 7 #define SED1335_FY 7 #define SED1335_WF 1 #define SED1335_SYS_P2 0x00 | (SED1335_WF << 7) | SED1335_FX Das ergibt dann 87 oder? Wie habt ihr das ausgerechnet?
Trexis5 schrieb: > Hi, > > super das brauche ich. > Also 30 Hex. > Das dachte ich mir. > #define SED1335_FX 7 > #define SED1335_FY 7 > #define SED1335_WF 1 > > #define SED1335_SYS_P2 0x00 | (SED1335_WF << 7) | SED1335_FX > > Das ergibt dann 87 oder? > > Wie habt ihr das ausgerechnet? Der Reihe nach durchgehen Da ist erst einmal 0x00 oder in Bitschreibweise 00000000 Dann SED1335_WF << 7 SED1335_WF ist laut define gleich 1 also 1<<7 also eine 1 7 mal nach links geschoben aus 00000001 wird daher 1000000 00000000 (das bisherige Zwischenergebnis aus 0x00) ODER 10000000 ( von SED1335_WF << 7 ) --------------- 10000000 dann der nächste Term SED1335_FX, das ist laut define 7 oder in Bitschreibweise 00000111 10000000 (das bisherige Zwischenergebnis) ODER 00000111 (von SED1335_FX) ---------------- 10000111 und das ist wiederrum in Hex-Schreibweise 0x87 Einfach durchrechnen. Jeden Einzelterm ansehen, was macht das in Bitschreibweise und die einzelnen Bits miteinander verodern.
Hi, super danke. Jetzt habe ich es kapiert. Dann lag ich ja mit 87hex richtig.
Hi, ich habe noch was. Was bedeutet das? x ist ein Wert von 0-240 #define SED1335_FX 7 if(color) tmp |= (1 << (SED1335_FX - (x % 8))); else tmp &= ~(1 << (SED1335_FX - (x % 8))); tmp ist dann das ergebnis Danke
Vielleicht wäre jetzt doch der Zeitpunkt gekommen, sich mal ein C-Buch, oder zumindest ein C-Online-Tutorial zuzulegen. Ganz ohne grundlegende Kenntnisse wird das nichts. |= bedeutet: die linke Seite wird mit der rechten binär ver-odert. &= bedeutet : die linke Seite wird mit der rechten binär ver-undet. << ist binäres schiften nach links - ist minus % ist modulo () sind Klammern. if und else sind C-Schlüsselworte, die bedeuten "if" und "else". Den Rest bekommst du selber hin. Oliver
Hi, danke. Das wars schon. Ich habe schon ein Display aufen mit Bascom Code. Nun wollte ich nur einige Dinge aus dem C-Code in Bascom umstricken. Das erste waren die Parameter, ich übergebe diese als Gesamter wert und im dem C-Code werden die zusammengestrickt und dann gesendet. Das stimmt nun auch bei mir. Der letzte Code ist für die 4 Farben. Das habe ich noch garnicht umgesetzt. Hätte mich nur interessiert was da rauskommt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.