单片机原理与接口技术6.ppt
单片机原理与接口技术6 Four short words sum up what has lifted most successful Four short words sum up what has lifted most successful individuals above the crowd: a little bit more. individuals above the crowd: a little bit more. -author -author -date-date6.1 6.1 定时器概述定时器概述 6.1.1 89C516.1.1 89C51定时器结构定时器结构6.1.2 89C516.1.2 89C51定时器功能定时器功能6.1.1 89C516.1.1 89C51定时器结构定时器结构l有两个有两个1616位的定时器位的定时器/ /计数器计数器: :定时器定时器0 0(T0T0)定时器定时器1 1(T1T1)。)。l都是都是1616位加位加1 1计数器。计数器。lT0T0由两个由两个8 8位特殊功能寄存器位特殊功能寄存器TH0TH0和和TL0TL0构成;构成;lT1T1由由TH1TH1和和TL1TL1构成。构成。l如图如图6.1.1 89C516.1.1 89C51定时器结构定时器结构6.1.2 89C516.1.2 89C51定时器功能定时器功能l每个定时器都可由软件设置为每个定时器都可由软件设置为 定时工作定时工作方式方式或计数工作方式。或计数工作方式。l定时器工作不占用定时器工作不占用CPUCPU时间,除非定时器时间,除非定时器/ /计数器溢出,才能中断计数器溢出,才能中断CPUCPU的当前操作。的当前操作。l每个定时器每个定时器/ /计数器有四种工作模式。计数器有四种工作模式。模式模式0-30-3定时工作方式简介:定时工作方式简介:p 定时脉冲为单片机片内振荡器输出经定时脉冲为单片机片内振荡器输出经1212 分频后的脉冲,分频后的脉冲,p 即每个机器周期使定时器(即每个机器周期使定时器(T0T0或或T1T1)的)的 数值加数值加1 1直至计满溢出。直至计满溢出。当采用当采用12MHz晶振时,一个机器周期为晶振时,一个机器周期为1s,计数频率为,计数频率为1MHz。计数工作方式简介:计数工作方式简介:p通过引脚通过引脚P3.4 ( T0 )和)和P3.5 ( T1 )对外)对外部脉冲信号计数。部脉冲信号计数。p当输入脉冲信号产生由当输入脉冲信号产生由1至至0的的下降沿下降沿时定时时定时器的值加器的值加1。pCPU检测一个检测一个1至至0的跳变需要两个机器周期,的跳变需要两个机器周期,故最高计数频率为振荡频率的故最高计数频率为振荡频率的1/24。p为了确保某个电平在变化之前被采样一次,为了确保某个电平在变化之前被采样一次,要求电平保持时间至少是一个完整的机器周要求电平保持时间至少是一个完整的机器周期。期。图图6.2 定时器的控制定时器的控制 l6.2.1 工作模式寄存器工作模式寄存器 TMODl6.2.2 控制器寄存器控制器寄存器 TCON6.2.1 6.2.1 工作模式寄存器工作模式寄存器 TMODTMODlTMODTMOD用于控制用于控制T0T0和和T1T1的工作模式。的工作模式。lTMODTMOD不能位寻址,只能用字节设置定时器不能位寻址,只能用字节设置定时器的工作模式,低半字节设置的工作模式,低半字节设置T0T0,高半字节设,高半字节设置置T1T1。l系统复位时,系统复位时,TMODTMOD的所有位被清的所有位被清0 0。lTMODTMOD各位的定义格式如图所示:各位的定义格式如图所示:GATE C/ T M1 M0 GATEM1C/ TM0定时器定时器T1定时器定时器T0TMOD(89H) D7 D6 D5 D4 D3 D2 D1 D0图图 工作模式寄存器工作模式寄存器TMOD的位定义的位定义TMOD各位的功能各位的功能 M1M1和和M0M0操作模式控制位。操作模式控制位。 两位可形成四种编码,对应于四种两位可形成四种编码,对应于四种模式。见模式。见 表表6-16-1。表表6-1 M1,M0控制的四种工作模式控制的四种工作模式M1 M0工工 作作 模模 式式功功 能能 描描 述述0 0模模 式式013位位 计计 数数 器器0 1模模 式式116位位 计计 数数 器器1 0模模 式式2自自 动动 再再 装装 入入8位位 计计 数数 器器1 1模模 式式3定定 时时 器器0: 分分 成成 二二 个个8位位 计计 数数 器器 定定 时时 器器1: 停停 止止 计计 数数 C/T C/T计数器计数器/ /定时器方式选择位。定时器方式选择位。 C/T=0C/T=0,设置为,设置为定时方式定时方式。定时器计数。定时器计数80518051片内脉冲,即对机器周期计片内脉冲,即对机器周期计数。数。 C/T=1C/T=1,设置为,设置为计数方式计数方式。计数器的输入。计数器的输入来自来自T0T0(P3.4P3.4)或)或T1T1(P3.5P3.5)端)端的外部脉冲的外部脉冲 。 TMODTMOD各位的功能各位的功能 GATE GATE门控位。门控位。 GATE=0GATE=0,只要用软件使只要用软件使TR0TR0(或(或TR1TR1)置)置1 1就可以就可以启动定时器,而不管启动定时器,而不管INT0INT0(或(或INT1INT1)的)的电平是高还是低。电平是高还是低。 GATE=1GATE=1,只有只有INT0INT0(或(或INT1INT1)引脚为高电平且由)引脚为高电平且由软件使软件使TR0TR0(或(或TR1TR1)置)置1 1时,才能启动时,才能启动定时器工作。定时器工作。TMODTMOD各位的功能各位的功能6.2.2 控制器寄存器控制器寄存器 TCONlTCONTCON可位寻址可位寻址。l系统复位时,系统复位时,TCONTCON的所有位被清的所有位被清0 0。 lTCONTCON各位的定义格式如图所示。各位的定义格式如图所示。TF1 TR1 TF0TR0 IE1IE0IT1IT0TCON(88H) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H图图 控制寄存器控制寄存器TCON的位定义的位定义TCON各位的功能各位的功能 TF1 TF1(TCON.7) T1TCON.7) T1溢出标志位。溢出标志位。 当当T1T1溢出溢出时,由硬件自动使中断触发器时,由硬件自动使中断触发器TF1TF1置置1 1,并,并CPUCPU申请中断。申请中断。 当当CPUCPU响应中断进入中断服务程序后响应中断进入中断服务程序后,TF1TF1由被硬件由被硬件自动清自动清0 0。TF1TF1也可以用也可以用软件清软件清0 0。 TF0 TF0 (TCON.5)T0TCON.5)T0溢出标志位。溢出标志位。 其功能和操作情况同其功能和操作情况同TF1TF1。 TR1(TCON.6)T1TR1(TCON.6)T1运行控制位。运行控制位。 可通过软件置可通过软件置1 1(TR1=1TR1=1)或清)或清0 0(TR1=0TR1=0)来)来启启动动或或 关闭关闭 T1T1。 在程序中用指令在程序中用指令“SETB TR1SETB TR1”使使TR1TR1位置位置1 1,定时器定时器T1T1便开始计数。便开始计数。 TR0(TCON.4)T0 TR0(TCON.4)T0运行控制位。运行控制位。 其功能和操作情况同其功能和操作情况同TR1TR1。TCON各位的功能各位的功能 IE1IE1,IT1IT1,IE0IE0,IT0(TCON.3IT0(TCON.3TCON.0)TCON.0)外部中断外部中断INT1INT1,INT0INT0请求请求及请求方式控制位。前一章已经讲过。及请求方式控制位。前一章已经讲过。TCONTCON各位的功能各位的功能6.3 定时器的四种模式及应用定时器的四种模式及应用 16.3.1 模式模式 0 及其应用及其应用16.3.2 模式模式 1 及其应用及其应用16.3.3 模式模式 2 及其应用及其应用16.3.4 模式模式 3 及其应用及其应用16.3.5 综合应用举例综合应用举例6.3.1 模式模式 0 及其应用及其应用4一、模式一、模式 0 0 工作特点工作特点4二、模式二、模式 0 0 的逻辑电路结构的逻辑电路结构4三、模式三、模式 0 0 的应用举例的应用举例一、模式一、模式 0 0 工作特点工作特点l T0T0、T1T1为为3 3位计数器。位计数器。TH0TH0的的8 8位和位和TL0TL0的低的低5 5位位THTH的的8 8位和位和TL1TL1的低的低5 5位位以下以以下以0 0说明:说明:TH0TL0D7D6D5D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0D12D11D10D9 D8 D7 D6 D5/D4 D3 D2 D1 D0lTH0TH0溢出时,向中断标志溢出时,向中断标志TF0TF0进位(硬件进位(硬件置位置位TF0TF0),并申请中断。),并申请中断。lT0是否溢出可查询是否溢出可查询TF0是否被置位,以产是否被置位,以产生生T0中断。中断。 l定时时间为:定时时间为: t=(2t=(21313T0T0初值初值) )振荡周期振荡周期1212二、模式二、模式 0 0 的逻辑电路结构的逻辑电路结构l如图如图二、模式二、模式 0 0 的逻辑电路结构的逻辑电路结构二、模式二、模式 0 0 的逻辑电路结构的逻辑电路结构pC/T=0时时:控制开关接通振荡器控制开关接通振荡器1212分频输出端,分频输出端,T0T0对机器对机器周期计数。周期计数。 这是定时工作方式。这是定时工作方式。其定时时间其定时时间为:为: t t=(2=(21313-T0-T0初值初值) )振荡周期振荡周期1212 pC/T=l时时:控制开关使引脚控制开关使引脚T0(P3.4)T0(P3.4)与与1313位计数器相连,位计数器相连, 外部计数脉冲由引脚外部计数脉冲由引脚T0(P3.4)T0(P3.4)输入,输入, 当外部信号电平发生由当外部信号电平发生由1 1到到0 0跳变时,计数器加跳变时,计数器加1 1。 这时,这时,T0T0成为外部事件计数器成为外部事件计数器。这就是计数工。这就是计数工作方式。作方式。 二、模式二、模式 0 0 的逻辑电路结构的逻辑电路结构pGATE=O时,时, 或门输出A点电位保持为1,“或”门被封锁。于是,引脚INTO输入信号无效。这时,“或”门输出的l打开“与”门。B点电位取决于TRO的状态, 于是,由TRO一位就可控制计数开关K,开启或关断TO。若软件使TRO置1便接通计数开关K,启动TO在原上加1计数,直至溢出。 溢出时,13位寄存器清O,TF0置位,并申请中断,TO从0重新开始计数。 若TRO=0,则关断计数开关K,停止计数。 二、模式二、模式 0 0 的逻辑电路结构的逻辑电路结构pGATE=l时时 A点电位取决于点电位取决于INT0(P3.2)引脚的输入电平。引脚的输入电平。 仅当仅当INT0输入高电平,且输入高电平,且TR0=1时,时,B点才点才是高电平,计数开关是高电平,计数开关K闭合,闭合,T0开始计数。开始计数。 当当INT0由由1变变0时,时,T0停止计数。停止计数。 这一特性这一特性可以用来测量在可以用来测量在INT0端出现的正脉冲的宽度。端出现的正脉冲的宽度。 三、模式三、模式 0 0 的应用举例的应用举例l例例6-16-1:设定时器:设定时器T0T0选择工作模式选择工作模式0 0,定时时间为定时时间为1ms1ms,fosc=6MHzfosc=6MHz。试确。试确定定T0T0初值,计算最大定时时间初值,计算最大定时时间T T。解:解:模式模式0,13位计数器。位计数器。(1)试确定试确定T0T0初值初值X (213X)1/6 10-612=110-3 s X=7692D =1 1110 0000 1100B1E0CH T0的低的低5位:位:01100B=0CH即即(TL0)=0CH T0的高的高8位:位:11110000B=F0H即即(TH0)=F0H(2)计算最大定时时间计算最大定时时间T T T0的最大定时时间对应于的最大定时时间对应于13位计数器位计数器T0的各的各位全为位全为1,即,即(TL0)=1FH,(TH0)=FFH. T=(213-0)1/6 10-612=16.384ms例例6-26-2:上例中,定时时间上例中,定时时间1ms,1ms,编程。在编程。在P1.0P1.0的引脚上产生输出周期为的引脚上产生输出周期为2ms2ms的方波。的方波。设设T0T0工作在模式工作在模式0 0,定时时间为,定时时间为1ms1ms,定时时间,定时时间到,到,P1.0P1.0取反。取反。 解:解:(1)计算)计算T0初值初值X 计算步骤见例计算步骤见例6-1。 结果:结果:(TH0)=0F0H,(TL0)=0CH。例例6-26-2(2)程序清单:)程序清单: 初始化引导程序初始化引导程序 ORG 0000HRESET: AJMP MAIN ; 跳过中断服务程序区跳过中断服务程序区 ORG 000BH ;中断服务程序入口;中断服务程序入口 AJMP ITOP例例6-26-2主程序:ORG 0100H MAIN: MOV SP,#60H ;设堆栈指针;设堆栈指针 ACALL PTOMD HERE: AJMP HERE ;等待;等待PTOMD: MOV TMOD,#00H;选择工作模式;选择工作模式 MOV TL0,#0CH;送初值;送初值 MOV TH0,#0F0H SETB TR0 ;启动定时;启动定时 SETB ET0 ;T0开中断开中断 SETB EA ;CPU开中断开中断 RET例例6-26-2中断服务程序中断服务程序 ORG 0120H ITOP: MOV TL0,#0CH ;重新装如初值;重新装如初值 MOV TH0,#0F0H CPL P1.0 ;P1.0取反取反 RETI例例6-36-3利用利用T0T0的工作模式的工作模式0 0产生产生1ms1ms定时,在定时,在P1.0P1.0引脚输出周期为引脚输出周期为2ms2ms的方波。的方波。设单片机晶振频率设单片机晶振频率fosc=12MHzfosc=12MHz。编。编程实现其功能。程实现其功能。例例6-36-3解:解: 要在要在P1.0P1.0引脚输出周期为引脚输出周期为2ms2ms的方波,只要使的方波,只要使P1.0P1.0每隔每隔1ms1ms取反一次即可。取反一次即可。 (1 1)选择工作模式)选择工作模式 T0T0的模式字为的模式字为TMOD=00HTMOD=00H,即,即 M1M0=00 M1M0=00,C/T=0C/T=0,GATE=0GATE=0,其余位为,其余位为0 0。(2)计算)计算1ms定时时定时时T0的初值的初值 (213X)1/12 10-612=110-3 s X=7193D=11100000 11000B T0的低的低5位:位:11000B=18H即即 (TL0)=18H T0的高的高8位:位:11100000B=E0H即即 (TH0)=E0H 例例6-3例例6-36-3(3)采用查询方式的程序清单MOV TMOD,#00H ;设置;设置T0为模式为模式0 MOV TL0,#18H ;送初值;送初值 MOV TH0,#0E0H SETB TR0 ;启动定时;启动定时 LOOP:JBC TF0,NEXT ;查询定时时间到否;查询定时时间到否 SJMP LOOP NEXT:MOV TL0,#18H ;重装计数初值;重装计数初值 MOV TH0,#0E0H CPL P1.0 ;取反;取反 SJMP LOOP ;重复循环;重复循环例例6-36-3(4)采用定时器溢出中断方式的程序主程序主程序 ORG 0000H RESET: AJMP MAIN ; 跳过中断服务程序区跳过中断服务程序区 ORG 0030H MAIN: MOV TMOD,#00H ;设置;设置T0为模式为模式0 MOV TL0,#18H ;送初值;送初值 MOV TH0,#0E0H SETB EA ;CPU开中断开中断 SETB ET0 ;T0中断允许中断允许 SETB TR0 ;启动定时;启动定时 HERE:SJMP HERE ;等待中断,虚拟主程序;等待中断,虚拟主程序例例6-36-3中断服务程序中断服务程序 ORG 000BH AJMP CTC0 ORG 0120H CTC0: MOV TL0,#18H ;重新装如初值;重新装如初值 MOV TH0,#0E0H CPL P1.0 ;P1.0取反取反 RETI6.3.2 模式模式 1 及其应用及其应用一、模式一、模式 1 1 工作特点工作特点二、模式二、模式 1 1 的逻辑电路结构的逻辑电路结构三、模式三、模式1 1 的应用举例的应用举例一、模式一、模式 1 1 工作特点工作特点l该模式对应的是一个该模式对应的是一个1616位的定时器位的定时器/ /计数计数器器。l用于定时工作方式时,定时时间为:用于定时工作方式时,定时时间为: t=(2t=(21616初值初值) )振荡周期振荡周期1212l用于计数工作方式时,计数长度最大为:用于计数工作方式时,计数长度最大为: 2 21616=65536=65536(个外部脉冲)(个外部脉冲)二、模式二、模式 1 1 的逻辑电路结构的逻辑电路结构 图图6-86-8二、模式二、模式 1 1 的逻辑电路结构的逻辑电路结构三、模式三、模式 1 1 的应用举例的应用举例l例例6-46-4:用定时器用定时器T1T1产生一个产生一个50Hz50Hz的方波,的方波,由由 P1.1 P1.1输出,使用程序查询方式,输出,使用程序查询方式,fosc=12MHzfosc=12MHz。(例(例6-46-4)解:解: 方波周期方波周期T=1/50=0.02s =20msT=1/50=0.02s =20ms 用用T1T1定时定时10ms10ms 计数初值计数初值X X为:为: 10 10 1000us=(21000us=(21616-X) -X) (1/12) (1/12) 12us12us X=2X=21616121210101000/121000/12 =65536 =6553610000=55536=D8F0H10000=55536=D8F0H(例(例6-46-4)源程序清单:源程序清单: MOV TMOD,#10H ;设置;设置T1为模式为模式1 SETB TR1 ;启动定时;启动定时LOOP: MOV TL1,#0D8H ;送初值;送初值 MOV TH1,#0F0H JNB TF1,$ ;查询定时时间到否;查询定时时间到否 CLR TF1 ;产生溢出,清标志位产生溢出,清标志位 CPL P1.1 ;取反;取反 SJMP LOOP ;重复循环;重复循环6.3.3 模式模式 2 及其应用及其应用一、模式一、模式 2 2 工作特点工作特点二、模式二、模式 2 2 的逻辑电路结构的逻辑电路结构三、模式三、模式 2 2 的应用举例的应用举例一、模式一、模式 2 2 工作特点工作特点l把把TL0(TL1)TL0(TL1)配置成一个可以自动重装载的配置成一个可以自动重装载的8 8位定时器位定时器/ /计数器计数器l在程序初始化时,在程序初始化时,TL0TL0和和TH0TH0由软件赋予相由软件赋予相同的初值。同的初值。l用于定时工作方式时,定时时间为:用于定时工作方式时,定时时间为:t=(2t=(28 8TH0TH0初值初值) )振荡周期振荡周期1212l用于计数工作方式时,计数长度最大为:用于计数工作方式时,计数长度最大为:2 28 8=256=256(个外部脉冲)(个外部脉冲)一、模式一、模式 2 2 工作特点工作特点l该模式可省去软件中重装常数的语句,并可该模式可省去软件中重装常数的语句,并可产生相当精确的定时时间,适合于作串行口产生相当精确的定时时间,适合于作串行口波特率发生器。波特率发生器。lTL0TL0计数溢出时,不仅使溢出中断标志位计数溢出时,不仅使溢出中断标志位TF0TF0置置1 1,而且还自动把,而且还自动把TH0TH0中的内容重新中的内容重新装载到装载到TL0TL0中。中。lTL0TL0用作用作8 8位计数器,位计数器,TH0TH0用以保存初值。用以保存初值。二、模式二、模式 2 2 的逻辑电路结构的逻辑电路结构l如图如图三、模式三、模式 2 2 的应用举例的应用举例l例例6-56-5:当当P3.4P3.4引脚上的电平发生负跳变时,引脚上的电平发生负跳变时, 从从P1.0P1.0输出一个输出一个500s500s的同步脉冲。的同步脉冲。请编程序实现该功能。查询方式,请编程序实现该功能。查询方式,fosc=6MHzfosc=6MHz。(例(例6-56-5)解:解:(1 1)模式选择)模式选择 选选T0T0为模式为模式2 2,外部事件计数方式。,外部事件计数方式。当当P3.4P3.4引脚上的电平发生负跳变时,引脚上的电平发生负跳变时,T0T0计计数器加数器加1 1,溢出标志,溢出标志TF0TF0置置1 1;然后改变然后改变T0T0为为500s500s定时工作方式,并使定时工作方式,并使P1.0P1.0输出由输出由1 1变为变为0 0。T0T0定时到产生溢出,定时到产生溢出,使使P1.0P1.0输出恢复高电平,输出恢复高电平,T0T0又恢复外部事又恢复外部事件计数方式。件计数方式。 如图如图所示。所示。(例(例6-56-5)(2 2)计算初值)计算初值l T0T0工作在外部事件计数方式工作在外部事件计数方式,当计数到,当计数到2 28 8时,时,计数器就会溢出。设计数初值为计数器就会溢出。设计数初值为X X,当再出现一次,当再出现一次外部事件时,计数器溢出。外部事件时,计数器溢出。 则则: X+1=2: X+1=28 8 X= 2X= 28 8 1=11111111B=0FFH1=11111111B=0FFHl T0T0工作在定时工作方式工作在定时工作方式,晶振频率为,晶振频率为6MHz6MHz,500s500s相当于相当于250250个机器周期。因此,初值个机器周期。因此,初值X X为为 (2 (28 8X)X)2s=500s2s=500s X=6=06HX=6=06H(例(例6-56-5)(3 3)程序清单)程序清单START: MOV TMOD,#06H ;置;置T0为模式为模式2,计数方式计数方式 MOV TL0,#0FFH ;T0计数器初值计数器初值 MOV TH0,#0FFH SETB TR0 ;启动;启动T0计数计数 LOOP1:JBC TF0,PTFO1 ;查询;查询T0溢出标志,溢出标志,;TF0=1时转,且清时转,且清TF0=0 SJMP LOOP1 ;PTFO1:CLR TR0 ;停止计数;停止计数 MOV TMOD,#02H ;置;置T0为模式为模式2,定时方式,定时方式 MOV TL0,#06H ;送初值,定时;送初值,定时500s MOV TH0,#06H(例(例6-56-5)CLR P1.0 ; P1.0清清0 SETB TR0 ;启动定时;启动定时500s LOOP2 : JBC TF0,PTFO2 ;查询;查询T0溢出标志,溢出标志, ;TF0=1时转,且清时转,且清TF0=0 ; (第一个(第一个500s到否?)到否?) SJMP LOOP2 PTFO2 : SETB P1.0 ; P1.0置置1 CLR TR0 ;停止计数;停止计数 SJMP STARTl例例6-66-6:利用定时器利用定时器T1T1的模式的模式2 2对外部信对外部信号计数。要求每计满号计数。要求每计满100100次,将次,将 P1.0P1.0端取反。端取反。(例(例6-66-6)解:解:(1)选择模式)选择模式 外部信号由外部信号由T1(P3.5)引脚输入,每发生一次负)引脚输入,每发生一次负跳变计数器加跳变计数器加1,每输入,每输入100个脉冲,计数器发生个脉冲,计数器发生溢出中断,中断服务程序将溢出中断,中断服务程序将P1.0取反一次。取反一次。l T1计数工作方式模式计数工作方式模式2的模式字为的模式字为(TMOD)=60H。 T0不用时,不用时,TMOD的低的低4位可任取,但不能进入模位可任取,但不能进入模式式3,一般取,一般取0。(例(例6-66-6)(2)计算)计算T1的计数初值的计数初值 X= 2X= 28 8 100=156=9CH100=156=9CH 因此因此:TL1:TL1的初值为的初值为9CH9CH, 重装初值寄存器重装初值寄存器TH1=9CHTH1=9CH。(例(例6-66-6)(3)程序清单)程序清单 MAIN: MOV TMOD,#60H ;置;置T1为模式为模式2,计数方式计数方式 MOV TL1,#9CH ;T1计数器初值计数器初值 MOV TH1,#9CH MOV IE,#88H ; 定时器开中断定时器开中断 SETB TR1 ;启动;启动T1计数计数 HERE:SJMP HERE ;等待中断;等待中断 ORG 001BH ;中断服务程序入口;中断服务程序入口 CPL P1.0 RETI6.3.4 模式模式 3 及其应用及其应用一、模式一、模式 3 3 的特点及逻辑电路结构的特点及逻辑电路结构二、模式二、模式 3 3 应用举例应用举例一、模式一、模式 3 的特点及逻辑电路结构的特点及逻辑电路结构l工作模式工作模式3 3对对T0T0和和T1T1大不相同。大不相同。 lT0T0设置为模式设置为模式3 3,TL0TL0和和TH0TH0被分成两个被分成两个相互独立的相互独立的8 8位计数器。位计数器。lT1T1无工作模式无工作模式3 3状态。在状态。在T0T0用作模式用作模式3 3时,时,T1T1仍可设置为模式仍可设置为模式0 02 2。一、模式一、模式 3 的特点及逻辑电路结构的特点及逻辑电路结构lT0T0模式模式3 3的逻辑电路结构的逻辑电路结构如图如图所示。所示。一、模式一、模式 3 的特点及逻辑电路结构的特点及逻辑电路结构l TL0TL0用原用原T0T0的各控制位、引脚和中断源,即的各控制位、引脚和中断源,即C/TC/T,GATEGATE,TR0TR0,TF0TF0,T0T0(P3.4P3.4)引脚,)引脚,INT0INT0(P3.2P3.2)引脚。)引脚。l TL0TL0可工作在定时器方式和计数器方式。其功能和可工作在定时器方式和计数器方式。其功能和操作与模式操作与模式0 0、模式、模式1 1相同(只是相同(只是8 8位)。位)。l TH0TH0只可用作简单的内部定时功能。只可用作简单的内部定时功能。l TH0TH0占用了定时器占用了定时器T1T1的控制位的控制位TR1TR1和和T1T1的中断标的中断标志志TF1TF1,其启动和关闭仅受,其启动和关闭仅受TR1TR1的控制。的控制。T0模式3下T1的逻辑电路结构l 定时器定时器T1T1无工作模式无工作模式3 3状态。在状态。在T0T0用作模式用作模式3 3时,时,T1T1仍可设置为模式仍可设置为模式0 02 2。l T0T0模式模式3 3下下T1T1的逻辑电路结构的逻辑电路结构如图如图所示所示l 由于由于TR1TR1和和TF1TF1被定时器被定时器T0T0占用,计数器开关占用,计数器开关K K已被接通,此时,仅用已被接通,此时,仅用T1T1控制位,控制位,C/TC/T切换其切换其定时或计数器工作方式就可使定时或计数器工作方式就可使T1T1运行。当计数运行。当计数器溢出时,只能将输出送入串行口或用于不需器溢出时,只能将输出送入串行口或用于不需要中断的场合。一般作波特率发生器要中断的场合。一般作波特率发生器二、模式二、模式 3 的应用举例的应用举例l例例6-76-7:设某用户系统已使用了两个外部中设某用户系统已使用了两个外部中断源,并置定时器断源,并置定时器T1T1工作在模式工作在模式2 2,作串行口波特率发生器用。现要求作串行口波特率发生器用。现要求再增加一个外部中断源,并由再增加一个外部中断源,并由P1.0P1.0引脚输出一个引脚输出一个5kHz5kHz的方波。的方波。Fosc=12MHz.Fosc=12MHz.(例(例6-76-7)解:解:(1 1)工作模式)工作模式l 可设置可设置T0T0工作在模式工作在模式3 3计数器方式计数器方式,把,把T0T0的引的引脚作附加的外部中断输入端,脚作附加的外部中断输入端,TL0TL0的计数初值为的计数初值为FFHFFH,当检测到,当检测到T0T0引脚电平出现由引脚电平出现由1 1至至0 0的负跳变的负跳变时,时,TL0TL0产生溢出,申请中断。产生溢出,申请中断。l T0T0模式模式3 3下,下,TL0TL0作计数用,而作计数用,而TH0TH0用作用作8 8位的位的定时器定时器,定时控制,定时控制P1.0P1.0引脚输出引脚输出5kHz5kHz的方波信号。的方波信号。 (例(例6-76-7)(2 2)计算初值)计算初值lTL0TL0的计数初值为的计数初值为FFHFFH。lTH0TH0的计数初值的计数初值X X为:为: P1.0P1.0方波周期方波周期T=1/(5kHz)=0.2ms=200sT=1/(5kHz)=0.2ms=200s 用用TH0TH0作定时作定时100s100s时,时, X=256-100 X=256-100 12/12=15612/12=156(例(例6-76-7)(3)程序清单)程序清单 MOV TMOD,#27H ;T0为模式为模式3,计数方式计数方式 ; T1为模式为模式2,定时方式,定时方式 MOV TL0,#0FFH ;TL0计数初值计数初值 MOV TH0,#156 ;TH0计数初值计数初值 MOV TL1,#data ;data是根据波特率是根据波特率 ;要求设置的常数(初值);要求设置的常数(初值) MOV TH1,#data MOV TCON,#55H ;外中断、外中断、1边沿触发,边沿触发, ;启动;启动T0,T1 MOV IE,#9FH ; 开放全部开放全部中断中断 (例(例6-76-7)TL0溢出中断服务程序(由溢出中断服务程序(由000BH转来)转来)TL0INT:MOV TL0,#0FFH ;TL0重赋初值重赋初值 (中断处理)(中断处理) RETI TH0溢出溢出 TH0溢出中断服务程序(由溢出中断服务程序(由001BH转来)转来)TH0INT:MOV TH0,#156 ;TH0重赋初值重赋初值 CPL P1.0 ;P1.0取反输出取反输出 RETI串行口及外部中断串行口及外部中断0,外部中断,外部中断1的服务程序略。的服务程序略。6.3.5 综合应用举例综合应用举例l例例6-86-8:设时钟频率为设时钟频率为6MHz6MHz。编写利用。编写利用T0T0产生产生1s1s定时的程序。定时的程序。(例(例6-86-8)解:解:(1)定时器)定时器T0工作模式的确定工作模式的确定模式模式0 0最长可定时最长可定时16.384ms;16.384ms; 模式模式1 1最长可定时最长可定时131.072ms;131.072ms; 模式模式2 2最长可定时最长可定时512s;512s;定时定时1s,可选用模式,可选用模式1,每隔,每隔100ms中断一中断一 次,中断次,中断10次为次为1s。(例(例6-86-8)(2)求计数器初值)求计数器初值X (216X)12/(6 106) =10010-3 s X=15536=3CB0H 因此:因此:(TL0)=0B0H (TH0)=3CH(例(例6-86-8)(3)实现方法实现方法 对于中断对于中断10次计数,可使次计数,可使T0工作在计数方工作在计数方式,也可用循环程序的方法实现。式,也可用循环程序的方法实现。本例采本例采用循环程序法。用循环程序法。(例(例6-86-8)(4)源程序清单)源程序清单 ORG 0000H AJMP MAIN ; 上电,转向主程序上电,转向主程序 ORG 000BH ;T0中断服务程序入口地址中断服务程序入口地址 AJMP SERVE ;转向中断服务程序;转向中断服务程序 ORG 0030H ;主程序;主程序(例(例6-86-8)MAIN : MOV SP,#60H ;设堆栈指针;设堆栈指针 MOV B,#0AH ;设循环次数;设循环次数 MOV TMOD,#01H ;T0工作于模式工作于模式1 MOV TL0,#0B0H ;装计数值低;装计数值低8位位 MOV TH0,#3CH ;装计数值高;装计数值高8位位 SETB TR0 ;启动定时;启动定时 SETB ET0 ;T0开中断开中断 SETB EA ;CPU开中断开中断 SJMP $ ;等待中断;等待中断(例(例6-86-8)SERVE: MOV TL0,#0B0H ;重新赋初值;重新赋初值 MOV TH0,#3CH DJNZ B,LOOP ;B-1不为不为0,继续定时,继续定时 CLR TR0 ;1s定时到,停止定时到,停止T0工作工作LOOP: RETI ;中断返回;中断返回 END6.3.5 综合应用举例综合应用举例l 例例6-96-9:设计实时时钟程序。设计实时时钟程序。时钟就是以秒、分、时为单位进时钟就是以秒、分、时为单位进行计时。用定时器与中断的联合行计时。用定时器与中断的联合应用应用。(例(例6-96-9)解:解:(1 1)实现时钟计时的基本方法)实现时钟计时的基本方法 计算计数初值。计算计数初值。 时钟计时的最小单位是秒,但使用单片机定时器时钟计时的最小单位是秒,但使用单片机定时器/ /计数器进行定时,即使按方式计数器进行定时,即使按方式1 1工作,其最大定工作,其最大定时时间也只能达时时间也只能达131ms131ms。因此,可把定时器的定。因此,可把定时器的定时时间定为时时间定为100ms100ms,计数溢出,计数溢出1010次即得到时钟计次即得到时钟计时的最小单位时的最小单位秒;而秒;而1010次计数可用软件方法实次计数可用软件方法实现。现。(例(例6-96-9)假定使用定时器假定使用定时器T0,以工作模式,以工作模式1进行进行100ms的定的定时。如时。如fosc=6MHz,则计数初值,则计数初值X为:为: (216X)12/(6 106 )=10010-3 s X=15536=3CB0H因此因此 : (TL0)=0B0H (TH0)=3CH(例(例6-96-9) 采用定时方式进行溢出次数的累计,计满采用定时方式进行溢出次数的累计,计满1010次即得到秒计时。次即得到秒计时。 从秒到分和从分到时的计时是通过累计和从秒到分和从分到时的计时是通过累计和数值比较实现的。数值比较实现的。 时钟显示即及显示缓冲区部分在这里略,时钟显示即及显示缓冲区部分在这里略,可自行设计。可自行设计。(例(例6-96-9)(2 2)程序流程及程序清单)程序流程及程序清单 主程序(主程序(MAINMAIN)的主要功能)的主要功能 进行定时器进行定时器T1T1的初始化编程并启动的初始化编程并启动T1T1,然后通过反复调用显示子程序,等待然后通过反复调用显示子程序,等待100ms100ms定时中断的到来。其流程如图所示。定时中断的到来。其流程如图所示。设设T1为模式为模式1设中断次数设中断次数清计时单元清计时单元开中断开中断启动启动T1调用显示子程序调用显示子程序等待定时中断等待定时中断图图 时钟主程序流程时钟主程序流程(例(例6-96-9)(2 2)程序流程及程序清单)程序流程及程序清单 中断服务程序(中断服务程序(PITOPITO)的主要功能)的主要功能 进行计时操作。程序开始先判断计数溢出时候进行计时操作。程序开始先判断计数溢出时候满了满了1010次,不满表明还没达到最小计时单位次,不满表明还没达到最小计时单位秒,秒,中断返回;如满中断返回;如满1010次则表示已达到最小计时单次则表示已达到最小计时单位位秒,程序继续