Asuro Programmcode

OP #3280001
Lesenswert?
• ▲
▼
Hallo,

könnte mir wohl mal einer den nachfolgenden Befehl Zeile für Zeile 
beschreiben?

#include <asuro.h>
#include "rc5.h"
#include <stdlib.h>

#define LINKS   0x100b
#define RECHTS   0x100a
#define STOPP  0x102b
#define VORWAERTS  0x102a
#define RUECKWAERTS  0x102e

#define MAXSPEED  180




int main(void)
{

  static unsigned int cmd; //Lesepuffer für IR-Empfänger

  char text[7];
  unsigned char taste;
  Init();
  InitRC5();

  SerPrint("RC5 Test\r\n");

  FrontLED(OFF);
  BackLED(OFF, OFF);

   MotorDir(FWD, FWD);
   MotorSpeed(0, 0);
   Msleep(100);

  while (1)
  {
    taste=PollSwitch();
    if (taste> 0)
  {
  MotorSpeed(0,0);
  FrontLED(OFF);
    }

    cmd = ReadRC5();
    if (cmd)
    {
      cmd &= RC5_MASK;
      itoa(cmd, text, 16);
      SerPrint(text);
      SerPrint("\r\n");

      switch (cmd)
      {
      case LINKS :
    SerPrint("LINKS\r\n");
    BackLED(ON, OFF);
    FrontLED(OFF);
    MotorDir(FWD, FWD);
    MotorSpeed(0, 200);
    break;
    case RECHTS :
    SerPrint("RECHTS\r\n");
    BackLED(OFF, ON);
    FrontLED(OFF);
    MotorDir(FWD, FWD);
    MotorSpeed(MAXSPEED, 0);
    break;
    case VORWAERTS :
    SerPrint("VORWAERTS\r\n");
    BackLED(OFF, OFF);
    FrontLED(ON);
    MotorDir(FWD, FWD);
    MotorSpeed(150, 165);
    break;
    case RUECKWAERTS :
    SerPrint("RUECKWAERTS\r\n");
    FrontLED(OFF);
    BackLED(ON, ON);
    MotorDir(RWD, RWD);
    MotorSpeed(150, 160);
    break;
    case STOPP :
    SerPrint("STOPP\r\n");
    BackLED(OFF, OFF);
    FrontLED(OFF);
    MotorSpeed(0, 0);
    MotorDir(FWD, FWD);
    break;
    }
    }

    Msleep(100);
  }
  return 0;
}
Gast #3281286
Lesenswert?
• ▲
▼
RC5_MASK ist irgend ein Makro mit einer Bit-Maske.
Dieses Makro (#define RC5_MASK) muss in einer der Header-Dateien stehen.
Dann wird vielleicht deutlicher was da passiert.

Wenn cmd > 0 ist wird cmd mit der Maske "ver-und-et".
Daraus resultierenden dann je nach Wert von cmd verschiedene Werte, die 
wiederum für unterschiedliche Befehle stehen.

itoa macht aus Integer-Werten ASCII-Zeichen.

Naja und SerPrint gibt das ganze dann vermutlich auf die serielle 
Schnittstelle.

Gruß

Christian

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.