第七章MCS-51单片机串行接口第一节串行通信的基本概念(一)学习要求1.掌握串行通信的基本概念。
2. 掌握异步通信和同步通信的区别。
(二)内容提要一:基本概念及分类串行通信是将数据的各位一位一位地依次传送。
适合于计算机之间、计算机与外部设备之间的远距离通信。
串行通信从传输方式分为:单工方式、半双工方式、全双工方式。
从接收方式来说,串行通信有两种方式:异步通信方式、同步通信方式。
二:串行口的功能MCS-51单片机中的异步通信串行接口能方便地与其他计算机或传送信息的外围设备(如串行打印机、CPU终端等)实现双机、多机通信。
串行口有4种工作方式,见表7-1。
方式0并不用于通信,而是通过外接移位寄存器芯片实现扩展并行I/O接口的功能。
该方式又称为移位寄存器方式。
方式1、方式2、方式3都是异步通信方式。
方式1是8位异步通信接口。
一帧信息由10位组成,其格式见图7-2a。
方式1用于双机串行通信。
方式2、方式3都是9位异步通信接口、一帧信息中包括9位数据,1位起始位,1位停止位,其格式见图7-2b。
方式2、方式3的区别在于波特率不同,方式2、方式3主要用于多机通信,也可用于双机通信。
表7-1(三)习题与思考题1、什么是并行通信?什么是串行通信?各有何优缺点?答:并行通信指数据的各位同时传输的通信方式,串行通信是指各位数据逐位顺序传输的通信方式。
2、什么是异步通信?什么是同步通信?各有何优缺点?3、什么是波特率?某异步串行通信接口每分钟传送1800个字符,每个字符由11位组成,请计算出传送波特率。
第二节MCS-51串行接口的组成(一)学习要求(1) 了解串行接口的结构。
(2) 了解串行接口的控制与状态寄存器工作原理。
(二)内容提要一:串行接口的结构串行接口主要由发送数据缓冲器、发送控制器、输出控制门、接收数据缓冲器、接收控制器、输入移位寄存器、波特率发生器T1等组成。
串行口中还有两个特殊功能寄存器SCON、PCON,特殊功能寄存器SCON用来存放串行口的控制和状态信息。
定时器/计数器1(T1)与定时器/计数器2(T2)都可构成串行口的波特率发生器,其波特率是否增倍可由特殊功能寄存器PCON的最高位控制。
二:串行接口控制与状态寄存器MCS-51串行口的工作方式选择、中断标志、可编程位的设置、波特率的增倍均是通过两个特殊功能寄存器SCON和PCON来控制的。
1.电源和波特率控制寄存器PCON电源控制寄存器PCON的格式如下:电源和波特率控制寄存器PCON,其地址为87H,只能进行字节寻址,不能按位寻址。
PCON的最高位D7位作SMOD,是串行口波特率的增倍控制位。
当SMOD=1时,波特率加倍。
例如在工作方式2下,若SMOD=0时,则波特率为f osc/64;当SMOD=1时,则波特率为f osc/32,恰好增大一倍。
系统复位时,SMOD位为0。
串行口控制寄存器SCON 解SCON各位的含义如下:D7D6D5D4D3D2D1D0SCON98H9FH9EH9DH9CH9BH9AH99H98H (1)串行口控制方式选择位SM0、SM1,其SM0、SM1由软件置位或清零,用于选择串行口的4种工作方式。
(2)多机通信控制位SM2和接收中断标志位RI SM2=1时,如果接收到的一帧信息中的第九位数据为1,且原有的接收中断标志位RI=0,则硬件将RI置1;如果第九位数据为0,则RI不置1,且所接收的数据无效。
SM2=0时,只要接收到一帧信息,不管第九位数据是0还是1,硬件都置RI=0,RI 由软件清零。
SM2由软件置位或清零。
多机通信时,SM2必须置1,双机通信时,通常使SM2=0。
方式0时SM2必须为0。
(3)发送中断标志位TI 在方式0中,发送完8位数据后,由硬件置位;在其它方式中,在发送停止位之初,由硬件使TI=1。
TI置位后可向CPU申请中断,任何方式中TI 位都必须由软件清除。
(4 ) 接收中断标志RI 在方式0中,接收完8位数据后,由硬件置位;在其它方式中,在接收停止位的一半时由硬件将RI置位(还应考虑SM2的设定)。
RI被置位后可允许CPU 申请中断,任何方式中TI位都必须由软件来清除。
串行发送中断标志TI和接收中断标志RI共用一个中断源,CPU并不知道是TI还是RI 产生的中断请求,所以在全双工通信时,必须由软件来断别。
(5)允许接收控制位REN REN=1时允许接收,REN=0时禁止接收。
REN由软件置位或清零。
(6)发送数据D8位TB8 TB8是方式2、方式3中要发送的第九位数据,事先用软件写入1或0。
方式0、方式1不用。
(7)接收数据D8位RB8方式2、方式3中,由硬件将接收到的第九位数据存入RB8。
方式1中,停止位存入RB8。
复位后SCON的所有位清零。
(三)习题与思考题1、MCS-51单片机的串行口由哪些功能部件组成?各有什么作用。
2、特殊功能寄存器SCON 和PCON的作用和工作过程是什么?第三节串行口的工作方式(一)学习要求(1) 了解串行接口的工作方式。
(2) 掌握波特率的计算。
(二)内容提要一、串行接口的工作方式0SM0=0、SM1=0串行口工作于方式0, 即串行寄存器方式或称为同步移位寄存器输入/输出方式。
CPU执行一条写SBUF的指令如MOV SBUF ,A就启动了发送过程。
发送的时序见图7-1。
接收时序见图7-2图7-1 方式0发送时序图7-2 方式0接收时序串行口方式0不适用于两个8051之间的数据通信,但可通过外接移位寄存器来扩展单片机的接口。
例如,可以采用74LS164可以扩展并行输出口,74LS165可以扩展输入口。
二、串行口工作方式1SM0=0,SM1=1串行口接口工作于方式1,即将8位异步通信接口方式,结构示意图见图7-7。
RXD为接收端,TXD为发送端。
一帧信息由10位组成,方式1的波特率可变,由定时器/计数器1或定时器/计数器2的溢出速率以及SMOD(PCON.7)决定,且发送波特率与接收波特率可以不同。
1.发送CPU执行一条写SBUF指令后便启动了串行口发送,数据从TXD输出,时序见图7-8a。
在指令执行期间,CPU送来“写SBUF”信号,将并行数据送入SBUF,并启动发送控制器,经一个机器周期,发送控制器的SEND、DATA相继有效,通过输出控制门从TXD上逐位输出一帧信号。
一帧信号发送完毕后,SEND、DATA失效,发送控制器硬件置发送中断标志TI=1,向CPU申请中断。
2.接收方式1的接收时序见图7-8b。
允许接收位REN被置1接收器就开始工作,跳变检测器以波特率16倍的速率采样RXD引脚上电平,当采样到从1到0的负跳变时,启动接收控制器接收数据,由于发送、接收双方各自使用自己的时钟,两者的频率总有少许差异。
为了避免这种影响,控制器将1位送时间等分成16分、位检测器在7、8、9三个状态也就是在位信号中央采样RXD三次。
而且,三次采样中至少两次相同的值被确认为数据,这是为了减小干扰的影响。
如果起始位接收到的值不是0,由起始位无效,复位接收电路。
如果起始位为0,则开始开始接收本帧其他数据。
控制器发出的内部移位脉冲将RXD上的数据逐位移入移位寄存器,当8位数据及停止位全移入后:(1)如果RI=0、SM2=0,接收控制器发出“装载SBUF”信号,将8位数据装入接收数据缓冲器SBUF,停止装入RB8,并置RI=1,向CPU申请中断。
(2)如果RI=0、SM2=1,那么只有停止位为1时才发生上述动作。
(3)如果RI=0、SM2=1且停止位为0,(通常由传输过程中的干扰所致)所接收的数据应会丢失,不再恢复。
(4)如果RI=1,则所接收的数据在任何情况下都会丢失。
无论出现哪一种情况,跳变检测器将继续采样RXD引脚的负跳变,以便接收下一帧信息。
接收器采用移位寄存器和SBUF双缓冲结构,以避免在接收后一帧数据之前,CPU尚未及时响应中断将前一帧数据取走,造成两帧数据重叠问题。
采用双缓冲器后,前、后两帧数据进入SBUF的时间间隔至少有10个位传送周期。
在后一帧数据送入SBUF之前,CPU有足够的时间将前一帧数据取走。
三、串行接口工作方式2和与方式3串行口工作在方式2、方式3时,为9位异步通信接口。
发送或接收的一帧信息由11位组成,见图7-2b。
方式2与方式3仅波特率不同,方式2的波特率为f osc/32(SMOD=1时)或f osc/64(SMOD=0时),而方式3的波特率由定时器/计数器具或定时器/计数器2及SMOD决定。
1.发送方式2、方式3发送时,数据从TXD引脚输出,附加的第九位数据由SCON中的TB8提供。
CPU执行一条写入SBUF的指令后立即启动发送器发送。
发送完一帧信息后由硬件置TI=1。
2.接收与方式1相似,REN置1后,跳变检测器不断对RXD引脚采样。
当采样到负跳变后就启动接收控制器。
位检测器对每位数据采集3个值,用采3取2办法确定每位的数值。
当第九位数据移入移位寄存器后,将8位数据装入SBUF,第九位数据装入RB8,并置RI=1,其时序见图2-26b。
与方式1相同,方式2、方式3中也设置有数据辨别功能,即当RI=1或SM2=1且第九位数据为0时所接收的一帧信息被丢失。
四、各方式波特率的设计在串行通信中,收发双方对发送或接收的数据速率(即波特率)要有一定的约定。
可通过对串行口编程设定。
各种工作方式下其波特率的设置均有所不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器T1的溢出率确定。
(1) 方式0的波特率 方式0时,其波特率固定为振荡频率的1/12,并不受PCON 中SMOD 位的影响。
因而,方式0的波特率=f osc /12。
(2) 方式2的波特率 方式2的波特率由系统的振荡频率f osc 和PCON 的最高位SMOD 确定,即为2SMOD ×f osc /64。
在SMOD=0时,波特率=f osc /64;在SMOD=1时,波特率=f osc /32。
(3) 方式1、3的波特率 MCS-51串行口方式1、3的波特率由定时器T1的溢出率和SMOD 的值共同确定,即方式1、3的波特率=(2SMOD /32)×定时器T1的溢出率。
其中定时器溢出率取决于计数速率和定时器的预置值。
计数速率与TMOD 寄存器中T /C 的设置有关。
当T /C =0时,为定时方式,计数速率= f osc /12;当T /C =1时,为计数方式,计数速率取决于外部输入时钟的频率,但不能超过f osc /24。
定时器的预置值等于M -X ,X为计数初值,M为定时器的最大计数,与操作模式有关。
(可取213、216、28)。
如果为了到达很低的波特率,则可以选择16位的操作模式,即模式1,或模式0,可以利用T1中断来实现重装计数值。