第九章 51单片机的串行接口
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.1.3 串行通讯的波特率和传输速率 1. 传输速率 在串行通信中,可以用传输速率衡 量通信设备传输数据的快慢.传输速率 定义为每秒钟内所传输的字符帧数. 2. 波特率 串行口每秒钟传送二进制数码的位 数称为波特率.波特率的单位是bps,即 位/秒(bit per second).波特率主要 用以表征数据的传输速度,波特率越高, 数据传输速度越快.
9.2 MCS-51串行I/O接口 MCS-51串行I/O接口 串行I/O
MCS-51单片机有一个全双工的异步串行通信接口, 可 以 作 为 通 用 异 步 接 收 器 和 发 送 器 UART ( Universal Asynchronous Receiver and Transmitter), 也可以作为同 步移位寄存器.
1. 串行口控制寄存器SCON 串行口控制寄存器 SCON 用来设定串行口的
工作方式,设置接收允许,决定串行口第九位 数据格式,指示串行口的工作状态和收发中断 标志.SCON的字节地址为98H,可以字节寻址 也可以位寻址.SCON控制字的格式如下:
D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI 位地址
2. 电源控制寄存器PCON
电源控制特殊功能寄存器PCON的字节地址为87H,只 能字节寻址.PCON的格式如下所示:
87H PCON D7 D6 SMOD - D5 D4 - - D3 D2 D1 D0 GF1 GF2 PD IDL
其中只有D7位(SMOD)与串口有关,其功能是用来 定义波特率是否加倍.其它几位与串口无关,故在此 不作讨论. 当SMOD=1时,若串行口工作于方式1,2或3时,其 波特率将提高一倍.使该位置1的指令为: MOV PCON,#80H 或 MOV 87H,#80H 复位时SMOD=0,波特率不加倍.
9.1.4 串行通讯的出错校验
在数据通信中,可能会因为传输线的寄生效应,外界 干扰等原因导致接收数据出错.为了保证传输数据的正 确性,在数据传送过程中常伴随数据校验.在单片机数 据通信中常用的校验方法有奇偶校验,累加和校验以及 CRC冗余校验(Cycli Redundancy Check). 1.奇偶校验 奇偶校验是通过检验被传送的二进制数据中"0" 或"1"个数的奇偶性,判断数据在传送过程中有否出错.
3. 串行口收发缓冲器SBUF
80C51的串行口有两个地址相同但在物理上独立的 数据缓冲器,分别用于接收或发送数据.SBUF也是特 殊功能寄存器中的一个,其数据格式如下:
SBUF D7 D6 D5 D4 D3 D2 D1 D0 SD7 SD6 SD5 SD4 SD3 SD2 SD1 SD0
SBUF只能字节寻址,其字节地址为99H.通过串 行口接收或发送的数据,通常用MOV 指令操作.发送 数据时,只要将数据送入SBUF,CPU就自动启动发送; 接收时,CPU自动将接收移位寄存器收到的数据送入接 收缓冲器.
9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
SM0,SM1 工作方式选择位.设定SM0和 SM1两位来决定串行口的四种工作方式.
SM2 工作在方式2和3时作多机通信允许位.
当串行口工作在方式0时,SM2必须设置为0. 当串行口工作在方式1时,一般应将SM2清零.若SM2 =1,则只有收到有效的停止位才会激活RI. 当串行口工作在方式2,3时,若SM2=1,且接收到的 第9位数据(RB8)为1, 则将接收到的8位数据送入串行口缓冲器SBUF,并 置串行口接收中断标志RI为1.如果收到的第九位数据 RB8=0,则丢弃接收的数据,且RI不会置1. 若SM2=0,则不论收到的第九位数据RB8=0或1,均
8位移位寄存 Fosc/12 器 10位UART 11位UART 可设置 Fosc/64 或 fosc/32 可设置
1
1
3
ຫໍສະໝຸດ Baidu
11位UART
RXD接收TXD发送,可用于多机通信
1. 方式0 设定SCON中的SM0=0,SM1=0时,串行口工作于方 式0,即8位移位寄存器输入输出方式.此时,串行口 以Fosc/12的固定波特率接收或发送数据.在接收和发 送过程中,均由TXD端(P3.1脚)输出同步移位脉冲, 由RXD端(P3.0口)发送和接收数据.串行口工作方式 0主要用于串行口的I/O口扩展. 方式0每一帧接收和发送的是8位数据,收,发时低 位数据在前,高位数据在后.帧格式如图9-2所示. D0 D1 D2 D3 D4 D5 D6 D7
在产生最后一次移位脉冲时能满足下列两 个条件: (1)RI=0; (2)接收到的停止位为1;或者SM2=0时停止 位进入RB8,8位数据进入SBUF,且置位中断标 志RI.若上述两个条件不能同时满足,则丢失 接收的帧. 接收中断标志RI须由用户在中断服务程序 中或再次接收前清零.由于SM2是用于方式2和 方式3的多机通信标志位,在方式1时,SM2应 设置为0.
TI 发送中断标志. 在方式0中,发送完第8
位数据时由硬件置位;在其他方式中,在发送停止位 的开始时由硬件置位.当TI=1时申请中断,CPU响应 中断后可以发送下一帧数据,发送前TI必须先由软件 清零.
RI 接收中断标志.方式0中接收到第8位结束
时由硬件置位.在其他方式中当接收到停止位的中间 时刻由硬件置位.RI=1时申请中断,要求CPU取走数 据.当在方式1中,当SM2=1时,若未接收到有效的停 止位,则不会对RI置位.RI位也必须由软件清零. 在系统复位时,SCON中所有的位被清零,串行口 默认的工作方式为方式0.
3.CRC循环冗余校验 循环冗余校验的基本原理是将一个数据块 看成一个很长的二进制数.例如,把一个128 字节的数据块看作是一个1024位的二进制数, 然后用一个特定的数去除它,将得到的余数作 为校验码附在数据块的后面一起发送.在接收 到该数据块和校验码之后,对它作同样的运算, 所得的余数应为0.如果计算结果不为0,就表 示接收有错.
80C51系列单片机本身就具有奇偶校验功能.当一 个字节数据送入累加器A中之后,该字节的奇偶特性标 志便自动出现在程序状态字PSW的PSW.0位P中.若累加 器中1的个数为奇数个,则置P=1;1的个数为偶数个, 则令P=0. 奇偶校验的方法是:当发送一个数据时,将该数据 与它的奇偶标志位组成一帧数据一起发送.接收方收 到这帧数据后,把数据与奇偶标志位分开,将数据送 入累加器A中,在PSW.0中得到接收数据的奇偶标志位, 然后再将PSW.0与接收到的标志位相比较,如果不同, 则表示传送的数据有误.
2.累加和校验
累加和校验是在传送数据块之前先对n个字 节进行加法运算,得到累加和.把累加和附在 n个字节后面传送,接收方收到n字节后也按同 样方法进行n字节求和,然后把两个累加和进 行比较,如果不同,表示数据块传送出错. 累加和的加法运算可以采用逻辑加,采用异 或操作指令完成;也可以用算术加法指令按算 术加法得到累加和.
图9-2 串行口方式0接收/发送时的数据格式
①发送过程:当一个数据通过MOV指令写入串 行口数据缓冲器SBUF,就启动以FOSC/12为波特 率的一帧数据的发送,从RXD端由低位到高位 逐位输出8位数据,TXD端发送同步用的移位脉 冲.每发完一帧有效数据,就将发送中断标志 TI置1.要继续发送前,TI必须用软件清0. ②接收过程:当SCON中RI=0,并置接收允许位 REN=1,就开始接收数据.此时以RXD为数据 输入端,TXD为同步移位脉冲输出端.接收器 以FOSC/12的波特率接收从RXD端输入的数据信 息.当接收完一帧信号时RI=1,从而发出接收 中断申请.这时可以从SBUF中把收到的数据读 出来.要继续接收数据前必须用指令清除RI位.
9.2.3 串行口工作方式
MCS-51单片机串行口有四种工作方式,可 以满足不同的应用需求.通过设定SCON中的 SM0,SM1两位,可以决定串行口的工作方式. 表9-1 串行口4种工作方式的基本功能特性
SM0 SM1 方式
0 0 1 0 1 0 0 1 2
基本功能
波特率
端 口 特 性 RXD收,发数据,TXD发同步脉冲 RXD接收数据,TXD发送数据 RXD接收TXD发送,可用于多机通信
不
将收到的数据丢弃.
SM2=1在方式2,3下常用于多机通信, SM2=0在方式2,3下常用于校验通信.
REN 允许串行口接收位.由软件置位或 清零.当REN=1,允许串行口接收数据;REN= 0,禁止串行口接收. TB8 是方式2,3中要发送的第九位数据. 在多机通信时,TB8用来表示地址帧或数据帧. TB8=1表示地址帧,TB8=0表示数据帧.在非 多机通信过程中,TB8可作为奇偶校验位发送. RB8 是方式2,3中接收到的第9位数据. 在方式1中,若SM2=0,RB8是接收到的停止位. 方式0不用RB8位.
第九章 51单片机的串行接口
本章内容: 9.1串行通信的基本概念 9.2MCS-51的串行接口 9.3串行口扩展技术
9.1 串行通信的基本概念
9.1.1 串行通信的基本方式
1.通信的定义 按照传统的概念,所谓通信就是信息的相互传输和交换. 2.通信的方法 单片机之间或单片机与其它设备之间信息交换按照数据传送 的形式可分成并行口传送和串行口传送两种方式. 3.通信中数据的传送方式 串行通信按照信号传输方向及能否同时传送信号分为单工方式, 半双工方式和全双工方式. 单工通信工作方式仅支持一个方向上的数据传送,即由甲机 传到乙机,甲机只作发送设备,乙机只作接收设备. 半双工传送工作方式支持设备甲与设备乙之间相互交替的数 据传送. 全双工通信工作方式支持通信双方同时发送,接收数据,通 信双方都具有相互独立的数据发送通道和数据接收通道.
9.1.2 串行通信的基本类型和特点 1.同步通信方式 同步通信采用数据块成帧的形式,是一种 连续串行传送数据的方式,每次通信传送一帧 信息.每帧格式开头是同步字符SYNC,同步字 符后面是消息头或称为报头,报头后面是消息 或称为报文,最后是校验字符. 2. 异步通信方式 异步通信按字符或字节成帧格式进行传送. 异步通信协议规定每帧传送的字符由一个起始 位,5-8个数据位,一个奇偶校验位和1-2个 停止位组成.相邻两个字符或两帧之间的间隔 时间可以任意长.
2.方式1 置SCON中的SM0=0,SM1=1时,串行口设定为工作方式1, 即波特率可变的8位异步通信方式. 串行口方式1的波特率=(定时器1的溢出率) ×2SMOD/32,需要设定.一般将定时器/计数器T1设定为方 式2作为波特率发生器.此时T1作为两个8位的可以自动重 新装载计数初值的定时器,用TL1装载计数值,TH1装载重 装的初值常数. 方式1传送一帧数据的格式如图9-3所示,每帧数据为 10位,由一位起始位0,低位在先的8位数据位,以及一位 终止位1组成.方式1由TXD端发送数据,RXD端接收数据.
起始位0 D0 D1 D2 D3 D4 D5 D6 D7 终止位1 图9-3 串行口工作方式1的数据帧格式
串行口工作方式1一般用于单片微机点对点之间的通信.
①发送过程:初始化设定后,对SBUF送入数 据,CPU就启动将数据从TXD端输出,发送完数 据置中断标志位TI为1.要继续发送前,TI用 指令清0. ②接收过程:当REN置1且RI=0时,CPU检测 到RXD端有从1到0的跳变信号就开始接收,并 复位内部16分频接收器实现同步.计数器的16 个状态把一位时间等分成16份,并在第7,8, 9个计数状态时采样RXD的电平.每位数值采样 三次,三次中至少有两次相同才被确认接收.
图9-1 MCS-51单片机的串行口结构示意图
9.2.2 串行口控制字 用来控制串行口的两个特殊功能寄存器是: 串行口控制寄存器SCON和电源控制寄存 器PCON.串行口用于收发数据的特殊功 能寄存器是串行口收/发缓冲器SBUF. 当串行口工作需要设定波特率时,要利用 定时器作为波特率发生器.那时还要用 到定时器/计数器控制字TMOD以及定时器 时间初值寄存器THi和TLi.此外,与串 行口相关的SFR还有中断允许寄存器IE以 及中断优先寄存器IP.