Asuro Programmcode

OP #3280001
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
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

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.