资源描述:
《实验2(双机通信)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验评佑等级很好好一般差实验操作能力实验结果实验分析实验思考总结实验成绩教师签名一、实验目的Ø掌握单片机串口通信的设计方法,了解双机通信的原理。二、实验内容编写并调试一个双机通信的程序,已知8051的串行口采用方式1进行通信晶振频率为11.0592MHz,选用定时器T1作为波特率发生器,T1工作于方式2,要求通信的波特率为9600。三、实验步骤Ø打开Keil程序,执行菜单命令“Project–“NewProject”创建“数据排序”项目,并选择单片机型号为AT89C51;Ø执行菜单命令“New”创建文件,输入源程序,保存为“双单片机串口通信.A51”。在
2、Project”栏的File项目管理窗口中右击文件组,选择“AddFiletoGroup‘SourceGrop1’”将源程序“数据排序.A51”添加到项目中。Ø执行菜单命令“Project”->“OptionForTarget‘Target1’”,在弹出的对话框中选择“Output”选项卡,选中“GreateHEXFile”。Ø执行菜单命令“Project”->“BuildTarget”,编译源程序。如果编译成功,则在“OutputWindow”窗口中显示没有错误,并创建了“双单片机串口通信.HEX”文件。Ø在PROTEUS仿真平台上建立参考图系统,并将
3、程序上载到虚拟芯片上运行。一、实验调试及结果Ø双机通信实验代码:(1)发送程序:ORG0000HLJMPTRSORG0030HTRS:MOVR7,#10HMOVR0,#40HMOVA,#0TRS1:MOV@R0,AINCAINCR0DJNZR7,TRS1MOVSCON,#90HMOVPCON,#80HMOVR0,#40HMOVR2,#10HLOOP:MOVA,@R0MOVC,PMOVTB8,CMOVSBUF,AMOVP1,ALCALLDELAYWAIT:JBCTI,CONTSJMPWAITCONT:JBCRI,RESJMPCONTRE:MOVA,SBUF
4、CJNEA,#00H,LINCR0DJNZR2,LOOPL:SJMPLDELAY:MOVR7,#3DD1:MOVR6,#0FFHDD2:MOVR5,#0FFHDJNZR5,$DJNZR6,DD2DJNZR7,DD1RETEND(2)接收程序:ORG0000HLJMPREVORG30HREV:MOVSCON,#90HMOVPCON,#80HMOVR7,#10HLOOP:JBCRI,READSJMPLOOPREAD:MOVA,SBUFJBPSW.0,ONEJBRB8,RIGHTSJMPRIGHTONE:JBRB8,ERRRIGHT:SWAPAMOVP1,AL
5、CALLDELAYMOVSBUF,#00HDJNZR7,LOOPL:SJMPLERR:MOVP1,#0FFHLCALLDELAYMOVSBUF,#0FFHDJNZR7,LOOPLL:SJMPLLDELAY:MOVR7,#3DD1:MOVR6,#0FFHDD2:MOVR5,#0FFHDJNZR5,$DJNZR6,DD2DJNZR7,DD1RETENDØ实验结果:1.根据实验手册,并利用PROTEUS仿真平台绘出如图1所示的实验图:图12.执行程序后,显示的结果:发送方的数码管显示的7,而接收方显示的也是7,证明实验结果是正确的,如图2:图2一、实验分析Ø实
6、验代码分析:本实验的程序主要分成发送部分和接收部分,这两部分的程序大体上有很多相似之处,但也有些许不同的地方。下面着重就发送部分的程序进行分析。由于实验要求规定串行口采用方式1,且晶振的频率为11.0592MHz等。所以假设SMOD=0,则根据相应的公式,可计算出定时器的初值为FDH。因此在程序的开始的地方需对单片机初始化。在本实验中这部分的功能是由TRS部分来实现的,比如指令MOVSCON,#90H是设置串行口的工作方式。程序中的LOOP部分是发送数据的代码,将数据送入缓冲器SBUF中。再往后就是回送部分与延时部分,在此就不赘述了。Ø实验结果分析:通过
7、对比实验结果中的图2可知,发送方通过串行口TXD将数据传送给接收机,并通过RXD口接收回送的数据,并通过P1口由数码管显示发送的数据。本实验发送的是从0至F的16个数据。由图可知,发送方显示的7,而接收方显示的也是7,证明实验原理图连接无误,实验代码也能完成基本功能。一、实验思考与总结