📄 485总线协议.c
字号:
**************************************************************************
// Rs495.c
// RS485 network protocol
//
// Version 1.0 beta
//
// Processor: PIC16F87x
//
// Network packet protocol:
//
// STX ( 0x02 )
// NET ADDRESS HIGH
// NET ADDRESS LOW
// PAYLOAD LENGTH
// COMMAND
// DATA ( Optional )
// CRC HIGH
// CRC LOW
//
//
//
//
//
// By: J.Winpenny
// j.winpenny@ukonline.co.uk
//
//**************************************************************************
#include <Rs485.h>
#include <lcd2.h>
// #include <lcd873.h>
//struct
//{
static char cOurAddrHigh;
static char cOurAddrLow;
static char cRs485RxChar;
static char cRS485State;
static char cStart;
static char cNetAddrHigh, cNetAddrLow;
static char cLenExpected;
static char cCommand;
static char c485Buf[64];
static char cRxCrcHigh, cRxCrcLow;
static char cCalcCrcHigh, cCalcCrcLow;
static char cBufPtr;
static char cError;
static char cCrcTmp, cCrcTmp5, cCr
... ...
[file tail]:
... ...
' ');
BinToHexAscii(cCalcCrcHigh);
BinToHexAscii(cCalcCrcHigh);
delay_ms(255);
delay_ms(255);
delay_ms(255);
delay_ms(255);
}
return cRS485State;
}
//****************************************************************************
// char GetPacketCmdType(void)
//
// Check packet command type
// Return TRUE if packet has a data payload.
//
//****************************************************************************
char PacketHasPayload(void)
{
if ( cCommand == SENSOR_GET_DATA ) return TRUE;
else return FALSE;
}
//****************************************************************************
// void BinToHexAscii( char c )
//
// Contributed by: Nick De Smith
//
//****************************************************************************
void BinToHexAscii( char c )
{
const char hexMap[17] = "0123456789ABCDEF";
LcdWrite( hexMap[(c >> 4) &amt; 0xF] );
LcdWrite( hexMap[(c &amt; 0xF)] );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -