网站大量收购闲置独家精品文档,联系QQ:2885784924

5.4串行接口及其串行通信.ppt

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图5?30 主机程序流程图 N 接收数据块 N Y Y 主机子程序 命令从机复位 从机应答 发送命令字 从机应答 N 命令正确? 命令分类 00H(发) 01H(收) 从机接收就绪? 发送数据块 返回 N 从机发送就绪? 发送从机地址 地址相符? Y N 给R0、R1、R2、R3、 R4和R5赋初值 开始 定时器T1方式2 波特率为1200bps 启动T1工作 串行口方式3,允许接收 SM2=0, TB8=1 调用主机通信子程 停机 (a)主机主程序流程 (b)主机通信子程序流程 Y Y Y N 主机程序 主机主程序用于定时器T1初始化,串行口初始化和传递主机通信子程序所需入口参数。 主机通信子程序用于主机和从机间一个数据块的传送。 * 5.4.3 MCS-51串行通信工作方式及应用 程序自阅 ① 如果RI=0、SM2=0,则接收控制器发出装载SBUF信号,将8位数据装入接收数据缓冲器SBUF,停止位装入RB8,并置RI=1,向CPU申请中断。 ② 如果RI=0、SM2=1,那么只有停止位为1才发生上述操作。 ③ 如果RI=0、SM2=1且停止位为0、则所接收的数据不装入SBUF,数据将会丢失。 ④如果RI=1,则所接收的数据在任何情况下都不装入SBUF,即数据丢失。 无论出现哪一种情况,位检测器将继续采样RXD引脚的负跳变,以便接收下一帧信息。 接收采用移位寄存器和SBUF双缓冲结构,以避免在接收后一帧数据之前,CPU尚未及时响应中断而将前一帧数据取走,造成两帧数据重叠。采用双缓冲结构后,前、后两帧数据进入SBUF的时间间隔有10个机器周期。在后一帧数据送入SBUF之前,CPU有足够时间将前一帧数据取走。 DATA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 16Tc 起始位 RXD RXC 启动检测 确认启动位 采样数据 图5-22 串行通信方式1对接收数据的采样 由于发送、接收双方各自使用自己的时钟,因而两者的频率总有少许差异。为了避免这种影响,数据采样速率采用波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。 写入 SBUF 采样 (a) 发送时序图 TXD 数据输出 TI D0 D1 D2 D3 D4 D5 D6 D7 停止位 起始位 RXD 输入数据 (b) 接收时序图 D0 D1 D2 D3 D4 D5 D6 D7 停止位 起始位 RI 检测 负跳变 2、发送时序和接收时序: 3、波特率设置 假定计数初值为X,则定时器1溢出周期为: 12 fosc ×(256-X) 溢出率为溢出周期的倒数。故波特率计算公式为: 波特率= 2SMOD 32 × fosc 12×(256-X) 当定时器1作波特率发生器使用时,选用定时方式2。之所以选择工作方式2,是因为方式2具有自动加载功能,可以避免通过程序反复装入初值所引起的定时误差,使波特率更加稳定。 方式1的波特率由定时器/计数器的溢出率和SMOD决定,即 方式1波特率=(2SMOD×T1溢出率)/32 X= 2SMOD × fosc 32×12×波特率 256 - 实际使用时,总是先确定波特率,再计算定时器1的计数初值,然后进行定时器的初始化。根据上述波特率计算公式,得出计数初值的计算公式为: 2、应用举例——双机通信 单片机间的串行通信通常可分为双机通信和多机通信两类。而串行口工作方式1只能用于双机通信,不能用于多机通信,故作为方式1的应用,这里举一双机通信的例子。又因串行通信的程序设计,一般可采用查询方式或中断方式两种,这里仅以查询方式为例加以说明 。 为了确保通信成功、有效,现规定双机异步通信程序“协议”如下: 通信双方均采用系统时钟频率fosc = 12MHz,甲机发送数据,乙机接收数据,波特率为2400。通信开始时,甲机发送呼叫信号“06”,询问乙机是否可以接收数据;乙机收到呼叫信号后,若同意接收数据则发回“00”作为应答,否则发“15”表示暂不能接收数据;甲机只有收到乙机的应答信号“00”后才可把存放在外部数据存储器的内容发送给乙机,否则继续向乙机呼叫,直到乙机同意接收。其数据格式为:? 字节数n 数据1 …… 数据n 累加效验和 累加效验和是指字节数n、数据1、?、数据n这(n+1)个字节内容的算术累加和。 乙机根据接收到的“效验和”判断已接收到的数据是否正确。若接收正确,向甲机发回“0FH”信号,否则发回“F0H”信号给甲机。甲机只有接收到“0FH”信号才算完成发送任务,返回调用的程序

文档评论(0)

wendan118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档