?? comport.c
字號(hào):
#include "common.h"
byte RTBuf[MAX_COM_BUF_SIZE];//串口緩沖區(qū)
fastram byte RTFlag, //串口狀態(tài)標(biāo)志
RTLen, //串口數(shù)據(jù)長(zhǎng)度
RTPtr; //串口收發(fā)指針
//串口發(fā)送
void ComSend()
{
if(RTPtr < RTLen) //數(shù)據(jù)未發(fā)完
{
WriteCom(RTBuf[RTPtr]); //發(fā)送下一個(gè)字節(jié)
RTPtr++;
}
else
{
StopComSend(); //停止發(fā)送
RTFlag = 0; //設(shè)置接收標(biāo)志
}
}
//串口接收
void ComReceive(byte dat)
{
//正在處理數(shù)據(jù)中,不再接收
if (RTFlag > 1)
{
return ;
}
if (RTFlag == 0)
{
if (dat == FRAMEHEAD) //收到幀頭
{
RTBuf[0] = FRAMEHEAD;
RTPtr = 1;
RTFlag = 1;
RTLen = 5;
}
return ;
}
else
{
RTBuf[RTPtr] = dat;
RTPtr++;
if (RTPtr >= RTLen)//接收到足夠數(shù)據(jù)
{
RTFlag = 2;
return ;
}
if (RTPtr >= MAX_COM_BUF_SIZE)//意外處理命令超長(zhǎng)
{
RTFlag = 0;
return ;
}
}
}
//串口分析
void ComAnalyse()
{
if(RTFlag != 2)return;
if(RTBuf[2] != 0x35)
{
RTFlag = 0;
return;
}
RTFlag = 3;
switch(RTBuf[1])
{
case 0x31:
P0 = 1;
break;
case 0x32:
P0 = 2;
break;
case 0x33:
P0 = 3;
break;
default:
RTFlag = 0;
return;
}
RTBuf[1] = RTBuf[1] + 0x80;
RTBuf[5] = RTBuf[4] + 1;
RTBuf[6] = RTBuf[4] + 2;
RTBuf[7] = RTBuf[4] + 3;
RTLen = 8;
RTPtr = 0;
LED = !LED; //發(fā)送數(shù)據(jù)指示
StartComSend();//啟動(dòng)發(fā)送
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -