⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 framedispose.c

📁 small RTOS 嵌入式实时多任务开发
💻 C
字号:

#include "config.h"

#ifndef TRUE
#define TRUE  1
#endif

#ifndef FALSE
#define FALSE 0
#endif

extern volatile Info ControlByte;  // 声明
static volatile uint8 Sequence=0xff;  // 定义


void Transmit(uint8 Address, uint8 *p, uint8 Type)
{
  Delay(_10MS);// 由于2401的发射有延迟,故此10ms的延迟用于保证数据接收方发送应答信息时,
                                          //  数据发送方的2401已经处于接收状态了 
  ChangeState(_Tx_Word);  // 2401进入发送状态,且有1ms的延迟
  for(AddressCnt=0;AddressCnt<_AddrWidth;AddressCnt++)
    { _TX_SPI(Address); }
  _TX_SPI(Type); _TX_SPI(SelfAddr);
  for(DataCnt=0;DataCnt<_DataWidth;DataCnt++)
    { _TX_SPI(*(p+DataCnt)); }
  _2401_START_TX;  // 启动2401的发送过程,且有5ms的延迟
  ChangeState(_Rx_Word); // 2401进入接收状态,且有1ms的延迟
}

uint8 Dispose(uint8 Address)  
{
  uint8 err; 
  Address=Address;
  if((uint8)Sequence == (uint8)ControlByte.FrameSequence)                
    { 
     err=_ThisFrameHasReceived;
     _TURN_ON_3STA;return(err);
    } 
  else 
    {
      if((uint8)(Sequence+1) == ControlByte.FrameSequence)
        {
          Sequence++;
          switch((uint8)ControlByte.LastFrame)
               {
                  case  TRUE  :  err=_AllFramesHasReceived;
                                 Sequence=0xff; _TURN_ON_SCH;
                                 break;
                  default     :  err=_ReceivedANewFrame; 
                                 _TURN_ON_RIGHT; break;
               }
          return(err);
        } 
      else err=_LostAtLeastOneFrame; _TURN_ON_WRONG;
    }                                                            
  return(err);
}




⌨️ 快捷键说明

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