- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可能读者会问,前面几章中晶振频率fosc常常取12 MHz或6 MHz,这里为什么用11.0592 MHz?如果你亲手算过上面两个例子的话,是否发现在上面的方程中,每次除法后都正好是整数?也就是说,计算误差为零?这意味着通信误差理论上也为零,如果将上面两个例子的fosc换成12 MHz或6 MHz,就没这么幸运还能得到一个整数了,换言之,你设计的通信本身理论上就会有差错的可能。11.0592 MHz似乎是为MCS-51“量身定制”的,在通信系统设计中,建议你用11.0592 MHz晶振。 在上面的计算中,你也许觉得计算太麻烦,这里告诉你一个方法,我们可以利用丰富的网络资源下载一个波特率计算的小工具,有了它,波特率的计算就变得非常简单了。 图6-8 波特率计算窗口 根据MCS-51单片机串行通信的4种方式,本节分别介绍它们的使用,重点介绍方式1的使用。 1.串行工作方式0 串行口的工作方式0与我们想象中的通信有一定的距离,它实际上是用串行线路实现并行输出/输入的扩展功能,如图6-9(a)、(b)所示,串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出,数据传送的速度(波特率)固定为fosc/12,这种方式常用于扩展I/O口。 发送过程:在图6-9(a)中,当一个数据写入串行口发送缓冲器SBUF时,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前),发送完置中断标志TI为1,请求中断。在再次发送数据之前,必须由软件清TI为0。其中,74LS164为串入并出移位寄存器。 6.4 串行通信的应用 【例6-3】在图6-9(a)中,将片内20H单片的数据通过串行口送到74LS164。 (a) (b) 图6-9 方式0作I/O扩展图 ORG 0000H SJMP START ORG 0050H START: MOV SCON,#00H ;设置串口方式0 MOV A,20H ;取出要发送的数据 MOV SBUF,A ;发送数据 JNB TI,$ ;等待发送完成 CLR TI ;清除发送完成标志,以备下次发送 …… ;20H 单元的数据送到了74LS164内部 接收过程:如图6-9(b)所示,在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前),当接收完8位数据后,置中断标志RI为1,请求中断。在再次接收数据之前,必须由软件清RI为0。其中,74LS165为并入串出移位寄存器。 串行控制寄存器SCON中的TB8和RB8在方式0中未用。值得注意的是,每当发送或接收完8位数据后,硬件会自动置TI或RI为1,CPU响应TI或RI中断后,必须由用户用软件清零。方式0时,SM2必须为0。 【例6-4】在图6-9(b)中,将74LS165中的数据通过串行口读到片内20H单片。 ORG 0000H SJMP START ORG 0050H START: MOV SCON,#00H ;设置串口方式0 SETB REN JNB RI,$ ;等待接收完成 CLR REN CLR RI ;清除标志,以备下次接收 MOV A,SBUF ;读取数据 MOV 20H,A ;74LS165的数据送到了内部20H单元 2.串行工作方式1 串行口工作于方式1时为波特率可变的8 位异步通信接口。数据位由P3.0(RXD)端接收,P3.1(TXD)端发送。传送一帧信息为10位:1位起始位(0)、8位数据位(低位在前)和1位停止位(1)。波特率是可变的,它取决于定时器T1的溢出速率及SMOD的状态。 发送过程:用软件清除 TI后,CPU执行任何一条以SBUF为目标寄存器的指令,就启动发送过程。数据由TXD引脚输出,一帧信号发送完时,使置位发送中断标志TI=1,向CPU申请中断,可以发送下一个数据。 方式1发送编程要点(查询方式): (1)在SCON中设置通信方式1。 (2)在TMOD中设置定时器T1为工作方式2,软件启动。 (3)根据通信波特率计算TL1(=TH1),并确定PCON中的“SMOD”位,用指令完成对PCON、TL1(=TH1)的设置。 (4)启动定时器T1作为波特率发生器。 (5)发送数据到SBUF。 (6)等待发送结束。 (7)清除发送结束标志。 (8)继续将下个要发送的数据送到SUBF(即回到(5)“发送数据到SB
原创力文档


文档评论(0)