d_ioctrl.c

来自「乐高机器人的源码,开发平台是IAR_for_AVR.」· C语言 代码 · 共 103 行

C
103
字号
//
// Date init       14.12.2004
//
// Revision date   $Date:: 16-05-06 9:50                                     $
//
// Filename        $Workfile:: d_ioctrl.c                                    $
//
// Version         $Revision:: 11                                            $
//
// Archive         $Archive:: /LMS2006/Sys01/Main/Firmware/Source/d_ioctrl.c $
//
// Platform        C
//


#include  <string.h>
#include  "stdconst.h"
#include  "m_sched.h"
#include  "d_ioctrl.h"
#include  "d_ioctrl.r"

/* Enum related to State */
enum
{
  RX_I2C      = 1,
  TX_I2C      = 2,
  UNLOCK_I2C  = 3,
  WAIT_I2C    = 4
};


static    UBYTE volatile State;

void      dIOCtrlInit(void)
{
  IOCTRLInit;
  State = UNLOCK_I2C;
}

void      dIOCtrlSetPower(UBYTE Power)
{
  INSERTPower(Power);
}

void      dIOCtrlSetPwm(UBYTE Pwm)
{
  INSERTPwm(Pwm);
}

void      dIOCtrlTransfer(void)
{
  UBYTE   B;

  CHECKTime(B);
  if (B)
  {
    switch(State)
    {
      case TX_I2C:
      {
        FULLDataTx;
        State = RX_I2C;
      }
      break;
      case RX_I2C:
      {
        FULLDataRx;
        State = TX_I2C;
      }
      break;
      case UNLOCK_I2C:
      {
        UNLOCKTx;
        State = WAIT_I2C;
      }
      break;
      case WAIT_I2C:
      {

        /* Intermediate state as unlock string is 47  */
        /* characters which is a little more than 1mS */
        State = TX_I2C;
      }
      break;
      default:
      {
        UNLOCKTx;
        State = WAIT_I2C;
      }
      break;
    }
    SETTime;
  }
}



void      dIOCtrlExit(void)
{
  IOCTRLExit;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?