资源描述:
《双单片机串口通信实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、重庆交通大学学生实验报告实验课程名称单片机原理与应用实验名称双单片机串口通信实验实验类型设计性实验开课实验室电子实验室学院信息科学与工程学院学生姓名学号开课时间2012至2013学年第2学期实验评佑等级很好好一般差实验操作能力实验结果实验分析实验思考总结实验成绩教师签名一、实验目的掌握单片机串口通信的设计方法,了解双单片机通信的原理二、实验内容1、编写发送方程序,接收方程序发送方代码ORG0000HLJMPTRSORG0030HTRS:MOVR7,#10HMOVR0,#40HMOVA,#0TRS1:MOV@R0,AINCAINCR0DJNZR7,TR
2、S1MOVSCON,#90H;设置串行口工作方式2MOVPCON,#80H;波特率为FOSC/32MOVR0,#40H;设置片内数据指针MOVR2,#10H;数据长度送R2LOOP:MOVA,@R0;取数据送AMOVC,P;奇偶位送TB8MOVTB8,CMOVSBUF,A;启动发送MOVP1,ALCALLDELAYWAIT:JBCTI,CONT;判发送完标志SJMPWAITCONT:JBCRI,RE;准备接收回送标SJMPCONTRE:MOVA,SBUF;接收回送标志CJNEA,#00H,L;回送标志错误,结INCR0;回送标志正确,继DJNZR2,
3、LOOP;发送16个数据L:SJMPLDELAY:MOVR7,#3DD1:MOVR6,#0FFHDD2:MOVR5,#0FFHDJNZR5,$DJNZR6,DD2DJNZR7,DD1RETEND接收方代码ORG0000HLJMPREVORG30HREV:MOVSCON,#90H;设置串行口工作方式2,允许接收MOVPCON,#80H;波特率为focs/32MOVR7,#10HLOOP:JBCRI,READ;等待接收数据并清0标志位RISJMPLOOPREAD:MOVA,SBUF;读入一帧数据JBPSW.0,ONE;判接收端奇偶位JBRB8,RIGHT
4、;判发送端奇偶位SJMPRIGHTONE:JBRB8,ERRRIGHT:SWAPA;接收正确,高低位交换MOVP1,A;送往P1显示LCALLDELAY;延时MOVSBUF,#00H;回送正确标DJNZR7,LOOP;就收未完,继?L:SJMPLERR:MOVP1,#0FFH;就收出错,显示FFLCALLDELAY;延时MOVSBUF,#0FFH;回送出错标志DJNZR7,LOOP;接收未完,继续LL:SJMPLLDELAY:MOVR7,#3DD1:MOVR6,#0FFHDD2:MOVR5,#0FFHDJNZR5,$DJNZR6,DD2DJNZR7,
5、DD1RETEND一、实验步骤1、打开keil程序,执行菜单命令“project”à”newproject”创建“双单片机串口通信”项目,并选择单片机型号为AT89C51..2、执行菜单命令”file”à”new”创建文件,输入源程序,保存为“双单片机串口通信.A51“.在”project“栏的file项目管理窗口中右击文件组,选择”addfiletogroup1“将源程序”双单片机串口通信.A51“添加到项目中。3、执行菜单命令“project”à”optionsfortarget’target1’”,在弹出的对话框中选择“output”选项卡,选
6、中“createhexfile”4、执行菜单命令“project“à”buildtarget”,编译源程序。如果编译成功,则在”outputwindow“窗口中显示没有错误,并创建了”双单片机串口通信.HEX“文件。5、在protues仿真平台上建立参考图系统,并将程序上载到虚拟芯片上运行。二、实验调试及结果一、实验分析本实验需要完成两个程序,发送方和接收方,实验给出的程序基本上不用做改动即可,所以做起来难度还是不大。从实验结果可以明显看出,当发送方数码管显示要发送的数值时,接收方数码管几乎也同时显示相同的数值,证明接收无误,实验结果正确。二、实验思
7、考与总结接收双方都使用串口方式2进行通信,并且两者的波特率完全一致,这才保证了接收端可以接收到正确的数据。在发送数据时,向SBUF中写入一个数据后,根据TI端的电平,判断是否发送完毕,当发送完毕时,TI被硬件置1,接下来再将TI手动清零。同理,在接收数据时,在中断服务程序中也需要将中断标志位RI清零。