mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik GLCD Ansteuerung in C


Autor: Trexis5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: asdf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kurz gesagt - schei.e
0x10 | (1 << 5) = 0x30

die restlichen schiebeoperationen und "oder" sind absolut witzlos, da 
die (0 << x) immer 0 ist...

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: Trexis5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Trexis5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

super danke.
Jetzt habe ich es kapiert.
Dann lag ich ja mit 87hex richtig.

Autor: Trexis5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Trexis5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.