串口数据的接收与处理_串口调试助手怎么发送指令

串口数据的接收与处理_串口调试助手怎么发送指令实际操作PC端串口调试助手软件与实际51单片机相互通信#include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar flag,a,

实际操作PC端串口调试助手软件与实际51单片机相互通信   #include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar flag,a,i,j; uchar code table0[]=”I get “; uchar code table1[]=”   ”;//回车换行 void String_Timer2_init()//串口定时器初始化函数 { TMOD=0x20;//0010 0000定时器工作方式为方式2,8位自动重装。 TH1=0xfd;//初始化计数器高8位:1111 1101 TL1=0xfd;//初始化计数器低8位 TR1=1;//启动定时器1 SM0=0;//设定串口工作方式为方式1(10位异步通信) SM1=1;//设定串口工作方式 REN=1;//打开串口中断接收允许 EA=1;//打开全局中断 ES=1;//打开串口中断允许位 } void main() { String_Timer2_init();//串口定时器初始化函数 while(1)//固定循环 { if(flag==1)//判断检测发送数据标志位变量flag是否为1,若为1则运行以下单片机发送数据缓存寄存器给PC端串口调试助手发送数据。 { ES=0;//关闭串口中断允许位,阻止进入串口中断服务程序。为什么要设置ES=0?由于接下来单片机发送数据缓存寄存器给PC端串口调试助手发送数据结束后,TI(即串口发送中断标志位)=1,申请串口中断,若ES不设置为0,在TI(即串口发送中断标志位)=1时,申请串口中断进入串口中断服务程序执行flag=1,又得回来再次判断if(flag==1),形成固定循环,导致无法运行其他程序。 for(i=0;i<6;i++)//循环发送数据个数 { SBUF=table0[i];//将table0数组中的数据存入单片机发送数据缓存寄存器 while(!TI);//判断串口发送中断标志位是否为1,若为1则单片机发送数据缓存寄存器给PC端串口调试助手发送数据结束。为什么在此编写while(!TI)?由于需要把单片机发送数据缓存寄存器保存的数据发送给PC端串口调试助手。 TI=0;//TI(即串口发送中断标志位)=0,表示单片机发送数据缓存寄存器可重新给PC端串口调试助手发送数据,不可申请串口中断。 } SBUF=a;//表示单片机接收数据缓存寄存器把从串口中断服务程序的某数据(用数值变量a表示)赋给单片机发送数据缓存寄存器。为什么?由于串口定时器初始化函数中REN(串口中断接收允许)=1与ES(串口中断允许位)=1被初始化后,就可以进入串口中断服务程序PC端串口调试助手给单片机发送某数据,然后单片机接收数据缓存寄存器接收PC端串口调试助手发来的某数据。 while(!TI);//判断串口发送中断标志位是否为1,若为1则单片机发送数据缓存寄存器给PC端串口调试助手发送数据结束。为什么在此编写while(!TI)?由于需要把单片机发送数据缓存寄存器保存的数据发送给PC端串口调试助手。 TI=0; //TI(即串口发送中断标志位)=0,表示单片机发送数据缓存寄存器可重新给PC端串口调试助手发送数据,不可申请串口中断。 for(j=0;j<3;j++)//循环发送数据个数 { SBUF=table1[j];//将table1数组中的数据存入单片机发送数据缓存寄存器 while(!TI);//判断串口发送中断标志位是否为1,若为1则单片机发送数据缓存寄存器给PC端串口调试助手发送数据结束。为什么在此编写while(!TI)?由于需要把单片机发送数据缓存寄存器保存的数据发送给PC端串口调试助手。 TI=0;//TI(即串口发送中断标志位)=0,表示单片机发送数据缓存寄存器可重新给PC端串口调试助手发送数据,不可申请串口中断。 } ES=1;//打开串口中断允许位,允许进入串口中断服务程序。 flag=0;//发送数据标志位变量flag置0 } } } void string() interrupt 4//串口中断服务程序(函数) { RI=0;//表示单片机接收数据缓存寄存器可重新接收PC端串口调试助手发送数据,不可申请串口中断。 a=SBUF;//表示PC端串口调试助手给单片机接收数据缓存寄存器发送某数据,然后单片机接收数据缓存寄存器接收PC端串口调试助手发来的某数据,并赋给数值变量a。 flag=1;//发送数据标志位变量flag置1。 }

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/47739.html

(0)
上一篇 2024年 9月 4日
下一篇 2024年 9月 4日

相关推荐

关注微信