📄 framedispose.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 + -