当前位置:首页 > 单片机 > 单片机
[导读]此串口处理程序是基于以下的协议写成的:帧内容FRAME=帧头FA+帧长度len(不包括帧头帧尾)+数据流data+帧尾FB。串口中断子程序里对整个数据流进行处理,而不是一个字节一个字节地处理,在中断中等待处理完所有的

此串口处理程序是基于以下的协议写成的:

帧内容FRAME=帧头FA+帧长度len(不包括帧头帧尾)+数据流data+帧尾FB。

串口中断子程序里对整个数据流进行处理,而不是一个字节一个字节地处理,在中断中等待处理完所有的字节。

void Uart_Int(void) interrupt 4 //串口要加帧头与FA帧尾FB
{
unsignedchar len, i;
unsignedint j=0;
unsignedchar serialStart;
if(RI) //收到数据
{
serialStart=SBUF;
RI=0;
if(serialStart==0xFA)
{
while(RI==0);
len=SBUF; //第一个字节是数据包的长度
RI=0; //清零RI以便接收下一个
for(i=0;i{
while(!RI)
{
j++;
if(j>1000)
{

break;//break跳出循环语句
}
}
if(j<1000)
{
serialBuffer[i]=SBUF;
RI=0;
j=0;
}
else
{
break;
}
}
if((i==len+1)&&(serialBuffer[i-1]==0xFB)) //最后一位是0xFB。
{
REN=0; // 清零接收位

serialCmd=TRUE; //接收完毕,收到命令有效,置位1 又说明pc发送的数据单片机接收成功
}
else

return;
}
else
return;
}
else if(!RI && TI) //发送-RI=0,TI=1
{
TI=0;//TI是为了进入中断而故意软件设置的,所以先清0
SBUF=0xFA;
while(!TI);
TI=0;
len=serialBuffer[0]; //发送的第一个字节是包的长度
for(i=0;i{
SBUF=serialBuffer[i];
while(!TI); //等待发送完毕
TI=0;
}
SBUF=0xFB;
while(!TI);
TI=0;
REN=1;
//ren=receive enable
}
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

单片机内部有很多的特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称,当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的...

关键字: C51 数据类型 扩充定义

数据元(Data Element),也称为数据元素,是用一组属性描述其定义、标识、表示和允许值的数据单元,在一定语境下,通常用于构建一个语义正确、独立且无歧义的特定概念语义的信息单元。数据元可以理解为数据的基本单元,将若...

关键字: C51 数据类型

摘 要:对电流和电压信号进行谐波分析 ,确定谐波的严重程度和特征是防范和治理高次谐波的第一步 。据此研究了应用Matlab 软件中的快速傅里叶变换来求取供电系统电流电压信号的谐波幅值和相位的方法 ,并编成子程序 ,应...

关键字: 谐波分析 供电系统 子程序

▼点击下方名片,关注公众号▼欢迎关注【玩转单片机与嵌入式】公众号,回复关键字获取更多免费资料。回复【加群】,限时免费进入知识共享群;回复【3D封装库】,常用元器件的3D封装库;回复【电容】,获取电容、元器件选型相关的内容...

关键字: C51 MDK RealView

汇编——子程序调用参数传递的三种方式(示例程序:三个数累加求和)

关键字: 子程序 格式

在Keil C51软件中51单片机的中断服务和外设驱动程序的开发

关键字: keil5 编译 C51

Intel公司1980年推出了MCS-51系列单片机:集成 8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。 80C5...

关键字: C51 KEIL 编程

c上标3下标5怎么算用计算机,c上标3下标5怎么算

关键字: C51 KEIL

▼点击下方名片,关注公众号▼大家好,很高兴和各位一起分享我的第16篇原创文章,喜欢和支持我的工程师,一定记得给我点赞、收藏、分享。加微信[xyzn3333]与作者沟通交流,免费获取更多单片机与嵌入式的海量电子资料。很多初...

关键字: 51单片机 C51

常看见初学者要求使用_at_,这是一种谬误,把C当作ASM看待了。在C中变量的定位是编译器的事情,初学者只要定义变量和变量的作 用域,编译器就把一个固定地址给这个变量。

关键字: C51 单片机 误区 注意事项
关闭
关闭