单片机计数器,定时器工作原理

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

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!