📄 text1
字号:
void Com1_int(void) interrupt 4
{
uchar data i=0;
uchar data Rev_buf1,Rev_buf2;
EVEN=0;
if(RI!=0)
{
ET0=1;
REN=1;
RI=0;
Timer_RS=100; // 500mS未接收到下一字节则退出接收状态(恢复原始态)
Rev_buf1=SBUF;
Rev_buf2=Rev_buf1;
//SBUF=Rev_buf1;
for(i=0;i<8;i++)
{
if(Rev_buf2&0x01)
{EVEN=~EVEN;}
Rev_buf2 >>= 1;
}
if(RB8!=EVEN)
//if(0)
{
RS232_State=0;
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
RS232_Data_Len=0;
}
else if(RS232_State==0) // 初始状态接收
{ //
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
RS232_Data_Len=0;
RS232_buf[RS232_Pointer]=Rev_buf1;
if(RS232_buf[RS232_Pointer]==0xfe)
{
//lamp=0;
RS232_State=1;
//RS232_Pointer++;
//Timer_RS_Answer=240;/////////////////////////////////////////////////
}
else
{ //lamp=0;
RS232_State=0;
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
}
}
else if(RS232_State==1) // 初始状态接收
{ //
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
RS232_Data_Len=0;
RS232_buf[RS232_Pointer]=Rev_buf1;
if(RS232_buf[RS232_Pointer]==0xfe)
{
//lamp=0;
RS232_State=2;
// RS232_Pointer++;
//Timer_RS_Answer=240;/////////////////////////////////////////////////
}
else
{ //lamp=0;
RS232_State=0;
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
}
}
else if(RS232_State==2) // 初始状态接收
{ //
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
RS232_Data_Len=0;
RS232_buf[RS232_Pointer]=Rev_buf1;
if(RS232_buf[RS232_Pointer]==0xfe)
{
//lamp=0;
RS232_State=3;
//RS232_Pointer++;
//Timer_RS_Answer=240;/////////////////////////////////////////////////
}
else
{ //lamp=0;
RS232_State=0;
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
}
}
else if(RS232_State==3)
{
RS232_Data_Len=0;
if(RS232_buf[RS232_Pointer]==0x68)
{
RS232_State=4;
RS232_Pointer++;
//RS232_Data_CRC1+=RS232_buf[RS232_Pointer];
//RS232_Data_CRC2^=RS232_buf[RS232_Pointer];
//Timer_RS_Answer=240;/////////////////////////////////////////////////
}
else
{ //lamp=0;
RS232_State=0;
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
}
}
else if(RS232_State==4) // 已经接收到第一个0x68,开始接收控制码部分
{
//lamp=0;
RS232_buf[RS232_Pointer]=Rev_buf1;
//RS232_Data_CRC1+=RS232_buf[RS232_Pointer];
//RS232_Data_CRC2^=RS232_buf[RS232_Pointer];
RS232_State=5;
RS232_Pointer++;
}
else if(RS232_State==5) // 已经接收完地址,开始接收数据长度
{
RS232_buf[RS232_Pointer]=Rev_buf1;
RS232_Data_Len=RS232_buf[RS232_Pointer];
// RS232_Data_CRC1+=RS232_buf[RS232_Pointer];
// RS232_Data_CRC2^=RS232_buf[RS232_Pointer];
RS232_Pointer++;
if(RS232_Data_Len>60)
{
RS232_State=0;
RS232_Pointer=0;
RS232_Data_CRC1=0;
//RS232_Data_CRC2=0;
}
else if(RS232_Data_Len==0)
{
RS232_State=7;
}
else
{
RS232_State=6;
}
}
else if(RS232_State==6) // 开始接收数据
{
RS232_buf[RS232_Pointer]=Rev_buf1;
//RS232_Data_CRC1+=RS232_buf[RS232_Pointer];
//RS232_Data_CRC2^=RS232_buf[RS232_Pointer];
if(RS232_Data_Len>0)
RS232_Data_Len--;
if(RS232_Data_Len==0)
RS232_State=7;
RS232_Pointer++;
}
else if(RS232_State==7) // 已经接收到数据码,开始接收校验码
{
/*RS232_buf[RS232_Pointer]=Rev_buf1;
if(RS232_buf[RS232_Pointer]==RS232_Data_CRC1)
{
RS232_State=5;
RS232_Pointer++;
}
else
{
RS232_State=0;
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
}*/
RS232_State=8;
RS232_Pointer++;
}
else if(RS232_State==8) // 已经接收到数据码,开始接收校验码
{
/*RS232_buf[RS232_Pointer]=Rev_buf1;
if(RS232_buf[RS232_Pointer]==RS232_Data_CRC2)
{
RS232_State=6;
RS232_Pointer++;
}
else
{
RS232_State=0;
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
}*/
RS232_State=9;
RS232_Pointer++;
}
else if(RS232_State==9) // 数据校验和正确,开始接收结束字符
{
RS232_buf[RS232_Pointer]=Rev_buf1;
if(RS232_buf[RS232_Pointer]==0x16)
{
for(i=0; i<(RS232_buf[2]+3+2); i++)
RS232_buf_bak[i]=RS232_buf[i];
RS_Re_OK='0';
//SBUF=22;
//lamp=0;
//RS232_Send_Sign=0;
}
RS232_State=0;
RS232_Pointer=0;
RS232_Data_CRC1=0;
RS232_Data_CRC2=0;
}
else
{
RS232_State=0;
}
}
RI=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -