资源描述:
《实验六 单片机串行口通讯实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验六单片机串行口通讯实验一、实验要求利用单片机串行口,实现两个实验台之间的串行通讯。其中一个实验台作为发送方,另一侧为接收方。发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示。二、实验目的1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。3、学习串口通讯的中断方式的程序编写方法。三、实验电路显示电路和键盘电路见硬件实验十六和硬件实验十七。甲方乙方连线连接孔1连接孔21甲方TXD乙方RXD2甲方RXD乙方TXD3甲方GND乙方GND4KEY/LED_CSCS0四、实验说明1、8051、80C196的R
2、XD、TXD接线柱在POD51/96仿真板上,8088/86的TXD、RXD在POD8086仿真板上的8251芯片旁边。2、通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。也可以将本机的TXD接到RXD上,这样按下的键,就会在本机LED上显示出来。3、若想与标准的RS232设备通信,就要做电平转换,输出时要将TTL电平换成RS232电平,输入时要将RS232电平换成TTL电平。可以将仿真板上的RXD、TXD信号接到实验板上的“用户串口接线”的相应RXD和TXD端,经过电平转换,通过“用户串口”接到外部的
3、RS232设备。可以用实验仪上的逻辑分析仪采样串口通信的波形五、实验框图开始设置串口通讯方式及波特率允许串口中断是收到数据?否无检测键盘输入LED显示读入键值转换成键码串口发送键码接收数据送显示缓冲主程序开始是发送中断?置收到标志读接收缓冲清收发中断标志中断返回串口中断子程序OUTBITequ08002h;位控制口OUTSEGequ08004h;段控制口INequ08001h;键盘读入口HasRcvequ20h.0;接收标志位LEDBufequ40h;显示缓冲RCVBufequ50H;接收缓冲ORG0000HLJMPSTART;串行口中断程序ORG0023HJNBTI,S0_RCLRTIN
4、OPSJMPS0_RETS0_R:;接收数据CLRRIMOVRCVBUF,SBUF;保存数据SETBHasRcv;提示收到数据NOPS0_RET:RETILEDMAP:;八段管显示码db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hDelay:;延时子程序movr7,#0DelayLoop:djnzr7,DelayLoopdjnzr6,DelayLoopretDisplayLED:movr0,#LEDBufmovr1,#6;共6个八段管movr2,#00100000b;从左边开始显示Loop:movdptr,#
5、OUTBITmova,#0movx@dptr,a;关所有八段管mova,@r0movdptr,#OUTSEGmovx@dptr,amovdptr,#OUTBITmova,r2movx@dptr,a;显示一位八段管movr6,#1callDelaymova,r2;显示下一位rramovr2,aincr0djnzr1,LoopretTestKey:movdptr,#OUTBITmova,#0movx@dptr,a;输出线置为0movdptr,#INmovxa,@dptr;读入键状态cplaanla,#0fh;高四位不用retKeyTable:;键码定义db16h,15h,14h,0ffhdb13
6、h,12h,11h,10hdb0dh,0ch,0bh,0ahdb0eh,03h,06h,09hdb0fh,02h,05h,08hdb00h,01h,04h,07hGetKey:movdptr,#OUTBITmovP2,dphmovr0,#Low(IN)movr1,#00100000bmovr2,#6KLoop:mova,r1;找出键所在列cplamovx@dptr,acplarramovr1,a;下一列movxa,@r0cplaanla,#0fhjnzGoon1;该列有键入djnzr2,KLoopmovr2,#0ffh;没有键按下,返回0ffhsjmpExitGoon1:movr1,a;键值
7、=列X4+行mova,r2decarlarlamovr2,a;r2=(r2-1)*4mova,r1;r1中为读入的行值movr1,#4LoopC:rrca;移位找出所在行jcExitincr2;r2=r2+行值djnzr1,LoopCExit:mova,r2;取出键码movdptr,#KeyTablemovca,@a+dptrmovr2,aWaitRelease:movdptr,#OUTBIT;等键释放clr