点对点串行通信_第1页
点对点串行通信_第2页
点对点串行通信_第3页
点对点串行通信_第4页
点对点串行通信_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、实验9 点对点串行通信 实验9 点对点串行通信 一、实验目的一、实验目的二、实验设备与器材二、实验设备与器材三、实验电路三、实验电路 四、实验内容、过程及要求四、实验内容、过程及要求 实验9 点对点串行通信 一、实验目的一、实验目的(1)理解串行通信概念。(2)掌握MCS-51串行通信口的初始化方法、步骤。(3)掌握串行发送、接收程序的编写方法。理解串行通信波特率误差允许范围。实验9 点对点串行通信 二、实验设备与器材二、实验设备与器材仿真器及其附件、图1所示的实验电路板各两套,RS-232串行通信电缆一条,导线数条。实验9 点对点串行通信 三、实验电路三、实验电路按实验7的要求设置实验板上跳

2、线,将JP105、JP106的1-2引脚短路,用RS-232电缆或导线将第一块实验电路板的TXD(发送端)引脚与第二块电路板的RXD(接收端)引脚连在一起,第一块实验电路板的RXD(接收端)引脚与第二块电路板的TXD(发送端)引脚连在一起;再用导线将两块电路板地线连在一起(用RS-232通信电缆连接时,两块实验电路板地线已通过DB9插座的第5引脚连在一起),这样就形成了没有联络信号的串行通信方式。实验9 点对点串行通信 四、实验内容、过程及要求四、实验内容、过程及要求1串行通信格式的约定(1)波特率(CPS)为4800。假设晶振频率为11.0592MHz,使用定时器T1溢出率作发送、接收波特率

3、,则定时器T1重装初值C=0FAH(不倍增)。(2)数据长度为9位,其中b7b0为数据位,b8为奇偶校验位。(3)采用偶校验方式,即传送的8位数据中含有奇数个“1”时,校验位为1。实验9 点对点串行通信 2没有协议的单字节收/发对于单字节串行收/发来说,无需约定通信协议,完成了串行口初始化后,即可通过写串行输出缓冲寄存器SBUF,启动串行发送;当接收有效标志RI置1时,就表示已接收了一字节的数据信息。试在实验7的基础上,增加单字节串行通信功能,使程序具备在任一实验板上按下某一按键时,两块板同时显示被按下的键名。下面给出了与串行通信有关的程序段,完整程序由读者编写。实验9 点对点串行通信 ;初始

4、化定时器T1(将定时器T1的溢出信号作串行通信波特率发生器输入信号)MOVTL1,#250;4800波特率对应定时器初值MOVTH1,#250ANLTMOD,#0F0HORLTMOD,#00100000B;定时器T1工作在方式2(8位自动重装初值)SETBTR1;启动定时器T1CLRET1;禁止T1中断;初始化串行口实验9 点对点串行通信 MOVSCON,#11010000B;串行口工作在方式3,SM2=0,以便用TB8位;作奇偶校验位;SETBREN;允许接收SETBES;允许串行中断SETBEA;开中断;单字节串行发送初始化MOVA,KEYNAME;取按键值送AMOVC,P实验9 点对点串

5、行通信 MOVTB8,C;奇偶标志P送TB8,即b8位MOVSBUF,A;写串行发送缓冲器即可将一字节信息按设定的波特率发送到串行口上PROCUART;串行中断服务程序UART:PUSHACCPUSHPSWJNBTI,NEXT1;串行发送结束引起中断CLRTI;清除发送中断标志实验9 点对点串行通信 NEXT1:JNBRI,EXIT;串行接收有效CLRRI;清除接收有效中断MOVA,SBUF;读串行接收缓冲器;奇偶校验,即检查P标志与RB8位是否相同,否则奇偶校验错MOVC,PANLC,/RB8;计算PMOVF0,C;暂时保存在F0标志中MOVC,RB8ANLC,/P;计算RB8RB8P实验9

