《(精品)定时器95581.ppt》由会员分享,可在线阅读,更多相关《(精品)定时器95581.ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六章第六章 定时器及应用定时器及应用第六章第六章 定时器及应用定时器及应用返回主目录返回主目录6.1定时器概述定时器概述6.2定时器的控制定时器的控制6.3定时器的四种模式及应用定时器的四种模式及应用6.2.1工作模式寄存器工作模式寄存器TMOD6.3.1模式模式0及应用及应用6.2.2控制寄存器控制寄存器TCON6.3.2模式模式1及应用及应用6.3.3模式模式2及应用及应用6.3.4模式模式3及应用及应用6.3.5综合应用举例综合应用举例第六章第六章 定时器及应用定时器及应用6.1定时器概述定时器概述51系列单片机内有系列单片机内有两个两个十六位十六位增一增一定时定时/计数计数器器TH0
2、计数值高八位计数值高八位TL0计数值低八位计数值低八位TH1计数值高八位计数值高八位TL1计数值低八位计数值低八位TMODTCON工作方式工作方式定时定时/计数控制计数控制控控制制控控制制第六章第六章 定时器及应用定时器及应用89C51单单片片机机有有2个个16位位的的定定时时/计计数数器器,即即定定时时器器0(T0)和定时器)和定时器1(T1)。)。T0由由2个个特特殊殊功功能能寄寄存存器器TH0和和TL0构构成成,T1则则由由TH1和和TL1构构成成。这这些些功功能能都都由由特特殊殊功功能能寄寄存存器器TMOD和和TCON所控制。所控制。当当设设置置为为定定时时工工作作方方式式时时,定定时
3、时器器计计数数89C51片片内内振振荡荡器器输输出出经经12分分频频后后的的脉脉冲冲,即即每每个个机机器器周周期期使使定定时时器器(T0或或T1)的的数数值值加加1直直至至计计满满溢溢出出。当当89C51采采用用12MHz晶晶振振时时,一一个个机机器器周周期期为为1s,计计数频率为数频率为1MHz。第六章第六章 定时器及应用定时器及应用当当 设设 置置 为为 计计 数数 工工 作作 方方 式式 时时,通通 过过 引引 脚脚T0(P3.4)和和T1(P3.5)对对外外部部脉脉冲冲信信号号计计数数,当当输入脉冲信号从输入脉冲信号从1到到0的下降沿的下降沿时,定时器的值加时,定时器的值加1。在在每每
4、个个机机器器周周期期的的S5P2期期间间采采样样T0和和T1引引脚脚的的输输入入电电平平,若若前前一一个个机机器器周周期期采采样样值值为为1,下下一一个个机机器器周周期期采采样样值值为为0,则则计计数数器器加加1。此此后后的的机机器器周周期期S3P1期期间间,新新的的数数值值装装入入计计数数器器。所所以以,检检测测一一个个1至至0的的跳跳变变需需要要二二个个机机器器周周期期,故故最最高高计计数数频频率率为为振振荡频率的荡频率的1/24。对对输输入入信信号号的的占占空空比比无无特特殊殊要要求求,但但为为了了确确保保某某个个电电平平在在变变化化之之前前至至少少被被采采样样一一次次,要要求求电电平平
5、保保持持时时间间至至少少是是一一个个完完整整的的机机器器周周期期,对对输输入入脉脉冲冲的的基基本要求如图本要求如图6-2所示,所示,Tcy为机器周期。为机器周期。第六章第六章 定时器及应用定时器及应用不管定时还是计数,都不占用不管定时还是计数,都不占用CPU时间。时间。每个定时器有每个定时器有四种工作模式四种工作模式。TcyTcy图图6-2对输入脉冲宽度的要求对输入脉冲宽度的要求第六章第六章 定时器及应用定时器及应用6.2定时器的控制定时器的控制6.2.1工作模式寄存器工作模式寄存器TMOD(89H)TMOD用于用于控制控制T0和和T1的工作模式的工作模式,其各位,其各位的定义格式如图的定义格
6、式如图6-1所示。所示。图图6-3工作模式寄存器工作模式寄存器TMOD的位定义的位定义其中,低其中,低4位用于位用于T0。高。高4位用于位用于T1。第六章第六章 定时器及应用定时器及应用M1M0M1M0工作模式工作模式工作模式工作模式功能描述功能描述功能描述功能描述 0000模式模式模式模式013013位计数器位计数器位计数器位计数器 0101模式模式模式模式116116位计数器位计数器位计数器位计数器 1010模式模式模式模式22自动装入自动装入自动装入自动装入8 8位计数器位计数器位计数器位计数器 1111模式模式模式模式33定时器定时器定时器定时器0:0:分成两个分成两个分成两个分成两个
7、8 8位计数器位计数器位计数器位计数器定时器定时器定时器定时器1:1:停止计数停止计数停止计数停止计数表表6-1M1,M0控制的四种工作模式控制的四种工作模式第六章第六章 定时器及应用定时器及应用TMODGATEGATEC/TC/TM1M1M0M0用于用于用于用于T0T0工作模式工作模式工作模式工作模式(89H)工作模式工作模式00模式模式001模式模式110模式模式211模式模式3功能选择功能选择1计数计数0定时定时选通控制选通控制1受受/INT0控制控制0不受不受/INT0控制控制TMOD不能位寻址,只能字节寻址。不能位寻址,只能字节寻址。第六章第六章 定时器及应用定时器及应用C/T:定时
8、器:定时器/计数器方式选择位计数器方式选择位C/T=0:定时方式:定时方式计数片内脉冲(即对机器周期计数,计数片内脉冲(即对机器周期计数,周期确周期确定定)C/T=0:计数方式:计数方式计数片外脉冲(即对通过计数片外脉冲(即对通过P3.4/P3.5来自片外来自片外的计数信号计数,的计数信号计数,周期不定周期不定)第六章第六章 定时器及应用定时器及应用GATE:门控位:门控位GATE=0:软件使:软件使TR0/TR1置置1,即可启动定时器,即可启动定时器GATE=1:只有:只有INT0/INT1输入信号为高电平,软件输入信号为高电平,软件使使TR0/TR1置置1,才可启动定时器,才可启动定时器定
9、时器的使用:定时器的使用:设置工作方式设置工作方式-置初值置初值-启动启动-溢出中断溢出中断第六章第六章 定时器及应用定时器及应用6.2.2控制寄存器控制寄存器TCON(88H)图图6-5控制寄存器控制寄存器TCON的位定义的位定义TCON各位的作用如下:各位的作用如下:TF1(TCON.7)T1溢出标志位。溢出标志位。TF0(TCON.5)T0溢出标志位。溢出标志位。TR1(TCON.6)T1运行控制位运行控制位。TR0(TCON.4)T0运行控制位运行控制位。IE1,IT1,IE0和和IT0(TCON.3TCON.0)外外部中断部中断INT1,INT0请求及请求方式控制位。请求及请求方式控
10、制位。89C51复位后,复位后,TCON的所有位被清的所有位被清0。第六章第六章 定时器及应用定时器及应用TCONTF1TF1TR1TR1TF0TF0TR0TR0用于外部中断用于外部中断用于外部中断用于外部中断(88H)T0运行控制(软件)运行控制(软件)1启动启动0禁止禁止T0溢出标志(硬件)溢出标志(硬件)1溢出溢出0未溢出未溢出T1运行控制(软件)运行控制(软件)1启动启动0禁止禁止T1溢出标志(硬件)溢出标志(硬件)1溢出溢出0未溢出未溢出第六章第六章 定时器及应用定时器及应用6.3定时器的四种模式及应用定时器的四种模式及应用89C51单单片片机机的的定定时时/计计数数器器T0和和T1
11、可可由由软软件件对对特特殊殊功功能能寄寄存存器器TMOD中中控控制制位位C/T进进行行设设置置,以以选选择择定定时时功功能能或或计计数数功功能能。对对M1和和M0位位的的设设置置对对应应于于四四种种工工作作模模式式,即即模模式式0、模模式式1、模模式式2和和模模式式3。在在模模式式0、模模式式1和和模模式式2时时,T0和和T1的的工工作作模模式式相相同同;在在模式模式3时,两个定时器的工作模式不同时,两个定时器的工作模式不同。第六章第六章 定时器及应用定时器及应用6.3.1模式模式0及应用及应用模模式式0是是选选择择定定时时器器(T0或或T1)的的高高8位位和和低低5位位组组成成的的一一个个1
12、3位位定定时时器器/计计数数器器。图图6-5是是在在T0模模式式0时的逻辑电路结构。时的逻辑电路结构。图图6-7定时器定时器0模式模式013位计数器位计数器定时计数TH0(8)TL0(5)TH07 TH00 TL04 TL00第六章第六章 定时器及应用定时器及应用在图在图6-5中,中,C/T=0时,控制开关时,控制开关接通振荡器接通振荡器12分频输出端,分频输出端,T0对机对机器周期计数。这就是定时工作方式。器周期计数。这就是定时工作方式。其定时时间为其定时时间为t=(2t=(21313T0T0初值初值初值初值)振荡周期振荡周期振荡周期振荡周期1212第六章第六章 定时器及应用定时器及应用例例
13、6-1:设定时器设定时器T0选择工作模式选择工作模式0,定时时间为,定时时间为1ms,fOSC=6MHz。试确定。试确定T0初值,计算最大定时时间初值,计算最大定时时间T。解解:当:当T0处于工作模式处于工作模式0时,加时,加1计数器为计数器为13位。设位。设T0的初的初值为值为X。则。则X=7692转换为二进制数转换为二进制数X=1111000001100B=1E0CHT0的低的低5位:位:01100B=0CHT0的高的高8位:位:11110000B=F0HT0最大定时时间对应于最大定时时间对应于13位计数器位计数器T0的各位全为的各位全为1,即,即(TH0)=FFH,(,(TL0)=1FH
14、。则则第六章第六章 定时器及应用定时器及应用例例6-2:设设T0工作在模式工作在模式0,定时时间为,定时时间为1ms,fOSC=6MHz。编程实现其定时功能,在编程实现其定时功能,在P1.0口输出口输出1ms方波脉冲。方波脉冲。解解:(1)计算)计算T0初值初值X结果为(结果为(TH0)=0F0H,(,(TL0)=0CH。(2)程序清单)程序清单ORG0000HRESET:AJMPMAIN;跳过中断服务程序区跳过中断服务程序区ORG000BH;中断服务程序固定入口中断服务程序固定入口AJMPITOP主程序主程序ORG0100HMAIN:MOVSP,#60H;设堆栈指针;设堆栈指针ACALLPT
15、OMDHERE:AJMPHERE;等待时间到,转入中断等待时间到,转入中断第六章第六章 定时器及应用定时器及应用PTOMD:MOVTL0,#0CH;装入初值装入初值MOVTH0,#0F0HSETBTR0;启动定时启动定时SETBET0;开中断开中断SETBEARET;子程序返回子程序返回中断服务程序中断服务程序ORG0120HITOP:MOVTL0,#0CH;重装入初值重装入初值MOVTH0,#0F0HCPLP1.0;P1.0输出取反输出取反;产生产生周期周期2ms的方波的方波RETI;中断返回中断返回第六章第六章 定时器及应用定时器及应用例例6-3:利用利用T0的工作模式的工作模式0产生产生
16、1ms的定时,在的定时,在P1.0引脚上引脚上输出输出2ms的方波。设单片机晶振的方波。设单片机晶振=12MHz。解:解:(1 1)选择工作模式)选择工作模式)选择工作模式)选择工作模式要在要在P1.0引脚输出周期为引脚输出周期为2ms方波,只要使方波,只要使P1.0每隔每隔1ms取取反一次即可。反一次即可。T0的模式字节的模式字节TMOD=00H,即,即TMOD.1TMOD.0M1M0=00,T0为模式为模式0;TMOD.2C/T=0,T0为定时状态;为定时状态;TMOD.3GATE=0,表示计数不受表示计数不受INT0控制控制;TMOD.4TMOD.7可为任意值。因可为任意值。因T1不用,
17、这里取不用,这里取0第六章第六章 定时器及应用定时器及应用(2 2)计算)计算)计算)计算1ms1ms定时时定时时定时时定时时T0T0的初值的初值的初值的初值机器周期机器周期设设T0的计数初值为的计数初值为X,则,则=8192-1000=7192D=1110000011000BTH0初值为初值为E0H,TL0初值为初值为18H。可查询。可查询TF0的状态的状态来控制来控制P1.0输出。输出。719232商为高商为高8位,位,余数为低余数为低5位位第六章第六章 定时器及应用定时器及应用(3 3)查询方式)查询方式)查询方式)查询方式采用查询方式的程序很简单,但在定时器计数过程中,采用查询方式的程
18、序很简单,但在定时器计数过程中,CPU要不断查询溢出标志位要不断查询溢出标志位TF0的状态。这就占用了很多的状态。这就占用了很多CPU的工作时间,使的工作时间,使CPU的效率下降。的效率下降。程序清单:程序清单:MOVTMOD,#00H;设置设置T0T0为模式为模式0 0MOVTL0,#18H;送初值;送初值MOVTH0,#0E0HSETBTR0;启动;启动T0T0LOOP:JBCTF0,NEXT;查询定时时间到否?;查询定时时间到否?SJMPLOOPNEXT:MOVTL0,#18H;重装计数初值;重装计数初值MOVTH0,#0E0HCPLP1.0;输出取反;输出取反SJMPLOOP;重复循环
19、;重复循环第六章第六章 定时器及应用定时器及应用(4 4)定时器溢出中断方式)定时器溢出中断方式)定时器溢出中断方式)定时器溢出中断方式主程序主程序MAIN:MOVTMOD,#00H;设置设置T0T0为模式为模式0 0MOVTL0,#18H;送初值送初值MOVTH0,#0E0HSETBEA;CPUCPU开中断开中断SETBET0;T0T0中断允许中断允许SETBTR0;启动启动T0T0HERE:SJMPHERE;等待中断等待中断中断服务程序中断服务程序ORG000BH;T0T0入口入口AJMPCTC0;转中断服务程序转中断服务程序CTC0:MOVTL0,#18H;重装初值;重装初值MOVTH0
20、,#0E0HCPLP1.0;输出方波;输出方波RETI;中断返回;中断返回第六章第六章 定时器及应用定时器及应用6.3.2模式模式1及应用及应用该该模模式式对对应应的的是是一一个个16位位的的定定时时器器/计计数数器器,见见图图6-8。其其结结构构与与操操作作几几乎乎与与模模式式0完完全全相相同同,唯唯一一的的差差别别是是:在在模模式式1中中,寄寄存存器器TH0和和TL0是是以以全全部部16位位参参与与操操作作。用用于于定定时时工工作作方方式式时时,定定时时时间为时间为t=(2t=(21616T0T0初值初值初值初值)振荡周期振荡周期振荡周期振荡周期1212用用于于计计数数工工作作方方式式时时
21、,计计数数长长度度为为216=65536(个外部脉冲)。(个外部脉冲)。第六章第六章 定时器及应用定时器及应用图图6-8T0(或或T1)模式模式1结构结构16位计数器位计数器第六章第六章 定时器及应用定时器及应用例例6-2:用定时器:用定时器T1产生一个产生一个50Hz的方波,由的方波,由P1.1输出。仍输出。仍使用程序查询方式,使用程序查询方式,fosc=12MHz。解解:方波周期:方波周期T=1/50Hz=0.02s=20ms,用用T1定时定时10ms,计,计数初值数初值X为为X=216-12101000/12=65536-10000=55536=D8F0H源程序如下:源程序如下:MOVT
22、MOD,#10H;T1;T1模式模式1 1,定时,定时SETBTR1;启动启动T1T1LOOP:MOVTH1,#0D8H;装入装入T1T1计数初值计数初值MOVTL1,#0F0HJNBTF1,$;T1;T1没有溢出等待没有溢出等待CLRTF1;产生溢出,请标志位;产生溢出,请标志位CPLP1.1;P1.1;P1.1取反取反 输出输出SJMPLOOP;循环;循环问题问题:此题是否可以应用模式此题是否可以应用模式0来求解来求解?第六章第六章 定时器及应用定时器及应用6.3.3模式模式2及应用及应用模式模式2把把TL0(或或TL1)配置成一个可以配置成一个可以自动重装载自动重装载的的8位位定时器定时
23、器/计数器,如图计数器,如图6-9所示。所示。图图6-9T0(或或T1)模式模式2结构结构8位计数器位计数器第六章第六章 定时器及应用定时器及应用TL0计计数数溢溢出出时时,不不仅仅使使溢溢出出中中断断标标志志位位TF0置置1,而而且且还还自自动动把把TH0中中的的内内容容重重新新装装载载到到TL0中中。这这里里,16位位计计数数器器被被拆拆成成二二个个,TL0用用作作8位位计计数数器器,TH0用用以保护初值以保护初值。在在程程序序初初始始化化时时,TL0和和TH0由由软软件件赋赋予予相相同同的的初初值值。一一旦旦TL0计计数数溢溢出出,便便置置位位TF0,并并将将TH0中中的的初初值值再再自
24、自动动装装入入TL0,继继续续计计数数,循循环环重重复复。用用用用于于于于定定定定时时时时工工工工作作作作模模模模式时式时式时式时,其定时时间(,其定时时间(TF0溢出周期)为溢出周期)为t=(2t=(28 8TH0TH0初值初值初值初值)振荡周期振荡周期振荡周期振荡周期1212用用用用于于于于计计计计数数数数工工工工作作作作方方方方式式式式时时时时,最最大大计计数数长长度度(TH0初初值值=0)为)为28=256(个外部脉冲)。(个外部脉冲)。这这种种工工作作模模式式可可省省去去用用户户软软件件中中重重装装常常数数的的语语句句,并并可可产产生生相相当当精精确确的的定定时时时时间间,特特别别适
25、适于于串串行行口口波波特特率率发生器。发生器。第六章第六章 定时器及应用定时器及应用例例6-5:当:当P3.4引脚上的电平发生负跳变时,从引脚上的电平发生负跳变时,从P1.0输输出一个出一个500s的同步脉冲。请编程实现该功能。的同步脉冲。请编程实现该功能。解解:模式选择模式选择模式选择模式选择首先选首先选T0为模式为模式2,外部事件计数方式。当,外部事件计数方式。当P3.4引脚引脚上的电平发生负跳变时,上的电平发生负跳变时,T0计数器加计数器加1,溢出标志,溢出标志TF0置置1;然后改变;然后改变T0为为500s定时工作方式,并使定时工作方式,并使P1.0输出输出由由1变为变为0。T0定时到
26、产生溢出,使定时到产生溢出,使P1.0引脚恢复输出引脚恢复输出高电平,高电平,T0又恢复外部事件方式。如图又恢复外部事件方式。如图6-8所示。所示。第六章第六章 定时器及应用定时器及应用计数初值计数初值计数初值计数初值T0工工作作在在外外部部事事件件计计数数方方式式,当当计计数数到到28时时,再再加加1计计数数器器就就会会溢溢出出。设设计计数数初初值值为为X,当当再再出出现一次外部事件时,计数器溢出。则现一次外部事件时,计数器溢出。则X+1=28X=281=11111111B=0FFHT0工工作作在在定定时时方方式式时时,设设晶晶振振频频率率为为6MHz,500s相当于相当于250个机器周期。
27、因此,初值个机器周期。因此,初值X为为(28X)2s=500sX=28250=6=06H第六章第六章 定时器及应用定时器及应用程序清单程序清单程序清单程序清单START:MOVTMOD,#06H;设置设置T0T0为模式为模式2 2。外部计数方式。外部计数方式MOVTH0,#0FFH;T0;T0计数器初值计数器初值 MOVTL0,#0FFHSETBTR0;启动启动T0T0计数计数LOOP1:JBCTF0,PTFO1;查询查询T0T0溢出标志,溢出标志,TF0=1TF0=1时转移时转移 TF0=0(TF0=0(即查即查P3.4P3.4负跳负跳变变)SJMPLOOP1PTFO1:CLRTR0;停止计
28、数停止计数MOVTMOD,#02H;设置设置T0T0为模式为模式2 2,定时方式,定时方式MOVTH0,#06H;T0;T0定时定时500us500us初值初值MOVTL0,#06HCLRP1.0;P1.0;P1.0清清0 0SETBTR0;启动定时启动定时500us500us第六章第六章 定时器及应用定时器及应用LOOP2:JBCTF0,PTFO2;查询溢出标志查询溢出标志,定时到定时到TF0=1TF0=1转转 移移,且且TF0=0(TF0=0(第一个第一个500us500us到否到否?)?)SJMPLOOP2PTFO2:SETBP1.0;P1.0P1.0置置1(1(到了第一个到了第一个50
29、0us)500us)CLRTR0;停止计数停止计数SJMPSTART问题问题:1.此题是否可以应用模式此题是否可以应用模式0/1来求解来求解?2.如果在定时如果在定时500us期间期间,又在又在P3.4引脚上的电平引脚上的电平 发生负跳变时发生负跳变时,CPU会如何响应会如何响应?第六章第六章 定时器及应用定时器及应用例例6-6:利利用用定定时时器器T1的的模模式式2对对外外部部信信号号计计数数。要要求每计满求每计满100次,将次,将P1.0端取反。端取反。解解:(1 1)选择模式)选择模式)选择模式)选择模式外外部部信信号号由由T1(P3.5)引引脚脚输输入入,每每发发生生一一次次负负跳跳变
30、变计计数数器器加加1,每每输输入入100个个脉脉冲冲,计计数数器器发发生生溢溢出出中中断断,中断服务器将中断服务器将P1.0取反一次。取反一次。T1计计数数工工作作方方式式模模式式2的的模模式式字字为为TMOD=60H。T0不不用用时时,TMOD的的低低4位位可可任任取取,但但不不能能使使T0进进入入模模式式3,一般取,一般取0。(2 2)计算)计算)计算)计算T1T1的计数初值的计数初值的计数初值的计数初值X=28-100=156D=9CH因此,因此,TL1的初值为的初值为9CH,重装初值寄存器,重装初值寄存器TH1=9CH。第六章第六章 定时器及应用定时器及应用(3 3)程序清单)程序清单
31、)程序清单)程序清单MAIN:MOVTMOD,#60H;置;置T1T1为模式为模式2 2计数工作方式计数工作方式MOVTL1,#9CH;赋初值;赋初值MOVTH1,#9CHMOVIE,#88H;定时器定时器T1T1开中断开中断SETBTR1;启动计数器启动计数器HERE:SJMPHERE;等待中断等待中断ORG001BH;中断服务程序入口中断服务程序入口CPLP1.0RETI第六章第六章 定时器及应用定时器及应用6.3.4模式模式3及应用及应用工作模式工作模式3对对T0和和T1大不相同。大不相同。若将若将T0设置为模式设置为模式3,TL0和和TH0被分成为两个相互被分成为两个相互独立的独立的8
32、位计数器位计数器,如图,如图6-11所示。所示。图图6-11T0模式模式3结构:分成二个结构:分成二个8位计数器位计数器第六章第六章 定时器及应用定时器及应用TL0使使用用T0的的各各控控制制位位、引引脚脚和和中中断断源源,其其操操作作模式和模式模式和模式0、1相同。相同。TH0用用于于简简单单的的内内部部定定时时,它它占占用用定定时时器器T1的的控控制位制位TR1和和TF1,其启动和关闭仅受,其启动和关闭仅受TR1的控制。的控制。TH0仅仅占占用用T1的的与与中中断断有有关关的的IE中中的的位位,但但并并未未占占用用TMOD中中的的位位,TMOD中中的的T1的的控控制制位位仍仍然然由由T1使
33、用。使用。定定时时器器T1无无工工作作模模式式3,若若T1设设置置为为模模式式3,就就会会使使T1立即停止计数。立即停止计数。第六章第六章 定时器及应用定时器及应用在在定定时时器器T0用用作作模模式式3时时,T1仍仍可可设设置置为为模模式式02,见见图图6-9(a)和和(b)。由由于于TR1和和TF1被被定定时时器器T0占占用用,计计数数器器开开关关K已已被被接接通通,此此时时,仅仅用用T1控控制制位位C/T切切换换其其定定时时器器或或计计数数器器工工作作方方式式就就可可使使T1运运行行。寄寄存存器器(8位位、13位位或或16位位)溢溢出出时时,只只能能将将输输出出送送入入串串行行口口或或用用
34、于于不不需需要要中中断断的的场场合合。一一般般情情况况下下,当当定定时时器器T1用用作作串串行行口口波波特特率率发发生生器器时时,定定时时器器T0才才设设置置为为工工作作模模式式3。此此时时,常常把把定定时时器器T1设设置置为为模模式式2,用用作作波波特特率率发发生生器器,见图见图6-9(b)。第六章第六章 定时器及应用定时器及应用图图6-12T0模式模式3下的下的T1结构结构第六章第六章 定时器及应用定时器及应用定时定时器器控制位控制位(TMOD)启动方启动方式式计数脉计数脉冲引脚冲引脚定时定时/计计数数中断源中断源TL0模式模式3GATEC/TM1M0TF0(TCON)TR0=1P3.4定
35、时定时/计计数数T0000BHET0(IE)TH0模式模式3TF1(TCON)TR1=1定时定时T1001BHET1(IE)T1模式模式0-2GATEC/TM1M0C/T切切换换P3.5定时定时/计计数数无无第六章第六章 定时器及应用定时器及应用 例例6-7:设设某某用用户户系系统统中中已已使使用用了了两两个个外外部部中中断断源源,并并置置定定时时器器T1工工作作模模式式2,做做串串行行口口波波特特率率发发生生器器用用。现现要要求求再再增增加加一一个个外部中断源,并由外部中断源,并由P1.0引脚输出一个引脚输出一个5KHz的方波。的方波。fosc=12MHz。解解:为为了了不不增增加加其其它它
36、硬硬件件开开销销,可可设设置置T0工工作作模模式式3计计数数方方式式,把把T0的的引引脚脚作作附附加加的的外外部部中中断断输输入入端端,TL0的的计计数数初初值值为为FFH,当当检检测测到到T0引引脚脚电电平平出出现现由由1至至0的的负负跳跳变变时时,TL0产产生生溢溢出,申请中断。这相当于边沿触发的外部中断源。出,申请中断。这相当于边沿触发的外部中断源。T0模模式式3下下,TL0作作计计数数用用,而而TH0可可用用作作8位位的的定定时时器器,定定时控制时控制P1.0引脚输出引脚输出5KHz的方波信号。的方波信号。TL0的计数初值为的计数初值为FFH,TH0的计数初值的计数初值X计算如下:计算
37、如下:P1.0的方波频率为的方波频率为5KHz,故周期,故周期T=1/(5KHz)=0.2ms=200us用用TH0定时定时100us时,时,X=256-10012/12=156第六章第六章 定时器及应用定时器及应用定时器定时器定时定时/计数计数功能功能TL0模式模式3计数计数检测检测T0引脚负跳变引脚负跳变TH0模式模式3定时定时8位位产生产生5KHz的方波信号的方波信号T1模式模式2定时定时8位位串行口波特率发生器串行口波特率发生器第六章第六章 定时器及应用定时器及应用程序如下程序如下:MOVTMOD,#27H;T0;T0为模式为模式3,3,计数方式计数方式;T1;T1为为 模式模式2,2
38、,定时方式定时方式00100111BMOVTL0,#0FFH;置置TL0TL0计数初值计数初值MOVTH0,#156;置置TH0TH0计数初值计数初值MOVTH1,#data;data;data是根据波特率要求是根据波特率要求设置的设置的常数(即初值常数(即初值)MOVTL1,#dataMOVTCON,#55H;外中断外中断0,0,外中断外中断1 1边沿触发边沿触发,启动启动T0,T1 T0,T1 0 01 10 01 1 0101B 0101BMOVIE,#9FH;开放全部中断;开放全部中断 第六章第六章 定时器及应用定时器及应用TL0溢出中断服务程序溢出中断服务程序(由由000BH转来转来
39、)TL0INT:MOVTL0,#0FFH;TL0重赋初值重赋初值(中断处理)(中断处理)RETITH0溢出中断服务程序溢出中断服务程序(由由001BH转来转来)TH0INT:MOVTH0,#156;TH0重赋初值重赋初值CPLP1.0;P1.0取反输出取反输出RETI串行口及外部中断串行口及外部中断0,外中断,外中断1的服务程序在此不再一一列出。的服务程序在此不再一一列出。第六章第六章 定时器及应用定时器及应用6.3.5综合应用举例综合应用举例例例6-8:设时钟频率为:设时钟频率为6MHz。试编写利用。试编写利用T0产生产生1s定时的程定时的程序。序。解解:定时器定时器定时器定时器T0T0工作
40、模式的确定工作模式的确定工作模式的确定工作模式的确定因定时时间较长,采用哪一种工作模式合适呢因定时时间较长,采用哪一种工作模式合适呢?可以算出:可以算出:模式模式0最长可定时最长可定时16.384ms;模式模式1最长可定时最长可定时131.072ms;模式模式2最长可定时最长可定时512s。题中要求定时题中要求定时1s,可,可选模式选模式1,每隔每隔100ms中断一次中断一次,中断,中断10次为次为1s。求计数值求计数值求计数值求计数值XXX=15536=3CB0H因此,因此,(TL0)=0B0H,(TH0)=3CH。第六章第六章 定时器及应用定时器及应用实现方法实现方法实现方法实现方法对于中
41、断对于中断10次计数,可使次计数,可使T0工作在计数方式,也可用工作在计数方式,也可用循环程序的方法实现。循环程序的方法实现。源程序清单源程序清单源程序清单源程序清单ORG0000HLJMPMAIN;上电,转向主程序上电,转向主程序ORG000BH;T0;T0的中断入口地址的中断入口地址AJMPSERVE;转向中断服务程序转向中断服务程序ORG2000H;主程序主程序MAIN:MOVSP,#60H;设堆栈指针设堆栈指针MOVB,#0AH;设循环次数设循环次数MOVTMOD,#01H;设置设置T0T0工作模式工作模式1 1MOVTL0,#0B0H;装入计数值低装入计数值低8 8位位MOVTH0,
42、#3CH;装入计数值高装入计数值高8 8位位第六章第六章 定时器及应用定时器及应用 SETBTR0 ;启动定时器T0 SETBET0 ;允许T0中断 SETBEA ;允许CPU中断 SJMP$;等待中断 SERVE:MOVTL0,#0B0H MOVTH0,#3CH ;重新赋计数值 DJNZB,LOOP CLRTR0 ;1s定时到,停止T0工作 LOOP:RETI ;中断返回 END 第六章第六章 定时器及应用定时器及应用例例6-9:设计定时时钟程序。:设计定时时钟程序。解:本例涉及到了定时器与中断的联合应用。时钟就是以秒、解:本例涉及到了定时器与中断的联合应用。时钟就是以秒、分、时为单位进行计
43、时。分、时为单位进行计时。(1 1)实现时钟计时的基本方法)实现时钟计时的基本方法)实现时钟计时的基本方法)实现时钟计时的基本方法计算计数初值。时钟计时的最小单位是秒,但使用单片机定计算计数初值。时钟计时的最小单位是秒,但使用单片机定时器时器/计数器进行定时,即使按方式计数器进行定时,即使按方式1工作,其最大定时时间也只工作,其最大定时时间也只能达能达131ms.鉴于此,可把定时器的定时时间定为鉴于此,可把定时器的定时时间定为100ms,这样,计数溢出,这样,计数溢出10次即得到时钟计时的最小单位次即得到时钟计时的最小单位-秒;而秒;而10次计数可用软件次计数可用软件方法实现。方法实现。假定使
44、用定时器假定使用定时器T1,以工作模式,以工作模式1进行进行100ms的定时。如单片的定时。如单片机晶振频率为机晶振频率为6MHZ,为得到,为得到100ms定时,设计数初值为定时,设计数初值为X,则,则第六章第六章 定时器及应用定时器及应用采采用用中中断断方方式式进进行行溢溢出出次次数数的的累累计计,记记满满10次次即即得得到到秒计时。秒计时。从从秒秒到到分分和和从从分分到到时时的的计计时时是是通通过过累累加加和和数数值值比比较较实实现的。现的。时钟显示及显示缓存区部分留给读者自己设计。时钟显示及显示缓存区部分留给读者自己设计。第六章第六章 定时器及应用定时器及应用(2 2)程序流程及程序清单
45、)程序流程及程序清单)程序流程及程序清单)程序流程及程序清单主主程程序序(MAIN)的的主主要要功功能能是是进进行行定定时时器器T1的的初初始始化化编编程程并并启启动动T1,然然后后通通过过反反复复调调用用显显示示子子程程序序,等待等待100ms定时中断的到来。其流程图如图定时中断的到来。其流程图如图6-13所示。所示。中中断断服服务务程程序序(PITO)的的主主要要功功能能是是进进行行计计时时操操作作。程程序序开开始始先先判判断断计计数数溢溢出出是是否否满满了了10次次,不不满满10次次表表明明还还没没达达到到最最小小计计时时单单位位-秒秒,中中断断返返回回;满满10次次表表示示已已达达到到
46、最最小小计计时时单单位位-秒秒,程程序序继继续续往往下下运运行行,进进行行计计时时操操作作。要要求求满满1秒秒则则“秒秒位位”32H单单元元内内容容加加1,满满60s则则“分分位位”31H单单元元内内容容加加1,满满60min则则“时时位位”30H单单元元内内容容加加1,满满24h则则将将30H,31H,32H的内容全部清的内容全部清0。第六章第六章 定时器及应用定时器及应用设设T1为模式为模式1设中断次数为设中断次数为10清计时单元清计时单元调用显示子程序调用显示子程序启启动动T1开开中中断断图图6-13时钟主程序流程时钟主程序流程第六章第六章 定时器及应用定时器及应用源程序如下:源程序如下
47、:ORG0000HAJMPMAIN;上电,转向主程序;上电,转向主程序ORG001BH;T1T1的中断入口地址的中断入口地址AJMPSERVE;转向中段服务程序;转向中段服务程序MAIN:MOVTMOD,#10H;设;设T1T1工作于模式工作于模式1 1MOV20H,#0AH;装入中断次数;装入中断次数CLRAMOV30H,A;时单元清;时单元清0 0MOV31H,A;分单元清;分单元清0 0MOV32H,A;秒单元清;秒单元清0 0SETBET1;允许;允许T1T1中断中断SETBEA;允许;允许CPUCPU中断中断MOVTH1,#3CHMOVTL1,#0B0H;赋计数初值;赋计数初值SET
48、BTR1;启动定时器;启动定时器T1T1第六章第六章 定时器及应用定时器及应用SJMP$;等待中断(可反复调用;等待中断(可反复调用 显示子程序)显示子程序)SERVE:PUSHPSWPUSHACC;保护现场;保护现场MOVTH1,#3CHMOVTL1,#0B0H;重新赋计数初值;重新赋计数初值DJNZ20H,RETUNT;1s 1s未到,返回未到,返回MOV20H,#0AH;重置中断次数;重置中断次数MOVA,#01HADDA,32H;“秒位秒位”加加1 1DAAMOV32H,A;转换为;转换为BCDBCD码码CJNEA,#60,RETUNT;未记满;未记满60s60s,返回,返回MOV32
49、H,#00H;记满;记满60s60s,“秒位秒位”清清0 0MOVA,#01HADDA,31H;“分位分位”加加1 1第六章第六章 定时器及应用定时器及应用DAAMOV31H,A;转换为;转换为BCDBCD码码CJNEA,#60H,RETUNT;未记满;未记满60min60min,返回,返回MOV31H,#00H;记满;记满60min60min,“分位分位”清清0 0MOVA,#01HADDA,30H;“时位时位”加加1 1DAAMOV30H,A;转换为;转换为BCDBCD码码CJNEA,#24H,RETUNT;未记满;未记满24h24h,返回,返回MOV30H,#00H;记满;记满24h24
50、h,“时位时位”清清0 0RETUNT:POPACCPOPPSW;恢复现场;恢复现场RETI;中断返回;中断返回END第六章第六章 定时器及应用定时器及应用DAAMOV31H,A;转换为;转换为BCDBCD码码CJNEA,#60H,RETUNT;未记满;未记满60min60min,返回,返回MOV31H,#00H;记满;记满60min60min,“分位分位”清清0 0MOVA,#01HADDA,30H;“时位时位”加加1 1DAAMOV30H,A;转换为;转换为BCDBCD码码CJNEA,#24H,RETUNT;未记满;未记满24h24h,返回,返回MOV30H,#00H;记满;记满24h24