ich verwende die asurolib v280rc1 und im ordner examples kommt der ordner rc5 test. darin befindet sich dann die test.c datei.
Code:
#include "asuro.h"
#include "rc5.h"
#include <stdlib.h>

#define DIARWD   0x1008
#define DIAFWD   0x1002
#define DIALEFT  0x1004
#define DIARIGHT 0x1006
#define DIASTOP  0x1029

#define TUNERRWD   0x1021
#define TUNERFWD   0x1020
#define TUNERLEFT  0x1011
#define TUNERRIGHT 0x1010
#define TUNERSTOP  0x1025

#define OFFSET	0x3F
#define STEP	5

int speedLeft,speedRight;

void IRFwd(void)
{
  speedRight += STEP;
  speedLeft  += STEP;
  if (speedLeft < 0 && speedLeft >= -OFFSET) speedLeft = 1;
  if (speedRight < 0 && speedRight >= -OFFSET) speedRight = 1;
  FrontLED(ON);
  BackLED(OFF,OFF);
}

void IRRwd(void)
{
  speedRight -= STEP;
  speedLeft  -= STEP;
  if (speedRight > 0 && speedRight <= OFFSET)  speedRight = -1;
  if (speedLeft > 0 && speedLeft <= OFFSET)  speedLeft = -1;
  FrontLED(OFF);
  BackLED(ON,ON);
}

void IRLeft (void)
{
  speedLeft  -= STEP;
  if (speedLeft > 0 && speedLeft <= OFFSET) speedLeft = -1;
  speedRight += STEP;
  if (speedRight < 0 && speedRight >= -OFFSET) speedRight = 1;
  FrontLED(OFF);
  BackLED(ON,OFF);
}

void IRRight (void)
{
  speedLeft  += STEP;
  if (speedLeft < 0 && speedLeft >= -OFFSET) speedLeft = 1;
  speedRight -= STEP;
  if (speedRight > 0 && speedRight <= OFFSET) speedRight = -1;
  FrontLED(OFF);
  BackLED(OFF,ON);
}


void IRStop(void)
{
  speedRight = speedLeft = 0;
  FrontLED(OFF);
  BackLED(OFF,OFF);
}

int main(void)
{

  static unsigned int cmd;
  unsigned char leftDir = FWD, rightDir = FWD;
  char text[7];

  Init();
  InitRC5();

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

      switch (cmd)
      {
      case TUNERRWD :
      case DIARWD :
        SerPrint("rwd\r\n");
        IRRwd();
        break;
      case TUNERFWD :
      case DIAFWD :
        SerPrint("fwd\r\n");
        IRFwd();
        break;
      case TUNERLEFT :
      case DIALEFT:
        SerPrint("lft\r\n");
        IRLeft();
        break;
      case TUNERRIGHT :
      case DIARIGHT:
        SerPrint("rgt\r\n");
        IRRight();
        break;
      case TUNERSTOP :
      case DIASTOP :
        SerPrint("stp\r\n");
        IRStop();
        break;
      }
    }
    if (speedLeft > 0 && speedLeft <  OFFSET) speedLeft += OFFSET;
    if (speedLeft < 0 && speedLeft > -OFFSET) speedLeft -= OFFSET;
    if (speedRight > 0 && speedRight <  OFFSET) speedRight += OFFSET;
    if (speedRight < 0 && speedRight > -OFFSET) speedRight -= OFFSET;

    leftDir = rightDir = FWD;
    if (speedLeft < 0)  leftDir = RWD;
    if (speedRight < 0) rightDir = RWD;

    if (speedLeft >   255) speedLeft  =  255;
    if (speedLeft <  -255) speedLeft  = -255;
    if (speedRight >  255) speedRight =  255;
    if (speedRight < -255) speedRight = -255;

    MotorDir(leftDir,rightDir);
    MotorSpeed(abs(speedLeft),abs(speedRight));
    Msleep(100);
  }
  return 0;
}