Forum: Mikrocontroller und Digitale Elektronik Graphic LCD 84x48 - Nokia 5110


von Torsten (Gast)


Lesenswert?

Hallo

Könnte mir jemand bitte erklären was die Befehl macht ?

void spisend(unsigned char x){
  unsigned char i;
  for(i=8;i>0;i--){
    SCK = 0;
    if((x&0x80)){
      DAT = 1;
    } else {
      DAT = 0;
    }
    SCK = 1;
    x <<= 1;
  }
}

Danke im Voraus

von Karl H. (kbuchegg)


Lesenswert?

Torsten schrieb:
> Hallo
>
> Könnte mir jemand bitte erklären was die Befehl macht ?

Welcher?

von Torsten (Gast)


Lesenswert?

void spisend

von Eumel (Gast)


Lesenswert?

Das ist eine Funktion keine Befehl. Und so wie es aussieht Software SPI.

von Karl H. (kbuchegg)


Lesenswert?

Torsten schrieb:
> void spisend

Du meinst: die ganze Funktion?

Nimm an, die Funktion spisend wird mit dem Byte 0x5A aufgerufen (als 
Bitmuster ist das 0b01011010).

Du spielst Computer und arbeitest die Funktion ab. Was passiert ganz 
konkret. Wei verändern sich die Pins SCK und DAT während der Abarbeitung 
dieser Funktion. Und dann siehst du mal zu, ob du da ein Muster darin 
findet, welches mit deiner Vorgabe des BItmusters in x zusammenhängen 
könnte.

Sorry. Aber irgendwann muss jeder mal anfangen fremden Code zu 
analysieren. Diese Funktion ist nicht kompliziert, ihre Funktionsweise 
ist sehr überschaubar. Auch wenn ich zugeben muss, dass sie sich 
vielleicht nicht sofort erschliesst, wenn man sowas noch nie gesehen 
hat. Aber irgendwann muss jeder mal ins kalte Wasser springen und 
einfach machen. Da kommt so eine kleine, schnuckelige Funktion gerade 
recht.

von Andreas D. (rackandboneman)


Lesenswert?

Diese Funktion sendet vermutlich ein 8-Bit-Wort via SPI-Protokoll über 
zwei mit #define festzulegende Pins, und zwar mit dem MSB beginnend (LSB 
zuerst liesse sich erreichen wenn man die 0x80 in 0x01 ändert und den 
Shiftoperator umdreht).

Übrigens ist es hilfreich wenn man mit C-Beispielen ankommt Compiler 
sowie Host-und Zielplattform zu nennen.

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
Noch kein Account? Hier anmelden.