6、 点对点串行通信 ORLC,F0;完成了P与RB8的异或运算JCEXIT;校验正确!MOVRXDBUF,A;数据送串行接收缓冲区SETBRXDB;串行接收有效标志置1EXIT:POPPSWPOPACCRETIEND实验9 点对点串行通信 3按约定协议收/发的双机串行通信将JP201、JP202跳线的1-2引脚短路,即串行数据从P1.2引脚输出,串行移位脉冲从P3.4引脚输出,并行输出锁存信号从P3.5输出。在实验6的基础上,通过串行口将电子钟时间送到另一实验板显示出来,通信协议如下:(1)数据帧格式为:0AAH(起始标志)+4字节信息+1字节的和校验信息。实验9 点对点串行通信 (2)接收方正

7、确接收后回送A5作应答;如果错误,则回送A6,请求重发。(3)发送/接收缓冲区在30H35H单元,其中35H单元存放和校验信息(b7作接收缓冲数据有效标志)。(4)发送、接收均采用中断方式。实验9 点对点串行通信 与串行发送有关的发送参考程序如下:TXDBDATA30H;发送缓冲区TXDCDATA35H;发送/接收字节计数器TXDOKBIT07H;发送成功标志(1表示成功;0表示失败);初始化串行口MOVSCON,#11010000B;串行口工作在方式3,SM2=0,以便用TB8位 ;作奇偶校验位;SETBREN;允许接收PROCTIMETXB;时间送发送缓冲区实验9 点对点串行通信 TIME

8、TXB:MOVA,SECONDMOVB,#10DIVAB;转换为BCD码;十位在A中,个位在B中MOVR0,#TXDB+2MOVR0,AINCR0MOVR0,B;秒低位送发送缓冲区缓冲区;分单元计数器笔段码送显示缓冲区实验9 点对点串行通信 MOVA,MINUTEMOVB,#10DIVAB;转换为BCD码;十位在A中,个位在B中MOVR0,AINCR0MOVR0,B ;分低位送发送缓冲区缓冲区;计算校验和MOVR0,#TXDBMOVR7,#4CLRA;清累加器实验9 点对点串行通信 LOOP1:ADDA,R0;累加求和INCR0DJNZR7,LOOP1ANLA,#7FH ;保留和的低7位,避免

9、与帧首标志相同MOVR0,A;校验和存入发送缓冲区MOVA,#0AAH ;先发送帧首标志MOVC,P;奇偶标志P送CMOVTB8,C;奇偶标志P送TB8,即b8位MOVSBUF,A;写串行口缓冲寄存器,启动发送MOVTXDC,#0;初始化发送字节数RETEND实验9 点对点串行通信 PROCUART;串行中断服务程序UART:PUSHACCPUSHPSWSETBRS0;切换工作寄存器区SETBRS1JNBTI,NEXT2;串行发送结束中断CLRTI;清除发送结束中断;检查发送字节计数器,确定是否已发送了所有数据MOVA,TXDCCJNEA,#5,NEXT1实验9 点对点串行通信 NEXT1:J

10、NCNEXT2;小于5,说明尚未完成发送ADDA,#TXDB;加上发送缓冲区首地址MOVR0,AMOVA,R0;取发送数据MOVC,P;奇偶标志P送CMOVTB8,C;奇偶标志P送TB8,即b8位MOVSBUF,A ;写串行口缓冲寄存器,启动发送INCTXDC;发送字节计数器加1实验9 点对点串行通信 NEXT2:JNBRI,EXIT;退出CLRRI;清除接收有效中断;串行接收有效MOVA,SBUF;执行奇偶校验,P标志与RB8位应该相同,否则就错MOVC,PANLC,/RB8 ;计算PMOVF0,C ;暂时保在存F0标志中MOVC,RB8ANLC,/P ;计算RB8ORLC,F0 ;完成了P

11、与RB8的异或运算RB8P实验9 点对点串行通信 JCEXIT;奇偶校验错;奇偶校验正确CJNEA,#0A5H,NEXT3;等于0A5H,说明接收方已准确接收,成功标志置1SETBTXDOKSJMPEXITNEXT3:CJNEA,#0A6H,EXIT;重新发送CLRTXDOK;清除发送成功标志MOVTXDC,#0;初始化发送字节计数器MOVA,#0AAH;发送帧首标志实验9 点对点串行通信 MOVC,P;奇偶标志P送CMOVTB8,C ;奇偶标志P送TB8,即b8位MOVSBUF,A;写串行口缓冲寄存器,启动发送EXIT:POPPSWPOPACCRETIEND实验9 点对点串行通信 与串行接收

