实验四基于单片机的串行通信 实验目的 1.了解串行通信的基本知识; 2.掌握用单片机串行口实现串行通信的方法。 二、实验器材 微机、示波器、万用表、电源、AEDK仿真开发系统,面包板一块,MAX202C芯片一块, 电容、电阻、导线若干 三、实验原理 此处仅介绍与本实验内容密切相关的串行通信基本知识,其它有关基本知识介绍请见 本讲义实验七 1.串行通信的异步和同步传送方式 CPU与其外部设备之间的信息交换或计算机之间的信息交换均可被称为“通信”。 通信的基本方式可分为并行通信和串行通信两类。并行通信是指数据各位同时并行传 送的通信方式,而串行通信是指数据逐位顺序串行传送的通信方式(如图4.1所示) 在并行通信中,由于有多根传输线并行传送数据,因此传送速度快、通信速率高。但 当多位数据远程传输时,传输线路的开销就成为突出问题。由于串行通信只需一对传输线 并且可以利用电话线等现有通信信道作为传输介质,因而可以大大降低传输线路的成本 一般而言,串行通信的传送速度明显低于并行通信。 数据 计 算 计算机或外设 算 计算机或外设 机 (a)并行通信 (b)串行通信 图4.1通信方式示意图
25 实验四 基于单片机的串行通信 一、 实验目的 1. 了解串行通信的基本知识; 2. 掌握用单片机串行口实现串行通信的方法。 二、 实验器材 微机、示波器、万用表、电源、AEDK 仿真开发系统,面包板一块,MAX202C 芯片一块, 电容、电阻、导线若干。 三、 实验原理 此处仅介绍与本实验内容密切相关的串行通信基本知识,其它有关基本知识介绍请见 本讲义实验七。 1. 串行通信的异步和同步传送方式 CPU 与其外部设备之间的信息交换或计算机之间的信息交换均可被称为“通信”。 通信的基本方式可分为并行通信和串行通信两类。并行通信是指数据各位同时并行传 送的通信方式,而串行通信是指数据逐位顺序串行传送的通信方式(如图 4.1 所示)。 在并行通信中,由于有多根传输线并行传送数据,因此传送速度快、通信速率高。但 当多位数据远程传输时,传输线路的开销就成为突出问题。由于串行通信只需一对传输线, 并且可以利用电话线等现有通信信道作为传输介质,因而可以大大降低传输线路的成本。 一般而言,串行通信的传送速度明显低于并行通信。 D0 数据 D1 D2 D3 D4 D5 D6 D7 控制线 信号地 (a)并行通信 (b)串行通信 图 4.1 通信方式示意图 计 算 机 计 算 机 或 外 设 计 算 机 或 外 设 计 算 机
串行通信分为异步传送和同步传送两类。异步通信是一种字符再同步的通信方式,而 同步通信是靠识别同步字符来实现数据的发送和接收的。 (1)异步传送方式 异步传送的特点是:①数据以字符方式随机且断续地在线路上传送(但在同一字符的 内部的传送是同步的)。各字符的传送依发送方的需要可连续,也可间断。②通信双方用 各自的时钟源来控制发送和接收。③通信双方按异步通信协议传输字符 异步通信格式如图42所示,每个字符由起始位、数据位、奇偶校验位和停止位四个 部分顺序组成。这四个部分组成异步传输中的一个传输单元,即字符帧。 空闲位 起 校停起 数据位 验止始 数据位 校停 验止空闲位 位位 第n个字符帧 第n+1个字符帧 图42异步通信的字符帧格式 ●起始位:为“0”信号,占1位。起始位的作用有两个:①表示一个新字符帧的开始 即线路上不传送字符时,应保持为“1”。接收端检测线路状态连续为“1”后或在停 止位后有一个“0”,就知道将发来一个新的字符帧。②用以同步接收端的时钟,以保 证后续的接收能正确进行。 数据位:紧接于起始位后面,它可以占5、6、7或8位不等,数据的位数依最佳传送 速率来确定。如所传数据为ASCI码字符,则常取7位。数据位传输的顺序,总是最 低位(LSB)D在先 ●奇偶校验位:在数据位之后,占1位。它用来检验信息传送否有错。它的状态常由发 送端的奇偶校验电路确定。奇偶位的值取决于校验类型,若为偶校验,则数据位和校 验位中逻辑“1”的个数必须是偶数:若为奇校验,则数据位和校验位中逻辑“1”的 个数必须是奇数。也可以规定不用奇偶校验位,或用其它的校验方法来检验信息传送 过程是否有错。 停止位:用“1”来表征一个字符帧的结束。停止位可以占1位、1.5位或2位不等。 接收端收到停止位时,表明这一字符己接收完毕,也表明下一个字符帧可能到来。若 停止位以后不是紧接着传送下一个字符帧,则让线路上保持为“1”,即空闲等待状态 图42既表示一个字符紧接一个字符传送的情况,又表示两个字符间有空闲位的情况。 串行通信的一个重要指标是波特率。它定义为每秒钟传送二进制数码的位数(亦称波 特率),以“位/秒”(bps)为单位。在异步通信中, 波待率=(每个字符帧的位数)×(每秒传送的字符数) 常用的波特率有600、1200、2400、4800、9600、19200(bps)等。 由于异步通信双方各用自己的时钟源,若时钟频率等于波特率,则频率稍有偏差就会 产生接收错误。时钟频率应比波特率高,时钟频率与波特率的比一般选16:1或者64:1 采用较高频率的时钟,在一位数据内就有16或64个时钟,就可以保证捕捉正确的信号
26 串行通信分为异步传送和同步传送两类。异步通信是一种字符再同步的通信方式,而 同步通信是靠识别同步字符来实现数据的发送和接收的。 (1) 异步传送方式 异步传送的特点是:①数据以字符方式随机且断续地在线路上传送(但在同一字符的 内部的传送是同步的)。各字符的传送依发送方的需要可连续,也可间断。②通信双方用 各自的时钟源来控制发送和接收。③通信双方按异步通信协议传输字符。 异步通信格式如图 4.2 所示,每个字符由起始位、数据位、奇偶校验位和停止位四个 部分顺序组成。这四个部分组成异步传输中的一个传输单元,即字符帧。 z 起始位:为“0”信号,占 1 位。起始位的作用有两个:①表示一个新字符帧的开始。 即线路上不传送字符时,应保持为“1”。接收端检测线路状态连续为“1”后或在停 止位后有一个“0”,就知道将发来一个新的字符帧。②用以同步接收端的时钟,以保 证后续的接收能正确进行。 z 数据位:紧接于起始位后面,它可以占 5、6、7 或 8 位不等,数据的位数依最佳传送 速率来确定。如所传数据为ASCII码字符,则常取 7 位。数据位传输的顺序,总是最 低位(LSB)DB 0B在先。 z 奇偶校验位:在数据位之后,占 1 位。它用来检验信息传送否有错。它的状态常由发 送端的奇偶校验电路确定。奇偶位的值取决于校验类型,若为偶校验,则数据位和校 验位中逻辑“1”的个数必须是偶数;若为奇校验,则数据位和校验位中逻辑“1”的 个数必须是奇数。也可以规定不用奇偶校验位,或用其它的校验方法来检验信息传送 过程是否有错。 z 停止位:用“1”来表征一个字符帧的结束。停止位可以占 1 位、1.5 位或 2 位不等。 接收端收到停止位时,表明这一字符已接收完毕,也表明下一个字符帧可能到来。若 停止位以后不是紧接着传送下一个字符帧,则让线路上保持为“1”,即空闲等待状态。 图 4.2 既表示一个字符紧接一个字符传送的情况,又表示两个字符间有空闲位的情况。 串行通信的一个重要指标是波特率。它定义为每秒钟传送二进制数码的位数(亦称波 特率),以“位/秒”(bps)为单位。在异步通信中, 波待率=(每个字符帧的位数)×(每秒传送的字符数) 常用的波特率有 600、1200、2400、4800、9600、19200(bps)等。 由于异步通信双方各用自己的时钟源,若时钟频率等于波特率,则频率稍有偏差就会 产生接收错误。时钟频率应比波特率高,时钟频率与波特率的比一般选 16:1 或者 64:1。 采用较高频率的时钟,在一位数据内就有 16 或 64 个时钟,就可以保证捕捉正确的信号。 1 1 0 D0 D1 D2 D3 D4 D5 D6 D7 C 1 0 DO D1 D2 D3 D4 D5 D6 D7 C 1 1 1 空闲位 数据位 起 始 位 校 验 位 停 止 位 起 始 位 数据位 校 验 位 停 止 位 空闲位 第 n 个字符帧 第 n+1 个字符帧 图 4.2 异步通信的字符帧格式
因此,在异步通信中,收发双方必须事先约定两件事:一是规定字符帧格式,即规定 字符各部分所占的位数,是否采用校验,以及校验的方式等;二是规定所采用的波特率以 及时钟频率和波特率间的比例关系。异步传送由于不传送同步时钟脉冲,所以设备比较简 单,实现起来方便,它还可根据需要连续地或有间隙地传送数据,对各字符间的间隙长度 没有限制。缺点是在数据字符串中要加上起同步作用的起始位和停止位,降低了有效数据 位的传送速率,仅适合于低速通信的场合。 (2)同步传送方式 同步传送方式以许多字符或许多位组成的数据块为传输单位连续地传送数据。在通信 开始以后,发送端连续发送字符,接收端也连续接收字符,直到一个数据块传送结束。同 步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步 字符SYNC来指示,这就提高了数据传送的效率,其符号格式如图43所示。同步通信可 以分为单同步字符方式和双同步字符方式,图4.3(a)为双同步字符方式,图43(b)为 单同步字符方式,同步字符之后是连续的数据块。同步字符可以由用户约定,当然也可以 采用ASCI码中规定的SYN代码,即16H。按同步方式通信时,在发送时要插入同步字 符,接收方检测到同步字符时,即准备开始接收,因此,硬件设备需有插入同步字符和相 应的检测手段,设备较复杂。在同步传送时,无论接收或发送,都要求统一时钟。为了保 证接收正确无误,发送方除了传送数据外还要把时钟信号同时传送出去。同步传送的优点 是传送速率较高,可达56K波特或更高。 +同步字符1同步字符2 一同步字符 L「「数据「数据 图43同步传送符号格式 2.Mcs-51系列单片机的串行通信接口 MCS一51系列单片机内部有一个可编程的全双工串行通信口,可作为通用异步接收 和发送器,也可作为同步移位寄存器用。该串行口有4种工作模式(详见下文26)。片内 的定时器/计数器可用作波特率发生器。接收、发送均可工作在查询方式或中断方式。 2.1串行通信接口结构 MCS一51系列单片机内部的串行通信口,有二个物理上相互独立的接收、发送缓冲 器SBUF,对外也有两条独立的收、发信号线RxD(P3.0)和TxD(P3.1)。可以同时发送、 接收数据,实现全双工传送。发送缓冲器和接收缓冲器不能互换,发送缓冲器只能写入不 能读出,接收缓冲器只能读出不能写入。两个缓冲器占用同一个端口地址(99H)。具体对 哪一个缓冲器进行操作,取决于所用的指令是发送还是接收 接收是双缓存的,以避免在接收下一帧数据之前,CPU未能及时响应接收中断,未把
27 因此,在异步通信中,收发双方必须事先约定两件事:一是规定字符帧格式,即规定 字符各部分所占的位数,是否采用校验,以及校验的方式等;二是规定所采用的波特率以 及时钟频率和波特率间的比例关系。异步传送由于不传送同步时钟脉冲,所以设备比较简 单,实现起来方便,它还可根据需要连续地或有间隙地传送数据,对各字符间的间隙长度 没有限制。缺点是在数据字符串中要加上起同步作用的起始位和停止位,降低了有效数据 位的传送速率,仅适合于低速通信的场合。 (2) 同步传送方式 同步传送方式以许多字符或许多位组成的数据块为传输单位连续地传送数据。在通信 开始以后,发送端连续发送字符,接收端也连续接收字符,直到一个数据块传送结束。同 步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步 字符 SYNC 来指示,这就提高了数据传送的效率,其符号格式如图 4.3 所示。同步通信可 以分为单同步字符方式和双同步字符方式,图 4.3(a)为双同步字符方式,图 4.3(b)为 单同步字符方式,同步字符之后是连续的数据块。同步字符可以由用户约定,当然也可以 采用 ASCII 码中规定的 SYN 代码,即 16H。按同步方式通信时,在发送时要插入同步字 符,接收方检测到同步字符时,即准备开始接收,因此,硬件设备需有插入同步字符和相 应的检测手段,设备较复杂。在同步传送时,无论接收或发送,都要求统一时钟。为了保 证接收正确无误,发送方除了传送数据外还要把时钟信号同时传送出去。同步传送的优点 是传送速率较高,可达 56K 波特或更高。 (a) (b) 图 4.3 同步传送符号格式 2. MCS-51系列单片机的串行通信接口 MCS 一 51 系列单片机内部有一个可编程的全双工串行通信口,可作为通用异步接收 和发送器,也可作为同步移位寄存器用。该串行口有 4 种工作模式(详见下文 2.6)。片内 的定时器/计数器可用作波特率发生器。接收、发送均可工作在查询方式或中断方式。 2.1 串行通信接口结构 MCS 一 51 系列单片机内部的串行通信口,有二个物理上相互独立的接收、发送缓冲 器 SBUF,对外也有两条独立的收、发信号线 RxD(P3.0)和 TxD(P3.1)。可以同时发送、 接收数据,实现全双工传送。发送缓冲器和接收缓冲器不能互换,发送缓冲器只能写入不 能读出,接收缓冲器只能读出不能写入。两个缓冲器占用同一个端口地址(99H)。具体对 哪一个缓冲器进行操作,取决于所用的指令是发送还是接收。 接收是双缓存的,以避免在接收下一帧数据之前,CPU 未能及时响应接收中断, 未把 同步字符 1 同步字符 2 同步字符 数据 数据
上一帧数据取走而产生两帧数据重叠的问题。而对于发送器,因为发送时CPU是主动的, 不会产生写重叠的问题,所以不需要双缓存。 与串行通信口有关的寄存器有多个,除SBUF之外,还有SCON、PCON、I和定时 器/计数器,用校验方式进行通信,有时也会用到程序状态字寄存器PSW。 22串行口控制寄存器Sc0N SCON用于控制和监视串行口的工作状态,定义如下 表4.2S0ON寄存器 (MSB) (LSB) SMO SMI SM2 REN TB8 RB8TI SM0和SM1:串行口工作模式选择位,对应四种模式,见表43。 在模式0时,SM2不用,应设置为0。 在模式1时,SM2一般也应设置为0。若SM2=1,则只有收到有效停止位才会激活 RI,并自动发出串行口中断请求(设中断是开放的),若没有接收到有效停止位,则 RI清零。 在模式2或模式3下,SM2的设置与字符帧第九位的作用有关。①在第九位用作奇 偶位的情形,应置SM2=0。②在第九位用于表示是地址帧还是数据帧的多机通信情 形,若SM2=1和RB8=1时,RI不仅被激活,而且可以向CPU请求中断;若SM2 =0,串行口以单机发送或接收方式工作,TI和RI以正常方式被激活。SM2在多机 通信中的使用方法,详见本讲义P34的有关主从式多机通信过程的说明 表4.3串行口工作模式选择 SMO SM1 模式 功能 波特率 0 01 同步移位寄存器 for/12 0 8位UART 可变 9位UART fosc/64或fosc/32 9位UART REN:允许接收控制位,由软件置位或清除。REN=1则允许接收,REN=0,禁止接收。 TB8:该位是模式2和3中要发送的第九位数据。在许多通信协议中,该位是奇偶位, 可以按需要由软件置位或清除。在多机通信中,该位用于表示是地址帧还是数据帧 RB8:该位是模式2和3中已接收的第九位数据(可能是奇偶位,或是地址帧数据帧 标识位)。在模式1中,若SM2=0,RB8是已接收的停止位。在模式0中,RB8未用。 ●T:发送中断标志。在模式0中,在发送完第8位数据时,由硬件置位:在其他模式 中,在发送停止位之初,由硬件置位,申请中断,CPU响应中断后,发送下一帧数据 在任何模式中,都必须由软件清除T ●R:接收中断标志。在模式0中,接收第8位数据结束时,由硬件置位;在其他模式 中,在接收停止位的半中间,由硬件置位,申请中断,要求CPU取走数据。但在模式
28 上一帧数据取走而产生两帧数据重叠的问题。而对于发送器,,因为发送时 CPU 是主动的, 不会产生写重叠的问题,所以不需要双缓存。 与串行通信口有关的寄存器有多个,除 SBUF 之外,还有 SCON、PCON、IE 和定时 器/计数器,用校验方式进行通信,有时也会用到程序状态字寄存器 PSW。 2.2 串行口控制寄存器 SCON SCON 用于控制和监视串行口的工作状态,定义如下: 表 4.2 SCON 寄存器 (MSB) (LSB) SM0 SM1 SM2 REN TB8 RB8 TI RI z SM0 和 SM1:串行口工作模式选择位,对应四种模式,见表 4.3。 z SM2: 在模式 0 时,SM2 不用,应设置为 0。 在模式 1 时,SM2 一般也应设置为 0。若 SM2=1,则只有收到有效停止位才会激活 RI,并自动发出串行口中断请求(设中断是开放的),若没有接收到有效停止位,则 RI 清零。 在模式 2 或模式 3 下,SM2 的设置与字符帧第九位的作用有关。① 在第九位用作奇 偶位的情形,应置 SM2=0。② 在第九位用于表示是地址帧还是数据帧的多机通信情 形,若 SM2=1和 RB8=1 时,RI 不仅被激活,而且可以向 CPU 请求中断;若 SM2 =0,串行口以单机发送或接收方式工作,TI 和 RI 以正常方式被激活。SM2 在多机 通信中的使用方法,详见本讲义 P.34 的有关主从式多机通信过程的说明。 表 4.3 串行口工作模式选择 SM0 SM1 模 式 功 能 波 特 率 0 0 0 1 1 0 1 1 0 1 2 3 同步移位寄存器 8 位 UART 9 位 UART 9 位 UART fB OSCB/12 可变 fB OSCB/64 或fB OSCB/32 可变 z REN:允许接收控制位,由软件置位或清除。REN=1 则允许接收, REN=0, 禁止接收。 z TB8:该位是模式 2 和 3 中要发送的第九位数据。在许多通信协议中, 该位是奇偶位, 可以按需要由软件置位或清除。在多机通信中, 该位用于表示是地址帧还是数据帧。 z RB8:该位是模式 2 和 3 中已接收的第九位数据 (可能是奇偶位, 或是地址帧/数据帧 标识位)。在模式 1 中, 若 SM2=0, RB8 是已接收的停止位。在模式 0 中, RB8 未用。 z TI:发送中断标志。在模式 0 中, 在发送完第 8 位数据时, 由硬件置位;在其他模式 中, 在发送停止位之初, 由硬件置位,申请中断, CPU 响应中断后, 发送下一帧数据。 在任何模式中, 都必须由软件清除 TI. z RI:接收中断标志。在模式 0 中, 接收第 8 位数据结束时, 由硬件置位;在其他模式 中, 在接收停止位的半中间, 由硬件置位,申请中断, 要求 CPU 取走数据。但在模式
1中,SM2=1时,若未接收到有效的停止位,则不会对R置位。在任何模式中,都必 须由软件清除RI 2.3电源控制寄存器Pc0N中的波特率倍增控制位SMoD PCON中有与串行口通信波特率有关的控制位SMOD,SMOD=1时波特率加倍。 24允许中断寄存器|E的串行口中断控制位ES IE中的ES位为串行口中断控制位,ES=1且总中断允许位EA=1时,允许串行口中断 25定时器/计数器1作波特率发生器 在模式1和模式3下, 2 SMOD 波特率=2×(定时器/计数器溢出速率) 3212×(256-TH1) 其中⌒x为晶振频率,THl为定时器1的重装载值,定时器/计数器1工作于自动重装载 模式,即模式2。定时器1中断应禁止 2.6串行口的工作模式 串行口的四种工作模式中,模式1、2、3用于通信,模式0主要用于I/0口扩展。 模式0 在模式0状态下,串行口为同步移位寄存器方式,其波特率固定为fa/12。RxD(P3.0) 端输入/输出数据,而TxD(P3.1)线专用于输出时钟脉冲给外部移位寄存器。发送、接 收的是8位数据,低位在先。 模式1 串行口工作在模式1,为8位异步通信口,即一字符帧由10位组成:1位起始位、8 位数据位和1位停止位。 模式1发送 写SBUF 起姆包顶止位 图4.4模式1发送时序 图4.4示意模式1的发送时序。模式1的发送是在发送中断标志TI=0时,由一条写 SBUF的指令启动发送控制器的SEN端,使SEND=0。启动发送后,串行口能自动地插入
29 1 中, SM2=1 时, 若未接收到有效的停止位, 则不会对 RI 置位。在任何模式中,都必 须由软件清除 RI. 2.3 电源控制寄存器 PCON 中的波特率倍增控制位 SMOD PCON 中有与串行口通信波特率有关的控制位 SMOD,SMOD=1 时波特率加倍。 2.4 允许中断寄存器 IE 的串行口中断控制位 ES IE 中的 ES 位为串行口中断控制位,ES=1 且总中断允许位 EA=1 时,允许串行口中断。 2.5 定时器/计数器 1 作波特率发生器 在模式 1 和模式 3 下, 其中fB oscB为晶振频率, TH1 为定时器 1 的重装载值.,定时器/计数器 1 工作于自动重装载 模式, 即模式 2。定时器 1 中断应禁止。 2.6 串行口的工作模式 串行口的四种工作模式中,模式 1、2、3 用于通信,模式 0 主要用于 I/O 口扩展。 模式 0 在模式 0 状态下,串行口为同步移位寄存器方式,其波特率固定为fB oscB/12。RxD(P3.0) 端输入/输出数据,而TxD(P3.1)线专用于输出时钟脉冲给外部移位寄存器。发送、接 收的是 8 位数据,低位在先。 模式 1 串行口工作在模式 1,为 8 位异步通信口,即一字符帧由 10 位组成:1 位起始位、8 位数据位和 1 位停止位。 模式 1 发送 图 4.4 模式 1 发送时序 图 4.4 示意模式 1 的发送时序。模式 1 的发送是在发送中断标志 TI=0 时,由一条写 SBUF 的指令启动发送控制器的 SEND 端,使 SEND=0。启动发送后,串行口能自动地插入一 32 12 ( ) 256 1 2 TH fosc SMOD × − = × 波特率 ( ) 定时器/计数器溢出速率 32 2 = × SMOD
位起始位0,在字符结束前插入一位停止位1,然后在发送移位脉冲 SHIFT作用下,依次 由TxD线上发出。一个字符发完之后,自动维持TxD线的信号为1,在8位数据发出之后, 也就是在停止位开始时,使T置1,用以通知CPU可以发出下一个字符。 模式1发送时的定时信号,也就是发送移位时钟,是由定时器1送来的溢出信号经过 16或32分频(取决于SMOD的值)而取得的。因此,模式1的波特率是可变的。 模式1接收 模式1的接收是在SCON寄存器中REN=1时,从检测到RxD端的负跳变(在无信号时, 这xD的状态为1),并搜索到有效的起始位开始的。在接收移位脉冲的控制下,把收到的数 据逐位移人接收寄存器,直到收齐其余9位(包括1位停止位) 在接收操作时,有两种定时信号。一种是接收移位脉冲,它的频率和传送波特率相同, 也是由定时器1的溢出信号经过16或32分频而得到的。另一种是接收字符的检测脉冲(位 检测采样脉冲),它的频率是接收移位脉冲的16倍,亦即在一位数据期间有16个检测脉 冲,并以其中的第7、8、9三个脉冲作为真正的对接收信号的采样脉冲。对这三次采样结 果采用三中取二的原则来决定所检测到的值。采取这种措施的目的在于抑制干扰。由于采 样信号总是在接收位的中间位置,这样既可以避开信号两端的边沿失真,也可以防止由于 收发时钟频率不完全一致而带来的接收错误。模式1接收时序如图4.5所示 16分频器复位 起始厂mmX3 X D4X D5X D6 X D7止位 位检测采样 SHI IFT 图4.5模式1接收时序 在一个字符帧收齐之后,如果以下两个条件 (1)RI=0,即上一帧数据接收发出的中断请求已被响应,所收数据已取走; (2)SM2=0,或者接收到的停止位为1。 同时被满足,则将接收移位寄存器中的8位数据转存入串行口寄存器SBUF,收到的停止位 则进入RB8,并使接收中断标志RI置1:否则,刚收到的数据就不装人SBUF(意味着丢失 了一组数据),接收控制器就转入搜索RxD端新的负跳变。 模式2 串行口工作在模式2,为9位异步通信口,即一字符帧由11位组成:1位起始位、8 位数据位、1位可编程位TB8(第9数据位)和1位停止位。发送时,TB8根据需要设置为 0或1(TB8既可作为多机通信中的地址数据标志位又可作为数据的奇偶校验位);接收时 TB8之值被送入SCON中的RB8。 模式2发送
30 位起始位 0,在字符结束前插入一位停止位 1,然后在发送移位脉冲 SHIFT 作用下,依次 由 TxD 线上发出。一个字符发完之后,自动维持 TxD 线的信号为 1,在 8 位数据发出之后, 也就是在停止位开始时,使 TI 置 1,用以通知 CPU 可以发出下一个字符。 模式 1 发送时的定时信号,也就是发送移位时钟,是由定时器 1 送来的溢出信号经过 16 或 32 分频(取决于 SMOD 的值)而取得的。因此,模式1的波特率是可变的。 模式 1 接收 模式1的接收是在 SCON 寄存器中 REN=1 时,从检测到 RxD 端的负跳变(在无信号时, RxD 的状态为 1),并搜索到有效的起始位开始的。在接收移位脉冲的控制下,把收到的数 据逐位移人接收寄存器,直到收齐其余 9 位(包括 1 位停止位)。 在接收操作时,有两种定时信号。一种是接收移位脉冲,它的频率和传送波特率相同, 也是由定时器 1 的溢出信号经过 16 或 32 分频而得到的。另一种是接收字符的检测脉冲(位 检测采样脉冲),它的频率是接收移位脉冲的 16 倍,亦即在一位数据期间有 16 个检测脉 冲,并以其中的第 7、8、9 三个脉冲作为真正的对接收信号的采样脉冲。对这三次采样结 果采用三中取二的原则来决定所检测到的值。采取这种措施的目的在于抑制干扰。由于采 样信号总是在接收位的中间位置,这样既可以避开信号两端的边沿失真,也可以防止由于 收发时钟频率不完全一致而带来的接收错误。模式 1 接收时序如图 4.5 所示。 图 4.5 模式 1 接收时序 在一个字符帧收齐之后,如果以下两个条件: (1) RI=0,即上一帧数据接收发出的中断请求已被响应,所收数据已取走; (2) SM2=0,或者接收到的停止位为 1。 同时被满足,则将接收移位寄存器中的 8 位数据转存入串行口寄存器 SBUF,收到的停止位 则进入 RB8,并使接收中断标志 RI 置 1;否则,刚收到的数据就不装人 SBUF(意味着丢失 了一组数据),接收控制器就转入搜索 RxD 端新的负跳变。 模式 2 串行口工作在模式 2,为 9 位异步通信口,即一字符帧由 11 位组成:1 位起始位、8 位数据位、1 位可编程位 TB8(第 9 数据位)和 1 位停止位。发送时,TB8 根据需要设置为 0 或 1(TB8 既可作为多机通信中的地址数据标志位又可作为数据的奇偶校验位);接收时, TB8 之值被送入 SCON 中的 RB8。 模式 2 发送
写SBUF 起始也0 D2 X D3 X D4 X D5 X3止位 图4.6模式2发送时序 模式2发送时序如图4.6所示。CPU执行一条写SBUF的指令后,便立即启动发送器发 送,送完一帧信息后,TI被置1,在发送下一帧信息之前,TI必须由中断服务程序(或查 询程序)清零。 模式2接收 模式2的接收与模式1基本相似,不同之处是要接收9位有效数据。在模式1时把停 止位当作第9位数据来处理,而在模式2中存在着真正的第9位数据。模式2有效接收数 据的条件为 (1)RI=0,即用户已把SBUF中上次收到的数据读走 (2)SM2=0,即非多机通信情况;或SM2=1,即在多机通信情况下,收到的第9位 数据为1,表示所收到的是地址帧。 若这两个条件成立,接收到的第9位数据进入RB8,而前8位数据进入SBUF以准备让CPU 读取,并且置位RI。否则这次接收无效,RI不被置位。图4.7表示模式2接收时序。 16分频器复位 位mm的 X D4 X D5 X D6X D7 X RB8Y伴止位 位检测采样 HIFT 图4.7模式2接收时序 模式3 模式3除了波特率可编程外,其余与模式2相同 2.7主从式多机通信 多机通信的大致过程如下 (1)主机置SM2=0 (2)所有从机置SM2=1,处于等待接收地址帧、准备与主机通信的状态 (3)主机发送一帧信息,其中包含被寻址从机的8位(bit)地址,第9数据位TB8=1 用以表示地址帧 (4)各从机收到地址帧后,各自中断CPU,依据寻址信息判断本机是否被寻址: (5)被寻址的从机置SM2=0,该从机将响应来自主机的后续控制信息和数据。其余未被 寻址的从机维持SM2=1,这些从机将只对来自主机的地址信息帧有响应: 6)被寻址的从机与主机通信结束后,置SM2=1,恢复等待接收地址帧、准备与主机进 31
31 图 4.6 模式 2 发送时序 模式 2 发送时序如图 4.6 所示。CPU 执行一条写 SBUF 的指令后,便立即启动发送器发 送,送完一帧信息后,TI 被置 1,在发送下一帧信息之前,TI 必须由中断服务程序(或查 询程序)清零。 模式 2 接收 模式 2 的接收与模式 1 基本相似,不同之处是要接收 9 位有效数据。在模式 1 时把停 止位当作第 9 位数据来处理,而在模式 2 中存在着真正的第 9 位数据。模式 2 有效接收数 据的条件为: (1) RI=0,即用户已把 SBUF 中上次收到的数据读走; (2) SM2=0,即非多机通信情况;或 SM2=1,即在多机通信情况下,收到的第 9 位 数据为 1,表示所收到的是地址帧。 若这两个条件成立,接收到的第 9 位数据进入 RB8,而前 8 位数据进入 SBUF 以准备让 CPU 读取,并且置位 RI。否则这次接收无效,RI 不被置位。图 4.7 表示模式 2 接收时序。 图 4.7 模式 2 接收时序 模式 3 模式 3 除了波特率可编程外,其余与模式 2 相同。 2.7 主从式多机通信 多机通信的大致过程如下: (1) 主机置 SM2=0; (2) 所有从机置 SM2=1,处于等待接收地址帧、准备与主机通信的状态; (3) 主机发送一帧信息,其中包含被寻址从机的 8 位(bit)地址,第 9 数据位 TB8=1 用以表示地址帧; (4) 各从机收到地址帧后,各自中断 CPU,依据寻址信息判断本机是否被寻址; (5) 被寻址的从机置 SM2=0,该从机将响应来自主机的后续控制信息和数据。其余未被 寻址的从机维持 SM2=1,这些从机将只对来自主机的地址信息帧有响应; (6) 被寻址的从机与主机通信结束后,置 SM2=1,恢复等待接收地址帧、准备与主机进
行下一次通信的状态 四、实验内容 1.用双踪示波器分析串行口工作在模式1(10位异步方式)下的信号结构 设定串行口工作模式1(10位异步方式),用1200bps循环发送一个字节55H或8AHl 用双踪示波器同时观测TXD的T∏L电平和RS-232电平波形图,分析信号的帧结构,标 出起始位、数据位和终止位,用示波器测量码元宽度,给出1200bps波特率条件下的THl 计算值、码元宽度的计算值和测量值。 参考程序如下 START: MOV SP, #50H MOV TMOD #20H T/C1定时器方式,模式2 MOV SCON #70H 串行口工作模式1、允许接收 MOV TH1 #XXI 波特率设置值自定(CPU的时钟频率f∞=11.059Mz) MOV TLI. #XXF SETB TRI MOV A#8AH ST1: MOV SBUF. A 将数据送发送缓冲区 JNB TI, S ;等待发送结束 CLR TI 清发送结束标志 AJMP STl 2.编写本机串行口自检程序,通过自发自收确认串行口工作正常。 3.实现两个单片机系统之间的串行口异步通信(可两人合作完成,但是每人都应 独立完成兼有发送和接收功能的程序;或一人独立编程,在两个单片机系统上 运行)。 具体要求如下(建议编程时逐步增加功能) 1)中断方式发送、接收 2)成组数据发送和接收:发送端发送外部数据存储器中大于64字节长的成组 数据(格式为“数据字节长度+成组数据”)。每组数据发送结束后,等待对 方反馈信息。若对方确认接收无误,就发送下一组数据;若在2秒钟内未得 到对方响应,则重发。接收端收到数据后,存于外部数据存储器(不要与发 送的数据区重叠),并反馈接收正确与否的信息。 3)上述实验内容2)中用单片机的P1口驱动LED表示发送或接收成功与否。 4)(选做)上述实验内容2)中发送、接收每个字节时采用奇(或偶)检验(参 见有关参考书关于程序状态字寄存器PSW的说明)。 双机间的连线如下: TXD------------RXD RXD--------------TXD GND--------------GND
32 行下一次通信的状态。 四、 实验内容 1. 用双踪示波器分析串行口工作在模式 1(10 位异步方式)下的信号结构 设定串行口工作模式 1(10 位异步方式), 用 1200bps 循环发送一个字节 55H 或 8AH。 用双踪示波器同时观测 TXD 的 TTL 电平和 RS-232 电平波形图,分析信号的帧结构,标 出起始位、数据位和终止位, 用示波器测量码元宽度,给出 1200bps 波特率条件下的 TH1 计算值、码元宽度的计算值和测量值。 参考程序如下: START: MOV SP,#50H MOV TMOD,#20H ;T/C1 定时器方式, 模式 2 MOV SCON,#70H ;串行口工作模式 1、允许接收 MOV TH1,#XXH ;波特率设置值自定(CPU 的时钟频率 fosc=11.059 MHz) MOV TL1,#XXH SETB TR1 MOV A,#8AH ST1: MOV SBUF,A ;将数据送发送缓冲区 JNB TI,$ ;等待发送结束 CLR TI ;清发送结束标志. AJMP ST1 2. 编写本机串行口自检程序,通过自发自收确认串行口工作正常。 3. 实现两个单片机系统之间的串行口异步通信(可两人合作完成,但是每人都应 独立完成兼有发送和接收功能的程序;或一人独立编程,在两个单片机系统上 运行)。 具体要求如下(建议编程时逐步增加功能): 1) 中断方式发送、接收。 2) 成组数据发送和接收:发送端发送外部数据存储器中大于 64 字节长的成组 数据(格式为“数据字节长度+成组数据”)。每组数据发送结束后,等待对 方反馈信息。若对方确认接收无误,就发送下一组数据;若在 2 秒钟内未得 到对方响应,则重发。接收端收到数据后,存于外部数据存储器(不要与发 送的数据区重叠),并反馈接收正确与否的信息。 3) 上述实验内容 2)中用单片机的 P1 口驱动 LED 表示发送或接收成功与否。 4) (选做)上述实验内容 2)中发送、接收每个字节时采用奇(或偶)检验(参 见有关参考书关于程序状态字寄存器 PSW 的说明)。 双机间的连线如下: TXD--------------RXD RXD--------------TXD GND--------------GND
串行口中断服务子程序参考编程格式 SIO SUB JBC TITO SEND JBC RLTO RECE RETI TO SEND∴… RETI TO RECE RETI 五、思考题 请分析:要保证以本讲义所述模式1通信的正常进行,所允许的收、发双方波 特率的最大相对误差是多少。 六、实验报告附加要求 1.画出实验内容1中所传输数据的10位字符帧结构示意图。 2.比较波特率的实测值和程序设定值。 3.画出实验内容3的程序流程图,并简要注释主要程序段
33 串行口中断服务子程序参考编程格式: SIO_SUB: JBC TI,TO_SEND JBC RI,TO_RECE RETI TO_SEND:… … RETI TO_RECE:… … RETI 五、 思考题 1. 请分析:要保证以本讲义所述模式 1 通信的正常进行,所允许的收、发双方波 特率的最大相对误差是多少。 六、 实验报告附加要求 1. 画出实验内容 1 中所传输数据的 10 位字符帧结构示意图。 2. 比较波特率的实测值和程序设定值。 3. 画出实验内容 3 的程序流程图,并简要注释主要程序段