第单串行通信.docVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第单串行通信.doc

二.方式1: 8位数据异步通讯方式 1. 设定为10位异步通信方式:1个起始位(“0”),8位数据位,1个停止位(“1”)。 2. RXD:接收数据端。 TXD:发送数据端。【注意和方式0不一样,恢复正常】 3.波特率:用T1作为波特率发生器 4.发送:在TI=0时,当把数据写入SBUF后,即可启动发送,串行口内自动把发送缓冲器中的数据送入发送移位寄存器。发送移位寄存器先发一位起始位,接着按先低位后高位,再发停止位,从而完成一帧的发送。串行数据均由TXT端输出,TI在发送停止位时,由硬件置TI=1。 接收:在RI=0和REN=1的条件下。在接收到第9数据位(即停止位)时,接收电路必须满足以下两个条件: RI=0且SM2=0; 接收到的停止位为“1”时, 才能把接收到的8位字符存入“SBUF(接收)”中,把停止位送入RB8中,使RI=1并发出串行口中断请求(若中断开放)。若上述条件不满足,则这次收到的数据就被舍去,不装入“SBUF(接收)”中,这是不能允许的,因为这意味着丢失了一组接收数据。 在方式1下,发送时钟、接收时钟和通信波特率都由定时器溢出率脉冲经过32分频得到,并可由SMOD=1倍频。因此,方式1的波特率是可变的。 其实,SM2是用于方式2和方式3的。在方式1下,SM2应设为“0”。 方式1时序图: 三.方式2和方式3 方式2和方式3都是11为异步收发。两者的差异仅在于通信波特率有所不同:方式2的波特率由fosc经过32或64分频后提供;方式3的波特率由定时器T1(或T2)的溢出率经32分频后提供。 方式2和方式3的发送过程类似于方式1,所不同的是方式2和方式3有9位有效数据位。发送时,CPU除要把发送字符装入“SBUF(发送)”外,还要把第9位数据位预先装入SCON的TB8中。第9数据位可由用户安排,可以是奇偶校验位,也可以是其它控制位。 第9数据位的值装入TB8后,便可用一条以SBUF为目的的传送指令把发送数据装入SBUF来启动发送过程。一帧数据发送完后,TI=1,CPU便可通过查询TI来以同样方法发送下一个字符帧。 方式2和方式3的接收过程也和方式1类似。所不同的是:方式1时RB8中存放的是停止位,方式2和方式3时RB8中存放的是第9数据位。因此,方式2和方式3时必须满足接收有效字符的条件变为:RI=0且SM2=0或收到的第9数据位为“1”,只有上述两个条件同时满足,接收到的字符才能送入SBUF,第9数据位才能装入RB8中,并使RI=1;否则,这次收到的数据无效,RI也不置位。 其实,上述第一个条件(RI=0)是要求SBUF空,即用户应预先读走SBUF中的信息,以便让接收电路确认它已空。第二个条件(SM2=0)是提供了利用SM2和第9数据位共同对接收加以控制:如果第9数据位是奇偶校验位,则可令SM2=0,以保证串口能可靠接收;如果要求利用第9数据位参与接收控制,则可令SM2=1,然后依靠第9数据位的状态来决定接收是否有效。 方式2、3时序图: 7.3.4 串行口的编程及应用 一.串行口的初始化编程 1.串行口控制寄存器SCON位的确定 根据工作方式确定SM0、SM1位;对于方式2和方式3还要确定SM2位;如果是接收端,则置允许接收位REN为1;如果方式2和方式3发送数据,则应将发送数据的第9位写入TB8中。 2.设置波特率 串行通信,收、发双方发送或接收的波特率必须一致。 方式0和方式2的波特率是固定的; 方式1和方式3的波特率是可变的,由T1溢出率确定。 定时器的不同工作方式,得到的波特率的范围不一样,这是由T1在不同工作方式下计数位数的不同所决定。 (1)方式0时,波特率固定为晶体振荡频率fosc的1/12(fosc /12),不受SMOD位值的影响。若fosc?=?12 MHz,波特率为1Mbit/s。 (2)方式2时,波特率仅与SMOD位的值有关。 方式2 波特率?=? 如果SMOD=0,则所选波特率为fosc /64;如果SMOD=1,则所选波特率为fosc /32。 若fosc?=?12 MHz: SMOD?=?0,波特率?=?187.5 kbit/s;SMOD?=?1,波特率?为375 kbit/s。 (3)方式1或方式3,常用T1作为波特率发生器,其关系式为?: (7-1) 由式(7-1)见,T1溢出率和SMOD的值共同决定方式1或方式3的波特率。 【注:定时器T1的溢出率定义为定时时间的倒数 定时时间可参见CAP5 T1的定时时间=计数值×机器周期 = T1的溢出率=1/定时时间t= 所以: 波特率?=?(2SMOD/32)×fosc/[12 ×(2n-初值)] 其中:N

文档评论(0)

整理王 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档