以51单片机为例,一个简单的串口通信协议C程序
/**************************************************
文件说明:以51 单片机为例,一个简单的串口通信协议C 程序,
协议以0XAA 开头,以0XCC,0X33,0XC3,0X3C 结尾,数据长度不一定
*************************************************/
#define uchar unsigned char
#define uint unsigned int
bit RXAAOK; //接收到0XAA 开头标志
bit RXFRMOK; //接收一帧完整数据标
//接收中断中如果是完整一条数据置位,主函数中
//处理完毕清零
uchar RXBUF[32]; //接收缓存
uchar RX_P; //数据个数
void UARTO_ISR() interrupt 4 //接收中断,不同处理器可能是不同的函数声明
{
uchar i; //用处提取接收缓冲器的字符
if(RI)
{ i=SBUF; //提取字符
RI=0;
if(RXFRMOK==0) //判断是否接收到起始字符0XAA
{ if(RXAAOK) //如果接收到0XAA,继续接收后面的字符
{ RXBUF[RX_P]=i; //字符存入数组