📄 com.c
字号:
#define COM_GLOBALS
#include <includes.h>
//********************************通信数据处理程序**********************************
INT8U ArrCompare(INT8U *p1,INT8U *p2,INT8U Len) //比较两数组是否相等
{
int i;
INT8U fEQU=1;
INT8U a1,a2;
for(i=0;i<Len;i++)
{
a1=*(p1+i);
a2=*(p2+i);
if(a1!=a2)fEQU=0;
}
return(fEQU);
}
void ArrCopy(INT8U *p2,INT8U *p1,INT8U Len) //将P1复制到P2,<P2=P1>
{
int i;
INT8U a1;
for(i=0;i<Len;i++)
{
a1=*(p1+i);
*(p2+i)=a1;
}
}
//****************************************串口数据收发程序***************************************
INT8U SerTxArr(INT8U ArrHead,INT8U *p,INT8U Len) //从串口发送一字节数据,数据格式为 0x7e 0x82 xx-xx 0x33
{
INT8U i;
ACC=SER_HEAD0;
TB8=!P;
SBUF=SER_HEAD0;
cntSerOverTime=0;
fSerOverTime=0;
while((TI==0)&&(fSerOverTime==0));
TI=0;
if(fSerOverTime==1)return(1);
ACC=SER_HEAD1;
TB8=!P;
SBUF=SER_HEAD1;
cntSerOverTime=0;
fSerOverTime=0;
while((TI==0)&&(fSerOverTime==0));
TI=0;
if(fSerOverTime==1)return(1);
ACC=ArrHead;
TB8=!P;
SBUF=ArrHead;
cntSerOverTime=0;
fSerOverTime=0;
while((TI==0)&&(fSerOverTime==0));
TI=0;
if(fSerOverTime==1)return(1);
for(i=0;i<Len;i++)
{
ACC=*(p+i);
TB8=!P;
SBUF=*(p+i);
cntSerOverTime=0;
fSerOverTime=0;
while((TI==0)&&(fSerOverTime==0));
TI=0;
if(fSerOverTime==1)return(1);
}
ACC=SER_TIR;
TB8=!P;
SBUF=SER_TIR;
cntSerOverTime=0;
fSerOverTime=0;
while((TI==0)&&(fSerOverTime==0));
TI=0;
if(fSerOverTime==1)return(1);
return(0);
}
INT8U SerRxArr(INT8U ArrHead,INT8U *p,INT8U Len) //从串口接收一串数据,数据格式为 0x7e 0x82 xx-xx 0x33
{
INT8U i;
INT8U rxdatabuf;
cntSerOverTime=0;
fSerOverTime=0;
DebReg=0x00;
while((RI==0)&&(fSerOverTime==0));
rxdatabuf=SBUF;
RI=0;
if(fSerOverTime||(rxdatabuf!=SER_HEAD0))
{
DebReg=0x01;
// return(1);
}
// DebReg=0x00;
cntSerOverTime=0;
fSerOverTime=0;
while((RI==0)&&(fSerOverTime==0));
rxdatabuf=SBUF;
RI=0;
if(fSerOverTime||(rxdatabuf!=SER_HEAD1))
{
DebReg=0x02;
// return(1);
}
// DebReg=0x00;
cntSerOverTime=0;
fSerOverTime=0;
while((RI==0)&&(fSerOverTime==0));
rxdatabuf=SBUF;
RI=0;
if(fSerOverTime||(rxdatabuf!=ArrHead))
{
DebReg=0x03;
// return(1);
}
// DebReg=0x00;
for(i=0;i<Len;i++)
{
cntSerOverTime=0;
fSerOverTime=0;
while((RI==0)&&(fSerOverTime==0));
*(p+i)=SBUF;
RI=0;
if(fSerOverTime)
{
DebReg=0x04;
// return(1);
}
}
// DebReg=0x00;
cntSerOverTime=0;
fSerOverTime=0;
while((RI==0)&&(fSerOverTime==0));
rxdatabuf=SBUF;
RI=0;
if(fSerOverTime||(rxdatabuf!=SER_TIR))
{
DebReg=0x05;
// return(1);
}
if(DebReg==0x00)return(0);
else return(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -