初级会员
- 积分
- 54
- 金钱
- 54
- 注册时间
- 2016-9-28
- 在线时间
- 12 小时
|
1金钱
/////////////////////////////////////////////////////////////////////
//串行中断,接收上位机数据
/////////////////////////////////////////////////////////////////////
seri_int () interrupt 4 using 1
{
unsigned int i,j;
unsigned char rece_data = SBUF;
unsigned char verify = 0;
if (RI)
{
RI = 0;
if (g_bReceAA)
{
g_bReceAA = 0;
switch (rece_data)
{
case 0x00:
break;
case 0xBB:
g_cReceNum = 0;
break;
default:
i = g_cReceNum;
g_cReceBuf = rece_data;
break;
}
}
else
{
switch (rece_data) //接收到上位机发来的数据
{
case 0xAA: //开始字节0XAA
g_bReceAA = 1; //开始字节的标志
default:
i = g_cReceNum++;
g_cReceBuf = rece_data; //接收上位机发来的每一个字节
break;
}
}
i = (((unsigned int)(g_cReceBuf[1]<<8)) + (unsigned int)(g_cReceBuf[0])); //16位 0XBBAA ??
if ((g_cReceNum == i + 2) && ( i != 0 ))
{
for (j=1; j<g_cReceNum; j++)
{ verify ^= g_cReceBuf[j]; }
if (!verify)
{
g_bReceOk = 1;
BELL = 0;
redled = 0;
g_cCommand = (((unsigned int)(g_cReceBuf[5]<<8)) + (unsigned int)(g_cReceBuf[4])); //接收到的命令2个字节
g_bReceAA = 0;
ES = 0;
}
}
if (g_cReceNum >= sizeof(g_cReceBuf))
{ g_cReceNum=0; }
}
if (TI)
{ TI = 0; }
}
求好心人帮帮 注解下。。
|
|