《单片机第七章 串行口》由会员分享,可在线阅读,更多相关《单片机第七章 串行口(95页珍藏版)》请在金锄头文库上搜索。
1、第七章80C51单片微机的串行口原理及应用 1串行传送方式和并行传送方式1)串行传送方式:单位信息的各位一位一位地按顺序依次传送。串行传送方式的物理信道为串行总线。串行数据传送方式的特点是成本低,但速度慢。2)并行传送方式:单位信息(同常为一个字节)的各位数据同时传送。所 传送数据的各位同时发送或接收。2 单工方式、半双工方式、全双工方式 异步传输和同步传输 异步传输 以字符为单位进行数据传输,每个字符都用起始位、停止 位包装起来,组成一帧数据。收、发方采用各自独立的时钟,发送和接收没有同步时钟 同步,传送过程中字符之间允许有长短不一的间隔。传送 中数据帧之间的空闲时间插入停止位。当接收设备检
2、测到 数据信号线有起始位到来,才开始接收数据。异步通信的 传送速率较慢,但硬件的要求较低。 同步传输发送和接收同步进行,从而实现数据的不间断传送。为了 实现同步,发送设备与接收设备之间不仅连有数据线,还 连接同步时钟信号线,由主设备发出同步时钟信号,以达 到发送与接收同步进行。每个数据块的开头以同步字符加以指示,使发送与接收双 方取得同步。数据块的各字符之间没有起始位和停止位,由于同步通信可以实现数据的不间断传送,所以传送速率 较快,但硬件要求能够发送同步时钟信号和能够发送、检 测同步字符等功能。 波特率 波特率表示每秒钟传送离散事件的个数,或每秒信号电 平的变化次数,单位为band(波特)。
3、比特率指每秒传送二进制数据的位数,单位为比特/秒(bit/s或bps)。二进制的情况下,波特率与比特率数值相等。假若数据传送速率为120字符/s,而每一个字符帧已规定为10个数据位,则传输速率为120101200bit/s,即波特率为1200。每一位数据传送的时间为波特率的倒数:T=112000.833ms7.2 80C51串行口及控制7.2.1 80C51串行口结构 80C51中的串行口是一个全双工的异步串行通信 接口,它可作UART(通用异步接收和发送器)用,也可作同步移位寄存器用。所谓全双工的异步串行通信接口,是说该接口可以同时进行接收和发送数据。80C51串行口基本结构如图71所示。主
4、要由两 大部分组成。 波特率发生器: 它提供串行口的时钟信号:发送时钟和 接收时钟 串行口的内部 串行数据缓冲寄存器SBUF有接收缓冲器SBUF和发送缓冲器SBUF,在物理上 是隔离的,但是占用同一个地址(99H) 。 串行口控制寄存器SCON 串行数据输入输出引脚通常,接收方式下,串行数据从RXD(P3.0)引脚输入通常,发送方式下,串行数据通过TXD(P3.1)引脚输出 。 串行口控制逻辑接收来自波特率发生器的时钟信号 TXCLOCK(发送时钟)和RXCLOCK(接收时钟)控制内部的输入移位寄存器将外部的串行数据 转换为并行数据;控制内部的输出移位寄存器将内部的并行数据 转换为串行数据输出
5、;控制串行中断(RI和TI)。 7.2.2 80C51串行口控制 串行口状态控制寄存器 SCON 字节地址为98H,位地址为98H9FH。其格式如下:位地 址9FH 9EH9DH9CH 9BH9AH 99H 98H位功 能SM0SM1SM2REN TB8 RB8 TI RI SM0,SM1串行口工作方式选择位。功能见表71SM2(SCON.5)方式2、3中的多机通信控制位。u方式0时,SM20。u方式1时,若SM2l,只有接收到有效的停止位,接收 中断RI才置1。u方式2和方式3时,1)若SM21,则只有当接收到的第9位数据(RB8)为1时,才将接收到数据送入缓冲器SBUF中,并把RI置1、同
6、时向CPU申请中断;如果接收到的第9位数据(RB8)为0,RI置0,将接收到的数据丢弃。2)当SM20时,则不论接收到的笫9位数据是0 或1 ,都将接收的数据装入SBUF中,并申请中断。REN允许串行接收位。REN1时,允许串行接收;REN0时,禁止串行接收 。用软件置位清除。TB8方式2和方式3中要发送的第9位数据。在通信协议中,常规定TB8作为奇偶校验位。在80C51多机通信中,TB8=0用来表示数据帧; TB8=1表示是地址帧。用软件置位清除。RB8(SCON.2)方式2和方式3中接收到的第9位数据 。方式1中接收到的是停止位。方式0中不使用这一位。 TI(SCON1)发送中断标志位。方
7、式 0中,在发送第 8位末尾置位;在其它方式时,在发送停止位开始时设置。由硬件置位,用软件清除。RI(SCON0)接收中断标志位。方式 0中,在接收第 8位末尾置位;在其它方式时, 在接收停止位中间设置。由硬件置位,用软件清除。 电源控制寄存器 PCON其中最高位SMOD与串行口控制有关,其它位与 掉电方式有关。其格式如下: D7 D6 D5 D4 D3 D2 D1 D0SMOD GF1 GF0 PD IDLSMOD(PCON.7)串行通信波特率系数控制位 。当SMOD1时,使波特率加倍。复位后,SMOD0。 串行数据寄存器SBUF 包含在物理上是隔离的两个8位寄存器:发送数据寄存器和接收数据
8、寄存器,它们共用一个地址 99H。读SBUF(MOV A,SBUF),访问接收数据寄存器;写SBUF(MOV SBUF,A),访问发送数据寄存器。 7.3 串行口的工作方式 在串行口控制寄存器SCON中,SM0和SM1位决定串行口的工作方式。80C51串行口共有四种工作方式。 7.3.1 串行口方式0 同步移位寄存器方式 当SM00、SM10时,串行口选择方式0。这种工作方式实质上是一种同步移位寄器方式。数据传输波特率固定为(112)fosc。由RXD(P30)引脚输入或输出数据,由TXD(P31)引脚输出同步移位时钟。接收发送的是8位数据,传输时低位在前。发送当执行任何一条写SBUF的指令(
9、MOV SBUF,A)时,就启动串行数据的发送。串行口以fosc/12的波特率将要发送的8位数据由RXD(P3.0)引脚串行移位输出;移位脉冲由TXD(P3l)输出。每个移位时钟对应一个输出的数据位。8位数据发送完毕,使发送中断标志TI置位,申请中断。至此,完成了一帧数据发送的全过程。若CPU响应中断,则执行从0023H开始的串行口发送中断服务程序。 接收当软件设置REN1且RI位清除时,就会启动一次接收过程。TXD引脚输出移位脉冲。同时由RXD引脚以fosc/12的波特率接收输入信号。当接收到8位数据时,将数据送入接收缓冲器SBUF,并置位SCON中的RI,发出中断申请,通知CPU取走数据。
10、完成一帧数据的接收过程。若CPU响应中断,则执行从0023H开始的串行口接收中断服务程序7.3.2 串行口方式1当 SM00、SM1l时,串行口选择方式1。 数据传输波特率由T1的溢出决定,可用程序设定。由 TXD(P31)引脚发送数据。由 RXD(P30)引脚接收数据。发送或接收一帧信息为10位:1位起始位(0)、8位 数据位(低位在前)和l位停止位(1)。帧格式如下:起 始D0 D1D2D3D4D5D6D7停 止发送:当执行任何一条写 SBUF的指令时,就启动串行数据的发送。数据以指定的波特率从TXD引脚输出(1位起始位,8位数据位,1位停止位),发送完一帧数据后把TI置1,申请中断,通知
11、CPU发送下一帧数据。在未发送下一帧数据时,TXD引脚始终为高电平。接收当REN1且清除RI后,若在RXD引脚上检测到一 个1到0的负跳变,开始接收一帧数据。串行口以指定的波特率,从RXD引脚串行输入8位 数据(低位在前)、1位停止位。当数据接收完毕,必须满足一定条件时,才能将8 位数据送入接收缓冲器SBUF保存,并置位RI,申请中 断;否则不可恢复地丢失接收到的数据,也不置位RI。 两个条件均满足时,将数据送入接收数据缓冲器SBUF和停止位送入RB8,将RI置1。 RI0 即上一帧数据接收完成时发出的中断请求已被响应,SBUF中数据已被取走。 SM20或接收到的停止位1。若以上两个条件有一个
12、不满足,将不可恢复地丢失接收到的这一帧信息。 7.3.3 串行口方式2和3 9位UART 当SM01、SM10时,串行口选择方式2;当SM11、SM01时,串行口选择方式3。由TXD(P3l)引脚发送数据。由RXD(P30)引脚接收数据。发送或接收一帧信息为11位:1位起始位(0)、8位数据位(低位在前) 、1位可编程位 和1位停止位(l)。发送时TB8提供第9位数据,TB8可软件设置为1或0,接 收时第9位数据进入SCON寄存器的RB8位。帧格式如下: 起始D0D1D2D3D4D5D6D7D8停止发送发送前,先根据通信协议由软件设置TB8,然后将 要发送的数据写入SBUF,就启动串行数据的发
13、送。发送移位寄存器将数据由低位到高位顺序输出至 TXD引 脚。发送完一帧数据后, TI置位。方式2的波特率是固定的,为振荡器频率的1/32或1/64 。方式3的波特率和方式1相同,由定时器/计数器的溢出 率决定。接收当RENl且清除RI后,若在RXD引脚上检测到 一个l到0的跳变,立即启动一次接收。当以下两个条件都满足时:RI0;SM20或接收到的第9位1。把接收到的9位数据送入接收数据缓冲器SBUF和 RB8,而且置位RI。若以上两个条件中有一个不满足,将不可恢复地 丢失接收到的这一帧信息。7.4 多处理机通信方式 主从式多机通信系统如图76 :当从机发送、主机接收时,可以很容易实现一对一通
14、信;当主机发送、从机接收时,必须通过相应的控制,才能实现一对一通信;当两个从机之间相互通信时,必须通过主机完成。下面分析当主机发送、从机接收时,如何实现一对一通信。首先,通信前作一些约定,给每个从机一个固定的地址,主机发送时,先发送要通信的从机地址,再发送数据。设计中采用方式2或3的11位异步通信方式,第9位作为标志位,1地址信息;0数据信息。多机通信过程如下: 1初始化阶段:设置所有从机为方式2或3接 收,并设置SM2=1,允许串行口中断。 2通信阶段 1)主机发送要通信的从机地址,第9位为1 ;由于所有的从机的SM2=1,则所有从 机都接收,并置位RI=1 2)所有从机响应中断,在中断服务
15、程序中 ,首先判断接收的地址是否为本机地址 ,若是,则设置本机的SM2=0,中断返回 ;若不是,则不做任何处理,直接中断 返回。3)主机发出数据信息,第9位为0,只有 SM2=0的从机接收数据,并置位RI=1,而 SM2=1的从机对接收的数据不予理睬4)通信的从机通过中断方式,将接收的数据 保存。通信结束恢复所有从机的SM2=1。7.5串行口的应用 7.5.1串行口的波特率及波特率计算 串行口的波特率发生器如图7-7所示。方式0时的波特率由振荡器的频率(fosc)所确定:波 特率为fosc/12。方式2时的波特率由振荡器的频率(fosc)和SMOD位 (PCON7)所确定: 方式1和3时的波特
16、率由定时器的溢出率和 SMOD(PCON7)所确定。 (1)用定时器T1(0)产生波特率 定时器T1的溢出率与它的工作方式有关:定时器Tl工作于方式2:此时定时器T1工作于一个8位可重装的方式,用TL1计数,用TH1装初值。 7.5.2 方式0的编程和应用 应用方式0可以扩展并行I/O口。例: 使用74LS164的并行输出端接8只发光二极 管,利用它的串入并出功能,把发光二极管从左向右 依次点亮,并不断循环之。电路连接图见图7-8。 MOV SCON,#00H;设串行口为方式0, CLR ES;禁止串行口中断MOV A,#80H ;先显示最左边发光二极管LED:MOV SBUF,A;串行输出JNB TI,$;输出等待CLR TIAC