基于51单片机异步串行通信程序_第1页
基于51单片机异步串行通信程序_第2页
基于51单片机异步串行通信程序_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于51单片机的异步串行通信1 .串行操作方式1,波特率与T1计时器溢出率有关2 .通过中断法进行串行通信#include#define uchar unsigned char#define uint unsigned int/- -宏定义-/ucharcodeprefix=getit ; /前缀-前缀uchar flag,a_receive,I;/*-本程序思想:串行通信方式与单片机进行上位机(串行调整助手)的实时通信,异步串行通信的特点- a :设定计时器1,形成波特率,中断形式串行通信- b :单片机首先发送前缀,接收调试助手发送的数据,然后调试助手- -c:本程序中的中断是串行接收中断标志(RI=1单片机接收一帧数据后,硬件本身发生,后续软件复位,接收下一个中断)。- d :发送1帧的数据后,不进入中断程序(复位发送中断标志,即使时间短也不一定进入中断,可能无法确认中断)-间歇性串行中断功能避免发送中断标志引起的串行中断- - delay ()函数在e :主程序中的应用原因在于使用的波特率低于300,因此数据读取缓慢,用延迟函数等待数据读取-在读取时,通过由T1计时器决定的波特率来确定,并且以一个周期读取1位数据,因此确保使用延迟来完成数据的读取。 -F:采用波特率300的原因是本装置的石英振动频率为12MHZ,300波特率下误差为零。 - -g:上位机发送字符时,只能发送1字节的数据是因为中断程序只进行1次读取操作,即只读取1字节的数据- -* /void init_timer1 ()装模作样TMOD=0X20;TH1=TL1=0X98;TR1=1;以下称为/-/void init_serial ()装模作样REN=1; /-允许串行接收-/SM0=0; /-/SM1=1; /-/以下称为/-串行动作方式设定scon-/void init_s_break ()装模作样EA=1; /总中断ES=1; /串行中断许可位以下称为/-中断串行通信-/void delay ()装模作样uint x,y;for(x=1000; x0; x- )for(y=110; y0; y-;以下称为/-/void main ()装模作样init_timer1 ();init_serial ();init_s_break ();while(1)装模作样if(flag=1)装模作样ES=0;for (i=0; i6; I )装模作样SBUF=prefixi;delay ();while (! TI)TI=0;以下称为SBUF=a_receive;delay ();while (! TI)TI=0;ES=1;flag=0;以下称为以下称为以下称为/- /。void s_ri_bre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论