1、第5章单片机的定时/计数器与串行接口,作业: P129思考题 1、2、3设计、编程 5、6,第5章单片机的定时/计数器与串行接口,5.1 定时/计数器T0、T15.1.1 定时/计数器的结构和工作原理5.1.2 定时/计数器的寄存器5.1.3 定时器的四种工作方式5.1.4 定时计数器的应用程序设计5.1.5 小 结 5.2 串行接口,5-3,5.1 定时/计数器T0、T1,51系列单片机有2个16位定时/计数器:T0和T1 ;2个定时器都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合;定时/计数器实际上是16位加1计数器。T0由2个8位持殊功能寄存器TH0和TL0构
2、成,T1由2个8位持殊功能寄存器TH1和TL1构成。T0和T1都可由软件设置为定时或计数工作方式;T0和T1受2个特殊功能寄存器TMOD和TCON控制。,5.1.1 定时/计数器的结构和工作原理,方式REG,控制REG,5-4,定时/计数器T0(或T1)的内部结构和控制信号,S开关: S打向上,定时; S 打向下,计数。计数满,标志置位,产生中断。K开关:GATE=0时,TR0=1,定时/计数器启动工作;GATE=1时, 和TR0 同时为1时,启动工作。,内部控制,外部控制,8,5-5,5.1.1 定时/计数器的结构和工作原理,定时工作方式时,定时器脉冲由单片机内部振荡器经12分频后产生的。
3、每经过一个机器周期定时器(T0或T1)的数值加1,直至计数满产生溢出。例如:当8051采用12MHz晶体时,每个机器周期为1s,计5 个计数周期即为5 s,即定时5 s 。,1、定时工作方式,5-6,5.1.1 定时/计数器的结构和工作原理,计数工作方式时,计数脉冲信号来自T0(P3.4)和T1(P3.5)引脚。 当输入脉冲信号产生由1至0的下降沿时,定时器的值加1;在每个机器周期CPU采样T0和T1的输入电平。若前一个机器周期采样值为高,下一个采样周期值为低,则计数器加 1。 检测跳变需要2个机器周期,故最高计数频率f=fosc/24。 为了确保某个电平在变化之前至少被采样一次,要求电平保持
4、时间至少是一个完整的机器周期。,2. 计数工作方式,5-7,寄存器有2个:控制寄存器TCON(88H)工作方式寄存器TMOD(89H),1、工作方式寄存器TMOD(89H),TMOD用于控制T0和T1的操作方式。其各位的定义如下:,定时器T0,定时器T1,5.1.2 定时/计数器的寄存器,5-8,GATE:门控位GATE=0,TRx=1时,即可启动定时器工作 ;GATE=1,INTx=1且TRx=1时,才可启动定时器工作。,M1 M0:工作方式 选择位M1M0=00 工作方式0(13位方式)。M1M0=01 工作方式1(16位方式)。M1M0=10 工作方式2(8位自动再装入方式)。M1M0=
5、11 工作方式3(T0为2个8位方式)。,4,5-9,2. 控制寄存器TCON(88H),5-10,TF1:T1溢出中断请求标志。TF1=1,T1有溢出中断请求。TF1=0,T1无溢出中断请求。TR1:T1运行控制位。TR1=1,启动T1工作。TR1=0,停止T1工作。,TF0:T0溢出中断请求标志。TF0=1,T0有溢出中断请求。TF0=0,T0无溢出中断请求。TR0:T0运行控制位。TR0=1,启动T0工作。TR0=0,停止T0工作。,5-11,1、方式 0 M1M0=00T0(或T1)工作于13位定时、计数方式。16位寄存器(THX+TLX)只用13位,TLX的高3位未用。,5.1.3
6、定时器的四种工作方式,对TMOD寄存器的M1、M0位的设置,可选择工作方式03; 下面用THX、TLX(X=0或1)表示TH1、TL1、TH0、TL0。,8位,低5位,5-12,当TLX的低5位溢出时,向THX进位;而THX溢出时,硬件置位TFX。定时、计数溢出否,可查询TFx是否置位;如果开中断则产生溢出中断。方式0 最大计数值为 213 8192个脉冲;用于定时工作时,定时时间为:t(213一Tx初值) 机器周期,5.1.3 定时器的四种工作方式,5-13,2 、方式1 M1M0=01 (与方式0类似)16位定时计数方式,寄存器THx和TLx以16位参与操作。最大计数 21665536(个
7、外部脉冲) 定时工作方式时,定时时间为: t(216一Tx初值) 机器周期,5.1.3 定时器的四种工作方式,5-14,3、方式2 M1M0=108位的可自动重装载的定时/计数方式。16位的计数器被拆成两个8位,其中TLx用作8位计数器, THx用以保持计数初值。当TLx计数溢出,置位TFx,THx中的初值自动装入TLx,继续计数,循环重复计数。,5.1.3 定时器的四种工作方式,5-15,3、方式2 M1M0=10最大计数值为:28256(个外部脉冲)。 定时工作方式时,定时时间为: t(256一Tx初值) 机器周期这种工作方式可省去用户重装常数,并可产生精确的定时时间,特别适用作串行口波待
8、率发生器。,5.1.3 定时器的四种工作方式,5-16,TL0和TH0被分成为两个互相独立的8位计数器。,4、方式3 M1M0=11 仅适用于T0,TH0只能用作定时功能,占用定时器1的控制位TR1和中断标志位TF1,其启动和关闭仅受TRl的控制。这种情况下,T1仍可工作于方式0、1、2,但不能使用中断方式。只有将T1用做串行口的波特率发生器时,T0才工作在方式3,以便增加一个定时器。,5-17,定时/计数器0(方式3):2个8位计数器。,4、方式3 M1M0=11 仅适用于T0,5-18,如:采用12MHZ晶振时,MC=1us;6MHZ晶振, MC=2us。,1、定时/计数器的初值的计算和装
9、入定时器/计数器不同工作方式,其最大计数值(模值)不同,由于采用加1计数,因此计数初值应为负值,计算机中用有符号数采用补码表示。,初值的求法:定时方式: 初值 = t / MC补 =模t / MC,计数方式:初值 =模要计数的值X通常也可将初值设为0,5.1.4 定时计数器的应用程序设计,5-19,例 计算T0 计数100个脉冲的初值,方式1 (16位方式):初值=(-64H)=10000H-64H=FF9CH用指令装入计数初值:MOV TH0,#0FFHMOV TL0,#9CH,用指令装入初值:,MOV TH0,#0FCH; MOV TL0,#1CH;(xxx用0填入),方式0( 13位方式
10、):初值=(-64H)=2000H64H=1F9CH1F9CH0001 1111 1001 1100 B,5-20,方式2(8位自动再装入方式)初值=(64H)=100H64H=9CH初值既要装入TH0,也要装入TL0:MOV TH0,#9CHMOV TL0,#9CH,5-21,定时计数器的初始化编程步骤: 1)根据定时时间要求,计算计数器初值; 2)设置工作方式控制字,送TMOD寄存器; 3)设置初值,送到THX和TLX寄存器中; 4)启动定时(或计数),即置位TRX。如果工作于中断方式,需要置位EA(中断总开关)及ETX(允许定时/计数器中断),并编中断服务程序。,定时/计数器是可编程部件
11、,使用前应先对其内部寄存器进行设置-这称为初始化编程。,2、定时/计数器的初始化编程,5-22,例5-1 如图所示: P1中接有八个发光二极管,编程使八个管轮流点亮,每个管亮100ms,设晶振为6MHz。,3、应用编程举例,5-23,分析 : 利用T1完成100ms的定时,当P1口线输出1时,发光二极管亮,每隔100ms,1左移一次。,采用方式1定时,先计算计数初值:6MHz晶体,机器周期 MC=2s 计数值: 100ms/2s =50000=C350H 定时器初值:(C350H)补 =10000H-C350H=3CB0H,T1 方式1 :TMOD=10H,5-24,ORG 00HMOV TM
12、OD,#10H ;T1工作于定时方式1MOV A,#01H ;置初值,第一个LED亮 NEXT:MOV P1,A MOV TH1,#3CHMOV TL1,#0B0H ; 定时100ms SETB TR1 AGAI: JBC TF1,SHI ; 100ms到转SHI,并清TF1SJMP AGAI SHI: RL ASJMP NEXT,程序如下,查询方式,5-25,ORG 0030H ;主程序 MAIN:MOV A,#01H MOV P1,A ;置初值,第一个LED亮MOV TMOD,#10H ;T1工作于定时方式1MOV TH1,#3CHMOV TL1,#0B0H ;定时100msSETB EA
13、 ;中断总允许SETB TR1 ;启动T1工作SETB ET1 ;允许T1中断 WAIT:SJMP WAIT ;等待中断,中断方式,ORG 0000H AJMP MAIN ;单片机复位后从0000H开始执行ORG 001BH ;T1中断入口AJMP TIME1 ;转到T1 中断服务程序,5-26,TIME1:RL A ;左移一位 MOV P1,A ;下一个发光二极管亮MOV TH1,#3CHMOV TL1,#0B0H ;重装计数值RETI ;中断返回,中断服务程序,以上程序执行结果,八个LED一直循环轮流点亮。,Ex5_1.sdn,5-27,例5-2 在P1.7端接一个发光二极管LED,要求利
14、用定时控制使LED亮一秒灭一秒,周而复始,设fosc=6MHZ。,分析:16位定时最大 65536*2us=131.072ms,显然不能满足要求,可用以下两种方法解决。,5-28,两个定时/计数器均采用查询方式:,方法1:用一个定时,另一个计数,采用T0产生周期为200ms脉冲,即P1.0每100ms取反一次作为T1的计数脉冲,T1对下降沿计数,因此T1计5个脉冲正好1s。如图,T0定时、方式1:初值 X0= 65536100*103/2 得:X=3CB0 H; T1计数、采用方式2:计数初值X1 =2565=FBH,TMOD=61H; TH0=3CH TL0=0B0HTH1=TL1=0FBH
15、,5-29,流程图,5-30,程序中用JBC指令对定时/计数溢出标志位进行检测,当标志位为1时跳转并清标志。,方法一、程序如下,ORG 0000H MAIN:CLR P1.7SETB P1.0MOV TMOD,#61HMOV TH1,#0FBHMOV TL1,#0FBHSETB TR1 LOOP1:CPL P1.7,LOOP2:MOV TH0,#3CHMOV TL0,#0B0HSETB TR0LOOP3: JBC TF0,LOOP4SJMP LOOP3LOOP4:CPL P1.0JBC TF1,LOOP1AJMP LOOP2END,Ex5_2.sdn,5-31,方法2:,T0每隔100ms中断
16、一次,利用软件对T0的中断次数进行计数,中断10次即实现了1秒的定时。,ORG 00HAJMP MAIN ;主程序ORG 000BH ;T0中断服务程序入口 AJMP TIMER0,5-32,ORG 0030H ;主程序开始MAIN: CLR P1.7MOV TMOD,#01HMOV TH0,#3CH ;T0定时100msMOV TL0,#0B0HSETB ET0SETB EAMOV R4,#0AH ;中断10次计数器SETB TR0SJMP ;等待中断,方法二:主程序,5-33,TIMER0: DJNZ R4,RET0MOV R4,#0AH ;重置10次计数值CPL P1.7 ;LED取反
17、RET0: MOV TH0,#3CH ;定时初值重装载MOV TL0,#0B0H;SETB TR0RETI,方法二:中断服务程序,Ex5_2.sdn,5-34,5.1.5 小 结,定时/计数器应用非常广泛,如定时采样、时间测量、产生音响、作脉冲源、制作日历时钟、测量波形的频率和占空比、检测电机转速等。因此应很好掌握。51系列单片机有两个16位的定时/计数器,有四种不同的工作方式,归纳于表中(P105) 。使用定时/计数器前要先初始化,设置方式控制字TMOD,计数初值THx,TLx;启动工作TRx;中断方式,还需开中断(EA和ETx)。定时/计数器是加1计数,初值为负数,用补码表示。计数产生溢出
18、(计数初值寄存器回零),置位TFx , 可以通过程序查询;如果允许中断,会产生中断。本章应重点掌握定时/计数器的应用设计。,5-35,5.2.1 概述 5.2.2 单片机串行口的结构与工作原理 5.2.3 串行口的控制寄存器 5.2.4 串行口的工作方式 5.2.5 串行口的应用编程,5.2 串行接口,作业 P129 11、13,5-36,5.2.1 概述,数据通信方式有两种:并行通信与串行通信; 并行通信:所传送数据的各位同时发送或接收。 特点: 速度快,成本高,适合近距离传输。如计算机并口,打印机。,5-37,5.2.1 概述,串行通信:所传送数据的各位按顺序一位一位地发送或接收。如:只需
19、2根数据,1根地线,共3根即可实现双向通信。 特点:成本低,硬件方便,适合远距离通信,传输速度低。如:RS-232C ,RS-485,5-38,通信协议:通信的双方的通信约定,什么时候开始发送,什么时候发送完毕,同步方式,纠错方式;帧:串行通信一次完整的通信过程。从开始到结束的数据称一帧数据。串行通信的分类:按帧信息的格式分同步通信和异步通信。异步串行通信一帧数据格式:一个起始位0表示字符的开始,然后是58位数据即该字符的代码,规定低位在前,高位在后,接下来是奇偶校验位(可省略),最后以停止位1表示字符的结束。,1、同步和异步通信方式,5-39,优点:硬件结构简单。 缺点:传输速度慢。,异步串
20、行通信过程:,5-40,同步通信 在同步通信中,发送方在数据开始处就用同步字符(常约定12个字节)指示一帧的开始 ,由时钟来实现发送端和接收端同步。接收方一旦检测到与规定的同步字符符合,下面就连续按顺序传送若干个数据 ,最后发校验字节。,特点:数据传送效率高。没有起始、结束标志,一次传送多个数据对硬件(时钟严格同步)要求较高。,5-41,2、通信方向,按通信方向分类:单工、半双工、全双工通信方式 单工方式: 只能发送/接收,这种单向传送方式称单工方式。如:通信的一端只有发送器,或只有接收器。,半双工方式 能双向传送的通信方式称双工方式。数据可以双向传送,但不能同时发送和接收,只能分时接收或发送
21、的通信方式,称为半(准)双工 。,5-42,全双工方式 能同时发送和接收数据的通信方式称全双工。,如:通信双方用两个独立的收/发器单独连接。,如:每端口有一个发送器和一个接收器,通过开关连接在线路上,要通过换向器转换方向。,5-43,3、串行接口的基本任务,(1)进行串行数据、并行数据的转换因为CPU处理的是并行数据, 在发送端,接口将CPU送出的并行数据串行数据; 在接收端, 将接收到串行数据并行数据,送往CPU处理。,(2)实现数据格式化 接口电路应实现不同串行通信方式下的数据格式化任务。,如:自动生成起始、终止方式的帧数据格式-异步方式; 在待传送的数据块前加上同步字符-同步方式。,5-
22、44,(3)控制数据的传输速率接口应具备对数据传输速率(波特率)的控制选择能力,即具有波特率发生器。,51系列单片机内有一个全双工的异步通信接口,通过对串行接口写控制字可以选择其数据格式,同时内部有波特率发生器,提供可选的波特率,可完成双机通信或多机通信。,(4)进行传送错误检测在发送时,对传送的数据自动生成校验位或校验码;在接收端,能检查校验位或校验码,确定传送中是否有误码。,5-45,波特率(Baud Rate)通信中用以表示数据传送速率。单位时间内传送的信息量。以每秒传送的二进制位数bps。 例如:100字符/秒,1个字符11位(起始、停止、校验、数据) 波特率为:10011=1100
23、bps 平均每位传送占用时间: Td = 1/1100=0.909ms,4、波特率和发送/接收时钟,发送/接收时钟 发送时,在发送时钟的作用下将移位寄存器的数据串行移出; 接收时,在接收时钟的作用下将通信线上的数据移入移位寄存器, 能产生发送时钟和接收时钟的电路称波特率发生器。,为了提高采样的分辨率,准确定位数据的上升沿下降沿,时钟频率总是高于波特率的若干倍,这个倍数称为波特率因子。,5-46,5、通信线的连接,通信速率和通信距离与传输线的电气特性有关; 通信速率和通信距离这两个方面是相互制约的,降低通信速率,可以提高通信距离。 不同的通信距离,串行通信电路有不同的连接方法。,近距离通信电路,
24、5-47,较远距离传送电路,5-48,远距离传送电路,发送:数字信号通过调制器(Modem)变成模拟信号通过电话线传送到对方; 接收:接收方通过解调器将模拟信号转换成数字信号接收。,5-49,6、串行通信接口总线标准,测控系统中,计算机通信主要采用异步串行通信方式,常用的异步总线标准有三种: RS-232C RS 449(RS-422 RS-423 RS-485) 20mA电流环这里重点介绍RS-232C 传输速率与距离:RS-232C:速率:20Kbit/S,最大通信距离 : 15mRS-422: 10Mbit/s, : 300m90Kbit/s, :1200m,5-50,抗干扰能力采用标准
25、的通信接口,本身具有一定的抗干扰能力,但是工业现场的情况往往很恶劣,因而要根据具体情况进行选择。RS-232C:一般场合,常用在实验室;RS-422: 抗共模信号比较强(差动输入);光纤: 抗电磁干扰较强。,5-51,7、RS-232C接口标准,基本的数据传送引脚TXD:数据发送引脚;RXD:数据接收引脚;GND:信号地。,美国电子工业协会(EIA)公布的一种异步通信标准。RS232C标准是: 设备之间通信的距离不大于15米; 最大传输速率20KB/S 采用负逻辑:1:-3V -15V0:+3V +15V连接器:9针D型连接器(早期25针);,5-52,7、RS-232C接口标准,握手信号RT
26、S:请求发送信号,输出;CTS:清除传送,对RTS的响应,输入;DCD:载波检测,输入;DSR:数据通信准备就绪,输入;DTR:数据终端就绪,输出。RS-232C的EIA电平与TTL电平的转换当计算机采用RS-232标准时必须通过电平变换,如: MC1488/1489、MAX232,5-53,电平转换集成电路电路如: MC1488 TTL RS-232CMC1489 RS232C TTL,由于MC1488需要采用12V电源,一般在单片机系统中大量使用的是只需要+5V电源; 具有发送和接收的一体化芯片,如:MAX232、ICL232等。,5-54,7、RS-232C接口标准,MAX232 是EI
27、A和TTL双向电平转换芯片。内部具有电压提升电路,并有两路接收器和发送器。只需单一+5V电源。,5-55,8、单片机间的双机通信连接,5-56,9、单片机与PC机间的通信连接,5-57,5.2.2 单片机串行口的结构与工作原理,一、串行口的结构,51单片机有一个可编程的全双工异步串行通信接口, 它可作UART(异步接收和发送器)用,也可作同步移位寄存器,其帧格式可有8位、10位或l l位,并能设置各种波特率。,单片机通过引脚RXD(P3.0)数据接收端和引脚TXD(P3.l)数据发送端与外界进行通信。有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H,可同时发送、接收数据。发送
28、缓冲器只能写入,不能读出,CPU写SBUF,一方面修改发送寄存器,同时启动数据串行发送;接收缓冲器只能读出、不能写入。读SBUF,就是读接收寄存器。,如下图所示,5-58,5-59,串行控制寄存器 SCON存放串行口的控制和状态信息,通过设置、读取寄存器的位信息管理串行通信的。如:设置通信方式、中断标志; 电源控制寄存器PCON的最高位SMOD为串行口波特率的倍增控制位。 波特率发生器 可以有两种选择: 1. 定时器T1作波特率发生器,改变计数初值就可以改变串行通信的速率,称为可变波特率。 2. 以内部时钟的分频器作波特率发生器,因内部时钟频率一定,称为固定波特率。,5-60,甲方发送时,CP
29、U执行指令 MOV SBUF , A ,数据并行送入SBUF ,启动了发送过程,在发送时钟 shift的控制下由低位到高位一位一位发送。乙方在接收时钟 shift 的控制下由低位到高位顺序进入移位寄存器SBUF ;甲方一帧数据发送完毕,SBUF为空,置位发送中断标志TI,,二、工作原理,5-61,可作为查询标志(或引起中断),CPU可再发送下一帧数据 。 乙方收到一帧数据,即接收缓冲器满,置位接收中断标志RI,该位可作为查询标志(或引起接收中断),CPU通过 MOV A ,SBUF 指令将这帧数据并行读入。 由上述可知: 甲、乙方的移位时钟频率应相同,即应具有相同的波特率,否则会造成数据丢失。
30、 发送方:先发数据,再查标志TI;(先发后查)接收方:先查标志RI,再收数据。(先查后收),3. CPU通过指令和SBUF并行交换数据,但不能控制数据的串行移位(自动进行),只能查询标志位来确定数据的移位是否完成。,5-62,5.2.3 串行口的控制寄存器,51单片机串行口是一个可编程接口,通过两个特殊功能寄存器控制:串行口控制寄存器SCON(98H)电源控制寄存器 PCON(97H),5.2.3.1 串行口的控制寄存器SCON8XX51串行通信的方式选择、接收和发送控制指示串行口的标志; 其格式如下:,5-63,SM0 SM1:串行口工作方式控制位。0 0-方式0, 0 1-方式11 0-方
31、式2, 1 1-方式3REN:串行接收允许位。0-禁止接收, 1-允许接收,TI: 发送中断标志位。发送前必须用软件清零,发送完一帧数据后,由硬件置1,如果再发送,必须用软件再清零。,RI: 接收中断标志位。接收前,必须用软件清零,接收到一帧数据后由硬件自动置1。如果再接收,必须用软件清零。,5-64,RB8:第9位数据 在方式2,3中,RB8是接受机收到的第9位数据。该数据来自发送机的TB8。TB8:第9位数据在方式2,3中,要发送的第9位数据。0: 数据 1:地址,5-65,SM2:多机通信控制位,仅用于方式2和方式3。当选择方式2或方式3时:发送机(主机)设置SM2=1,发送TB8=1
32、地址帧寻找从机 TB8=0 数据帧;从机初始化时设置SM2=1,若接收到的第九位数据RB8=0,不置位RI,即不引起接收中断,亦既不接收数据帧,继续监听;若接收到的RB8=1,置位RI,引起接收中断,中断程序中判断所接收的地址帧和本机的地址是否符合,若不符合,维持SM2=1,继续监听;若符合,则清SM2,接收对放发来的后续信息。,5-66,综上所述,SM2的作用为:在方式2,3中,发送机SM2=1(程序设置) 接收机SM2=1,若RB8=1,激活RI,引起接收中断;RB8=0,不激活RI,不引起接断。SM2=0,无论RB8=1还是RB8=0均激活RI引起 接收中断。方式1: 当接收时SM2=1
33、, 则只有收到有效停止位才激活RI;方式 0: SM2应置为0。,5-67,GF1、GF0:通用标志位;,PCON的格式如下:串行通信只用其中的最高位SMOD,SMOD : 波特率加倍位。在串行方式 1、 2、 3计算波特率时,SMOD 0 不加倍; SMOD 1 加倍。,5.2.3.2 电源控制寄存器PCON,PD:掉电方式。PD=1时,激活掉电工作方式。,IDL:待机方式。IDL=1时,激活待机工作方式。,PCON无位地址,只能按字节寻址。初始化时SMOD=0。,5-68,51系列单片机的串行通信有四种工作方式,通过编程进行选择,各工作方式的特点如下: 1、方式0(移位寄存器方式),RXD
34、为串行数据的发送端或接收端, TXD输出时钟脉冲,频率为fosc/12。,方式0的数据格式为8位,低位在前,高位在后;,5.2.4 串行口的工作方式,波特率固定为fosc/12 (fosc为单片机晶振频率),发送过程以写SBUF开始,当8位数据传送完毕,TI置1,方可发送下一帧数据。,接收方必须先设置REN=1和RI=0,当8位数据接收完毕,RI置1,此时,可通过读SBUF指令,将数据读入CPU。,5-69,2、方式1(波特率可变,10位异步通信方式),以TXD为串行数据的发送端,RXD为数据的接收端;每帧数据由1个起始位0,八个数据位 和1个停止位1 共10位构成,其中起始位和停止位在发送时
35、是自动插入的。T1提供移位时钟,是波特率可变方式。,波特率=(2SMOD/32)(T1的溢出率)X为T1的计数初值。,5-70,发送过程以写SBUF开始,当数据传送完毕,TI置1,申请中断。接收方必须先设置REN=1和RI=0,当8位数据接收完毕,RI置1,此时,可通过读SBUF指令,将数据读入CPU。上述情况只有在同时满足下列2个条件,才会产生:(1)RI=0,即上一帧数据接收完成发出的中断请求已经被响应,SBUF中的数据已经被取走;(2)SM2=0或接收到的停止位=1。上述2个条件都满足时,停止位进入RB8,数据进入SBUF,RI=1;任一不满足,数据就会丢失,RI=0。,5-71,3、方
36、式2 (波特率固定,11位异步通信方式),以TXD为串行数据的发送端,RXD为数据的接收端;每帧数据由11位构成:1个起始位0,8个数据位 ,1个可编程位(第9数据位) 和1个停止位。发送时,第9数据位(TB8)可设置为0或1;接收时,第9数据位进入SCON的RB8。波特率固定:,波特率,发送过程以写SBUF开始,当数据传送完毕,TI置1,申请中断。(与方式1类似),5-72,4、方式3 (波特率可变,11位异步通信方式)数据格式同方式2,所不同的是波特率可变,计算方式同方式 1。,接收方必须先设置REN=1和RI=0,当9位数据接收完毕,移位寄存器内容装入SBUF和RB8,并且RI置1,此时
37、,可通过读SBUF指令,将数据读入CPU。上述情况只有在同时满足下列2个条件,才会产生:(1)RI=0,即上一帧数据接收完成发出的中断请求已经被响应,SBUF中的数据已经被取走;(2)SM2=0或接收到的第9位数据=1。(与方式1不同)上述2个条件都满足时,第9位数据进入RB8,8位数据进入SBUF,RI=1;任一不满足,数据就会丢失,RI=0。,5-73,5.2.5 串行口的应用编程,串行通信程序的编程要点:,波特率设置:串行口的波特率有两种方式:固定波特率(方式0、2) 可变波特率(方式1、3) 注意:使用可变波特率时,先确定T1的计数初值,并对T1进行 初始化。 设置控制字(SCON、P
38、CON) 串行通信的工作方式:查询/中断 查询方式: 查RI、TI 是否为1。 中断方式:如果预先开了中断,当TI、RI 为“1”,会自动产生中断。 注意:两种方式中当发送或接受数据后都要清TI或RI 。,5-74,5.2.5.1 查询方式,对于波特率可变的方式1和方式3 ,查询方式发送流程图和接收流程图见下页,5-75,查询方式发送流程图,5-76,查询方式接收流程图,5-77,5.2.5.2 中断方式,中断方式对定时器T1和SCON寄存器的初始化编程与查询方式相同; 不同的是要开中断,即置位EA和ES,并要编写中断服务程序。,中断方式串行通信的程序流程见下图:,5-78,中断方式发送流程图
39、,一般不清,5-79,中断方式接收流程图,中断服务程序,数据接收完毕?,中断返回,REN=EA=ES=0,修改地址指针 和块长度计数器,清RI=0,接收数据,Y,N,一般不清,5-80,例: 接线如图,编一个自发自收程序,检查单片机的串行口是否完好。,解:设fosc=12MHz,波特率600,取SMOD0。依据公式波特率求得,5.2.5.3 串行通信编程实例,5-81,汇编语言编程,ORG 0000HMOV TMOD,#20H ;T1 方式2MOV TH1, #0CCHMOV TL1, #0CCH ; 设定波特率SETB TR1MOV SCON, #50H ;方式1 REN=1 ABC: CL
40、R TIMOV P1, #0FEH ; LED灭ACALL DAY ; 延时MOV A, #OFFH ;MOV SBUF, A ; 发送数据FFHJNB RI, $ ;RI 1等待,5-82,CLR RI MOV A, SBUF ; 接收数据,MOV P1, A ; A=FFH,灯亮JNB TI, $ ;TI 1等待 ACALL DAY ; 延时SJMP ABC DAY: MOV R0, #0 ;延时子程序 DAL: MOV R1, #0DJNZ R1, $DJNZ R0, DAL RET,如果发送接收正确,可观察到P1.0接的发光二极管闪亮。,Ex5_3.sdn,5-83,5.2.6 小 节
41、,1、在长距离通信中,采用串行传送方式,具有成本低,通信可靠的优点; 2、掌握串行通信的基本概念、接口标准; 3、51系列单片机内有一个全双工的异步通信接口,有4种工作方式。P128 4、在串行通信的编程中,先对串行口初始化,发送:先发送,检查TI状态,再发送;接收:先检查RI状态,接收。RI和TI要靠软件清除。,5-84,程序更正 P119 中断方式,P118 例5-7,中断发送程序 SCOM: CLR TI DJNZ R7,SENDRETI SEND: INC R0MOV SBUF,R0 ;发送数据RETI,中断接收程序 RCOM: CLR RIMOV R0,SBUF ;接收数据INC R0RETI,