基于51单片机异步串行通信程序.docx

基于51单片机异步串行通信程序.docx

ID:60824679

大小:12.39 KB

页数:3页

时间:2020-12-20

基于51单片机异步串行通信程序.docx_第1页
基于51单片机异步串行通信程序.docx_第2页
基于51单片机异步串行通信程序.docx_第3页
资源描述:

《基于51单片机异步串行通信程序.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于51单片机的异步串行通讯1.串行工作方式1,波特率与T1定时器的溢出率有关2.进行中断法的串行通讯#include#defineucharunsignedchar#defineuintunsignedint//------------------宏定义-------------------//ucharcodeprefix[]="Iget";//前缀---字头ucharflag,a_receive,i;/*--------------------------------------------------------------------

2、------------------------------------------------------本程序的思想:一串口通讯方式一进行单片机与上位机(串口调试助手)的实时通讯,反应异步串行通讯特点---------------------A:设置定时器1,形成波特率,进行中断形式的串口通讯---------------------------------------------------------------------B:单片机先发送字头(prefix),接收到调试助手发送来的数据后紧随发送回调试助手------------------------

3、-----------------C:本程序中进入中断是由串行接收中断标志(RI=1单片机接收到一帧数据后由硬件自身引起,后续软件复位,以接收下次中断)-------D:发送完一帧数据,不进入中断程序,(复位发送中断标志,时间较短也不一定能进入中断,可能中断确认不能完成)-----间歇肯定串口中断功能进行避免由发送中断标志引起的串口中断--------------------------------------------------------------------E:主程序中的delay()函数的应用原因,由于所采用的的波特率较低300,所以读取数据较慢,

4、以延时函数等待数据的读取,--读取时,是在T1定时器决定的波特率确定的,来一个周期,读一个位的数据,所以采用延时保证数据可读完。----------------------------F:采用波特率300的原因在于,本设备晶振频率12MHZ,在300波特率时其误差为零。--------------------------------------------G:在上位机中发送字符时,只能发送一个字节的数据,其原因在于,在中断程序中仅进行了一次读的操作,即只读到一个字节的数据----------------------------------------------

5、-----------------------------------------------------------------//-------------------------------------------------------------------------------------------------------------------*/voidinit_timer1(){TMOD=0X20;TH1=TL1=0X98;TR1=1;}//---------------定时器设置------------------------------

6、----------//voidinit_serial(){REN=1;//------允许串行接收------------//SM0=0;//------工作方式一--------------//SM1=1;//-------------------------------//}//------------------串口工作方式设置SCON---------------------------//voidinit_s_break(){EA=1;//总中断ES=1;//串口中断允许位}//-----------------设置串口中断进行串口通信-------

7、---------------------//voiddelay(){uintx,y;for(x=1000;x>0;x--)for(y=110;y>0;y--);}//-------------------------------------------------------------------//voidmain(){init_timer1();init_serial();init_s_break();while(1){if(flag==1){ES=0;for(i=0;i<6;i++){SBUF=prefix[i];delay();while(!TI)T

8、I=0;}SBUF=a_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。