- 1、本文档共155页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4. 串行通信接口种类 根据串行通讯格式及约定(如同步方式、通讯速率、数据块格式等)不同,形成了许多串行通讯接口标准,如常见UART(串行异步通讯接口)、USB(通用串行总线接口)、I2C总线、SPI总线、485总线、CAN总线接口等。下面结合增强型MCS-51介绍UART接口及使用规则。 4.4.2 增强型MCS-51串行通信口控制及初始化 图4-21 MCS-51串行口结构 1.串行口控制寄存器SCON 图4-22 SCON各位含义 表4-4 串行口工作方式 SM0 SM1 工作方式 说 明 波特率 0 0 方式0 (扩展I/O口) 移位输入/输出(用于扩展I/O引脚)方式 输入/输出移位脉冲为 0 1 方式1 (常用) 波特率可变的8位异步串行通信方式 1 0 方式2 (不常用) 波特率固定的9位异步串行通信方式 1 1 方式3 (常用) 波特率可变的9位异步串行通信方式 2. 波特率倍增选择 在MCS-51子系列中,串行口波特率与工作方式有关,对于方式0来说,串行输出/输入移位脉冲为时钟信号频率的12分频;在方式1、3中,波特率由T1溢出率和电源控制寄存器PCON的SMOD位决定;而在方式2中,波特率与时钟信号频率fOSC和电源控制寄存器PCON的SMOD位有关。即在方式1、2、3中,当SMOD位为1时,波特率是SMOD为0时的两倍(正因如此,PCON寄存器中的SMOD位被称为波特率倍增位)。 而在增强型MCS-51中,除了可以使用T1溢出率的16或32分频作为串行口发送、接收波特率外,还可以使用定时器T2溢出率的16或32分频作为串行口发送或接收波特率。 3. 波特率选择 方式1、方式3波特率与定时器T1溢出率、SMOD1位关系如下: 当把定时器T1溢出率作为波特率发生器(即16分频器)的输入信号时,为了避免重装初值造成的定时误差,定时器T1最好工作在可自动重装初值的方式2,并禁止定时器T1中断。 而T1溢出率倒数就等于定时时间t,因此定时T1重装初值C与波特率之间关系为: (T1计数器工作在12分频状态) (T1计数器工作在6分频状态) 表4-5 常用波特率、晶振频率以及定时器T1重装初值C之间关系 波特率 晶振频率(MHz) SMOD1位 定时器T1初始化参数 工作方式 (定时状态) 初值 19 200 11.0592 1 2 0 FDH 9600 11.0592 1?(波特率倍增) 2 0 FAH 0 FDH 4800 11.0592 1?(波特率倍增) 2 0 F4H 0 FAH 2400 11.0592 1?(波特率倍增) 2 0 E8H 0 F4H 1200 11.0592 1?(波特率倍增) 2 0 F4H 0 E8H 不难看出:如果选定的波特率对应的初值C不是整数,则实际波特率与标准值就存在偏差,例如当晶振频率为12 MHz,则标准波特率9600对应的初值C为252.745(SMOD1为0时的计算值),由于初值C只能取最接近计算值的整数,因此C取253(FDH)。而当C=253时,实际波特率为10417,与理论值相对误差为 , 约5.7%。 实践表明:当两个串行通信设备之间的波特率误差超过2.5%时,串行通信将无法进行,且通信速率越高,发送、接收波特率的允许误差范围就越小。因此,当单片机控制系统需要与PC机通信时,单片机控制系统的晶振频率fOSC往往不是整数(如6 MHz、12 MHz),而是某一特定值,如表中的11.0592 MHz就是常用的一种晶振频率之一。 4.4.3 串行口工作方式及应用 1. 方式0 当串行口工作于方式0时,串行口本身相当于“并入串出”(发送状态)或“串入并出”(接收状态)的移位寄存器。8位串行数据b0~b7依次从RDX (P3.0)引脚输出或输入,移位脉冲信号来自TXD (P3.1)引脚,输出/输入移位脉冲频率固定为系统时钟频率fOSC的12 分频(对于8XC5XX2芯片来说,在“6时钟/机器周期”模式下,移位脉冲频率是时钟频率fOSC的6分频),不可改变。 图4-23 利用串行口方式0扩展输出口 串行数据输出过程概括如下: 在发送中断标志TI为0(即无效)情况下,执行写串行数据输出缓冲器SBUF指令(如MOV SBUF, A)即可将SBUF寄存器中内容由低位到高位依次输出到RDX引脚,同时TXD引脚输出移位脉冲,使外接的串行输入并行输出芯片逐一接收来自RDX引脚上的串行数据。当
文档评论(0)