12、有关的参考程序段如下:;初始化串行口MOVSCON,#11010000B ;串行口工作在方式3,SM2=0,以便用TB8位作奇偶校验位;SETBREN;允许接收ORLPCON,#40H;将b6位置1,启用帧错误侦测功能;初始化中断控制器SETBES;允许串行口中断SETBEA;开中断;接收显示处理实验9 点对点串行通信 WAIT:MOVR0,#RXDB+4MOVA,R0;读接收缓冲区有效标志JNBACC.7,WAIT;接收缓冲区无效,等待CLRACC.7MOVR0,A;清除接收缓冲区有效标志;把接收缓冲区信息送显示缓冲区显示MOVDPTR,#LEDTAB;0F字模表首地址送DPTRMOVR0,

13、#DISPBUFMOVR1,#RXDBMOVR7,#4实验9 点对点串行通信 LOOP1:MOVA,R1;取显示数码MOVCA,A+DPTR;取数码对应字模MOVR0,A;字模送显示缓冲区INCR0INCR1DJNZR7,LOOP1;显示分与秒之间的小数点MOVR0,#DISPBUF+1MOVA,R0CLRACC.7;使b7,即DP位亮实验9 点对点串行通信 MOVR0,A;回写SETBREN;允许串行口接收新的数据LCALLS_DISP;执行串行输出子程序,将笔段码送LEDSJMPWAIT;等待ENDPROCUART;串行中断服务子程序UART:PUSHACCPUSHPSWSETBRS0;切

14、换工作寄存器区SETBRS1实验9 点对点串行通信 JNBRI,NEXT1CLRRI;清除接收中断JBCSCON.7,RERROR;帧错误MOVA,SBUF;执行奇偶校验,P标志与RB8位应该相同,否则偶校验错MOVC,PANLC,/RB8;计算PMOVF0,C;暂保存在F0标志中MOVC,RB8ANLC,/P;计算RB8ORLC,F0;完成了P与RB8的异或运算JCRERROR;奇偶校验错RB8P实验9 点对点串行通信 ;奇偶校验正确!判别是否为帧首信息CJNEA,#0AAH,NEXT11;等于0AAH,属于一信息帧开始MOVRXDC,#0;复位接收字节计数器SETBFRAMES;帧开始标志

15、有效SJMPNEXT1NEXT11:;非帧首信息JNBFRAMES,RERROR;在这之前尚未接收到帧开始标志;当前接收内容为帧内数据信息MOVA,RXDC实验9 点对点串行通信 ADDA,#RXDB;加接收缓冲区首地址MOVR0,AMOVR0,SBUF;接收数据送接收缓冲区INCRXDC;接收字节计数器加1;判别接收的字节数MOVA,RXDCCJNEA,#5,NEXT1;已经接收了五字节,做和校验MOVR0,#RXDBMOVR7,#4;对30H33H单元求和,共四字节CLRA;清除累加器实验9 点对点串行通信 LOOP1:ADDA,R0;累加求和INCR0DJNZR7,LOOP1XRLA,R0 ;与接收到的和校验字节异或JNZRERROR;正确MOVA,R0ORLA,#80HMOVR0,A;接收缓冲区数据有效标志置1MOVA,#0A5H;发送0A5H应答信号CLRREN;停止接收,等待处理接收数据SJMPTXDACK实验9 点对点串行通信 RERROR:MOVA,#0A6H;错误标志TXDACK:CLRFRAMES;清除帧开始标志MOVRXDC,#0;复位接收字节计数器MOVC,P;奇偶标志P送CMOVTB8,C ;奇偶标志P送TB8,即b8位MOVSBUF,A ;写串行口缓冲寄存器,启动发送SJMPEXIT实验9 点对点串行通信

温馨提示

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

评论

0/150

提交评论