




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 5.1 5.1 定时方法概述定时方法概述 1.1.软件定时:执行一个循环程序进行时间软件定时:执行一个循环程序进行时间延迟。延迟。但是单片机但是单片机cpu被占用被占用,无法进行,无法进行多任务处理。多任务处理。 2.2.硬件定时:定时时间较长。硬件定时:定时时间较长。 3.3.可编程定时器定时:对系统时钟脉冲的可编程定时器定时:对系统时钟脉冲的计数来实现。计数来实现。采用专门的定时器和计数器采用专门的定时器和计数器独立运行,有利于提高单片机的性能,适独立运行,有利于提高单片机的性能,适用于用于实时多任务实时多任务处理的要求处理的要求第五章第五章2 单片机的定时器计数器单片机的定时器计数器
2、25.2、 定时器定时器/计数器的结构和功能计数器的结构和功能以以8051系列为例:系列为例:2个个16位可编程定时器位可编程定时器/计数器:计数器:t0和和t1.t0:tl0/th0;t1:tl1/th1tmod/tcon:工作方式寄存器工作方式寄存器/控制寄存器控制寄存器1.结构结构内部总线工作方式工作方式th1tl1th0tl0tcontmodt1t0微处理器32.功能功能16位的定时器位的定时器/计数器的实质:加法计数器。计数器的实质:加法计数器。(1)定时)定时对对机器周期机器周期进行计数,即计数脉冲来自单片机的内进行计数,即计数脉冲来自单片机的内部。即每个机器周期产生一个计数脉冲使
3、得计数器部。即每个机器周期产生一个计数脉冲使得计数器加加1,直至计满溢出,直至计满溢出 。计数频率计数频率fosc/12,即,即1个机器周期;个机器周期;“定时定时”时间:开始计数到溢出;时间:开始计数到溢出;预置计数法:初值越大,定时越短。预置计数法:初值越大,定时越短。4(2)计数)计数对外部脉冲信号计数(对外部脉冲信号计数(t0p3.4/t1p3.5)。下降沿出现时,计数器值加下降沿出现时,计数器值加1.在每个机器周期的在每个机器周期的s5p2拍节时对外部计数脉冲进行采样;拍节时对外部计数脉冲进行采样;如果前一个机器周期采样为高电平,后一个机器周期采样如果前一个机器周期采样为高电平,后一
4、个机器周期采样为低电平,即为一个有效的计数脉冲。为低电平,即为一个有效的计数脉冲。下一个周期的下一个周期的s3p1期间,新的计数值装入计数器。期间,新的计数值装入计数器。最高计数频率最高计数频率fosc/24,即,即2个机器周期。个机器周期。注:注:定时器按设定的工作方式独立运行,不占用定时器按设定的工作方式独立运行,不占用cpu的操作的操作时间,除非定时器计满溢出,中断时间,除非定时器计满溢出,中断cpu。5 1.定时器控制寄存器定时器控制寄存器tcon功能:控制定时器功能:控制定时器t0或或t1的运行或停止,并标志定时器的溢出和中断情的运行或停止,并标志定时器的溢出和中断情况。况。位地址:
5、位地址:88h,可以位寻址。,可以位寻址。tf0/tf1:定时器溢出标志。溢出时,硬件自动使定时器溢出标志。溢出时,硬件自动使tf0/tf1置置1,并申请中并申请中断。断。tr0/tr1:定时器运行控制位。置定时器运行控制位。置1启动工作,置启动工作,置0停止工作。停止工作。ie0/ie1:外部中断外部中断0(int0)/1(int1)请求标志。请求标志。it0/it1:外部中断外部中断0/1触发方式选择位。触发方式选择位。位地址位地址8fh8eh8dh8ch8bh8ah89h88htcontf1tr1tf0tr0ie1it1ie0it05.3 控制寄存器和方式寄存器控制寄存器和方式寄存器6
6、2.方式寄存器方式寄存器 gate门控位门控位 gate =0 以运行控制位以运行控制位tr启动定时器启动定时器 gate = l 以外中断请求信号或启动定时器以外中断请求信号或启动定时器 c/t定时方式或计数方式选择位定时方式或计数方式选择位 c/t = 0 定时工作方式定时工作方式 c/t = 1 计数工作方式计数工作方式 d7d6d5d4d3d2d1d0gatec/tm1m0gatec/tm1m0定时器定时器t1定时器定时器t07m1 m0方式方式功能功能0 0013位定时器位定时器/计数器,由计数器,由tl中低中低5位和位和th中中8位组成。位组成。0 1116位定时器位定时器/计数器
7、计数器1 028位自动重装定时器位自动重装定时器/计数器,计数器,tl为计数器,为计数器,th为常数寄为常数寄存器存器1 13定时器定时器0分为分为2个个8位定时器位定时器/计数器,定时器计数器,定时器1无此方式无此方式tmod的位地址是的位地址是89h,不能位寻址,只能用字节传送指,不能位寻址,只能用字节传送指令设置定时器的工作方式。令设置定时器的工作方式。复位时,复位时,tmod所有位均清零。所有位均清零。8 5.4.1 工作方式工作方式0 1.电路逻辑结构电路逻辑结构c/t=0:定时器工作方式:定时器工作方式:c/t=1:计数器工作方式:计数器工作方式:下降沿有效。下降沿有效。gate=
8、0:或门输出为或门输出为1,与与intx无关;无关;trx1,接通计数器,否则断开停止计数。接通计数器,否则断开停止计数。gate=1:trx1,或门、与门输出仅受或门、与门输出仅受intx控制。控制。5.4 定时器定时器/计数器的工作方式计数器的工作方式92.定时和计数应用定时和计数应用在方式在方式0下,当为计数工作方式时,计数值的范围是:下,当为计数工作方式时,计数值的范围是: 18192(213)当为定时工作方式时,定时时间的计算公式为当为定时工作方式时,定时时间的计算公式为: ( 213 计数初值)计数初值) 晶振周期晶振周期12 或(或( 213 计数初值)计数初值) 机器周期机器周
9、期其时间单位与晶振周期或机器周期相同(其时间单位与晶振周期或机器周期相同(s)。)。如晶振频率为如晶振频率为6 mhz,则最小定时时间为,则最小定时时间为213 (213 1) 2us = 2(s)最大定时时间为最大定时时间为( 213 0 )2 us= 16 384(s) 10 例例5.1设单片机晶振频率为设单片机晶振频率为6mhz,使用定时器,使用定时器1以方式以方式0产生周期为产生周期为500s的等宽正方波连续的等宽正方波连续脉冲,并由脉冲,并由p1.0输出,以查询方式完成。输出,以查询方式完成。 1计算计数初值计算计数初值 (213 x )2 = 250x=8067=111111000
10、0011b十六进制表示,高十六进制表示,高8位为:位为:0fch,低,低5位为位为03h。其中高其中高8位放入位放入th1,即,即th1 = 0fch;低;低5位位放入放入tl1,即,即tl1= 03h 112.tmod寄存器初始化寄存器初始化为把为把t1设定为方式设定为方式0,则,则m1m0 = 00;为实现定时功能,应使为实现定时功能,应使c/t= 0;为实现为实现t1的运行控制,则的运行控制,则gate = 0。t0不用,有关位设定为不用,有关位设定为0。因此因此tmod寄存器应初始化为寄存器应初始化为00h。3.由由tcon中的中的tr1位控制定时的启动和停止位控制定时的启动和停止tr
11、1 = 1启动启动tr1= 0停止。停止。 12例例5.1 org 0030h ;查询方式查询方式 p112main: movtmod,#00hmovth1,#0fchmovtl1,#03hmovie,#00hsetbtr1loop: jbctf1,loop1ajmplooploop1:movth1,#0fchmovtl1,#03hcplp1.0ajmp loop end135.4.2 工作方式工作方式1 p113 m1=0 m0=1m1=0 m0=1 与方式与方式0 0一样,唯一差别是一样,唯一差别是1616位定时位定时/ /计数器,由计数器,由thx8thx8位和位和tlx8tlx8位组成
12、位组成1616位加位加1 1计数器计数。计数器计数。 142.定时和计数定时和计数当为计数工作方式时,计数值的范围是当为计数工作方式时,计数值的范围是 165536(216)当为定时工作方式时,定时时间的计算公式为当为定时工作方式时,定时时间的计算公式为 ( 216 计数初值)计数初值) 晶振周期晶振周期12 或(或( 216 计数初值)计数初值) 机器周期机器周期其时间单位与晶振周期或机器周期相同(其时间单位与晶振周期或机器周期相同(s)。)。 15 以中断方式完成以中断方式完成例例6.1 。单片机晶振频率为。单片机晶振频率为6mhz,使用定时器,使用定时器1以工作方式以工作方式1产生周期为
13、产生周期为500s的等宽正方波连续脉冲,并由的等宽正方波连续脉冲,并由p1.0输出。输出。1计算计数初值计算计数初值 th1 = 0ffh tl1 = 83h2tmod寄存器初始化寄存器初始化 tmod = 10h3程序设计程序设计16org 0000hljmp mainorg 001bhljmp tointmian:movtmod,#10hmovth1, #0ffhmovtl1, #83hsetbeasetbet1setbtr1here:sjmpheretoint:movth1, #0ffhmovtl1, #83hcplp1.0reti17例例5.2:利用定时器利用定时器t1方式方式1进行定
14、时,使进行定时,使p1.1端每隔端每隔1s取反一次,设取反一次,设晶振频率为晶振频率为12mhz。解:方式解:方式1下最大定时时间:下最大定时时间:tmax2161us65536us65.536ms当定时时间大于当定时时间大于tmax时,可设置软件计数器。时,可设置软件计数器。设设t1定时时间为定时时间为50ms,则计满,则计满20次就可。次就可。( 216x)1us50000usx15536=3cb0h所以所以th1=3ch,tl1=b0h程序如下:程序如下:18start:mova,#00;a赋计数初值赋计数初值0movtmod,#10h;t1为方式为方式1movth1,#3chmovtl
15、1,#0b0hsetbtr1;启动启动t1loop:jbctf1,nextsjmploopnext:movth1,#3chmovtl1,#0b0hincacjnea,#20,loopcplp1.1mova,#00sjmploop195.4.3 定时工作方式定时工作方式2 p113m1=1 m0=0m1=1 m0=0 自动装载自动装载初值初值8 8位定时位定时/ /计数器。计数器。tlxtlx为为8 8位加位加1 1计数器,计数器,thxthx为为8 8位初值暂存器。位初值暂存器。 用于需要重复定时和计数的场合,最大计数值:用于需要重复定时和计数的场合,最大计数值:256 (2256 (28 8
16、) ) 最大定时时间最大定时时间(12mhz t=1(12mhz t=1 s)s): 256256 s s 定时时间定时时间= =( 2 28 8 -tx -tx初值)初值)x x 振荡周期振荡周期 x 12x 1220 例例5.3 使用定时器使用定时器0以工作方式以工作方式2产生产生100s定时,在定时,在p1.0输出周期为输出周期为200s的连续正方波脉冲。已知晶的连续正方波脉冲。已知晶振频率振频率fosc = 6mhz。 1计算计数初值计算计数初值 6mhz晶振下,一个机器周期为晶振下,一个机器周期为2us,以,以th0作重装作重装载的预置寄存器,载的预置寄存器,tl0作作8位计数器,假
17、设计数初值位计数器,假设计数初值为为x,则,则 (256x )2= 100us 求解得求解得x = 206d = 11001110b = 0ceh 把把0ceh分别装入分别装入th0和和tl0中:中:th0 = 0ceh ,tl0 = 0ceh 21例例5.3 (查询方式查询方式) org 0000h ljmp main org 0030h main: movie,#00hmovtmod,#02hmovth0,#0cehmovtl0,#0cehsetbtr0loop: jbctf0,loop1ajmplooploop1:cplp1.0ajmp loop end22(中断方式)(中断方式) ;等
18、待中断;等待中断$sjmphere:;定时开始;定时开始tr0setbloop:;定时器;定时器0允许中断允许中断et0setb;开中断;开中断easetb;设置计数初值;设置计数初值# 0cehtl0 ,mov;保存计数初值;保存计数初值# 0cehth0 ,mov;设;设t0为工作方式为工作方式2# 02htmod ,movmain:org0000hljmpmainorg000bhljmpt1int;中断返回;中断返回reti;输出方波;输出方波p1.0cplt1int:23 例例5.4:用定时器用定时器1以工作方式以工作方式2实现计数,每计实现计数,每计100次进行累加器加次进行累加器加
19、1操作。操作。 1.计算计数初值计算计数初值256-100=156d9ch则则th1=tl1=9ch 2.tmod初始化初始化m1m0=10,c/t=1,gate=0因此因此tmod=60h24例例5.4 org0000h p115ljmpmain org 0030h ;查询方式查询方式main: movie,#00hmovtmod,#60hmovth1,#9chmovtl1,#9chsetbtr1del:jbctf1,loopajmpdelloop: incaajmp del end25例例: (应用两个定时器)(应用两个定时器)设重复周期大于设重复周期大于1ms的低频脉冲信号从的低频脉冲信
20、号从p3.5引脚(引脚(t1)输入。要)输入。要求求p3.5每发生每发生1次负跳变时,次负跳变时,p1.0输出输出1个个500s同步负脉冲,同同步负脉冲,同时时p1.1输出输出1个个1ms的同步正脉冲,其波形图如下,设的同步正脉冲,其波形图如下,设fosc6mhz。p3.5p1.0p1.11ms500s1ms26计算计数初值计算计数初值:定时器:定时器t0定时定时500us,使用方式,使用方式2,t1用于用于计数计数1个脉冲(每一次负跳变发生一次变化,个脉冲(每一次负跳变发生一次变化,考虑如何检测考虑如何检测负跳变?负跳变?)同时使用两个定时计数器同时使用两个定时计数器:t0: (28-x)2
21、us500us x=6d=06h th006h,tl006ht1: x=28-1 x=255d=0ffh th1=0ffh, tl1=0ffht0用于定时用于定时ct0 ,方式,方式2 m1 m010 ,gate=0 t1用于计数用于计数ct1 ,方式,方式2 m1 m010 ,gate=0 tmod寄存器初始化:寄存器初始化: tmod62hp3.5p1.0p1.11ms500s1ms27org 0030hstart1: mov tmod,#62hmov th0,#06h ;t0,定时,定时500usmov tl0,#06hmov th1,#0ffh; t1, 计数一个脉计数一个脉冲冲mov
22、 tl1,#0ffhsetb p1.0 clr p1.1 setb tr1 ; 启动启动t 1lp1:jbc tf1,nex1 ;检测外部跳变信号检测外部跳变信号sjmp lp1nex1: clr p1.0setbp1.1 setb tr0 ; 启动启动t 0lp2:jbc tf0,nex2;定时;定时500ussjmp lp2nex2:setb p1.0lp3:jbc tf0,nex3sjmp lp3nex3:clr p1.1 ;定定2次次500us共共1msclr tr0 ;t0停止工作停止工作ajmp lp1p3.5p1.0p1.11ms500s1ms285.4.4 定时工作方式定时工作
23、方式3 p115 只适用于定时器t0,被分成两个独立的8位计数器tl0和th0. 定时器t1没有方式3状态,若设置为方式3,则停止工作。29振荡器振荡器1212tl1tl1(8/5(8/5位位) )t1t1(p3.5)p3.5)端端c/c/ t = 0t = 0c/c/ t = 1t = 1th1th1(8(8位位) )串行口串行口控制控制振荡器振荡器1212tl1tl1(8(8位位) )串行口串行口t1t1(p3.5)p3.5)端端c/c/ t = 0t = 0c/c/ t = 1t = 1th1th1(8(8位位) )重新装入重新装入(a)t1方式方式1或或0(b)t1方式方式2t0方式方
24、式3时时t1的工作方式的工作方式305.5 外部中断源的扩展外部中断源的扩展 5.5.1 通过通过oc门线或实现门线或实现8051int0int1p1.3p1.2p1.1p1.0xi0xi1xi2xi3xi4r5.1kvcc利用一个外部中断输入线利用一个外部中断输入线int0(或或int1),采用集电极开路的非门,采用集电极开路的非门构成或非电路。构成或非电路。查询查询p1.0p1.3的逻辑电平来判断哪个中断源引起中断。的逻辑电平来判断哪个中断源引起中断。31中断中断int1服务程序段如下:服务程序段如下:org00013h ;中断矢量地址;中断矢量地址ljmpintrpt;转到入口地址转到入
25、口地址intrpt:push psw;保护现场保护现场。pushaccjbp1.0,serv1jbp1.1,serv2jbp1.2,serv3jbp1.3,serv4exit:popaccpoppswretiserv1:.ajmpexit32 利用利用t0/t1的外部事件计数输入端作为边沿触的外部事件计数输入端作为边沿触发器的外部中断输入端;发器的外部中断输入端; 将将t0/t1设置成计数方式,计数器初值设为满设置成计数方式,计数器初值设为满量程值,即全量程值,即全1状态;状态; t0/t1端出现负跳变脉冲时,计数器加端出现负跳变脉冲时,计数器加1就溢就溢出产生中断;出产生中断; tf0/tf
26、1作为外部中断请求标志。作为外部中断请求标志。5.5.2 通过定时器通过定时器/计数器实现计数器实现33 例:定时器例:定时器t1设置为方式设置为方式2外部计数方式,外部计数方式,允许允许t1中断,且中断,且cpu开放中断。开放中断。movtmod,#60hmovtl1,#0ffhmovth1,#0ffhsetbeasetbet1setbtr15.5.2 通过定时器通过定时器/计数器实现计数器实现345.6 定时器与中断综合应用定时器与中断综合应用例例:利用定时器利用定时器0控制产生周期为控制产生周期为2ms和和100ms的方波信号,分别的方波信号,分别由由p1.0和和p1.1引脚输出,引脚输
27、出,采用中断方式采用中断方式。系统时钟为。系统时钟为12mhz。分析:方波为分析:方波为2ms,定时时间为,定时时间为1ms。 机器周期为机器周期为1s,采用方式,采用方式0,则计数初值为,则计数初值为 x=213-1000=7192=1110000011000b th0=e0h,tl0=18h 方波为方波为100ms,定时时间为,定时时间为50ms,可采用,可采用50次次1ms定时定时35org 0000hljmp beginorg 000bhljmp tointorg 2000hbegin:mov tmod,#00h mov tl0,#18h mov th0,#0e0h mov r2,#5
28、0 setb ea setb et0 setb pt0 setb tr0here:sjmp heretoint:mov tl0,#18h mov th0,#0e0h cpl p1.0 djnz r2,return cpl p1.1 mov r2,#50return:reti36查询方式查询方式中断方式中断方式loop1:jbctf0,loop2sjmploop1here:sjmp hereorg 000bhljmp toint setb ea setb et0 setb pt0 setb tr0setb tr0 toint:使用中断方式时:使用中断方式时:定时定时器溢出中断请求标志位器溢出中断
29、请求标志位tf0,tf1,由硬件自动清由硬件自动清0。使用查询方式时:使用查询方式时:定时器溢定时器溢出中断请求标志位出中断请求标志位tf0,tf1,由用户软家清由用户软家清0。37例例 :设单片机振荡频率为设单片机振荡频率为6mhz,要求每隔,要求每隔100ms,从外部,从外部rom以以data开始的数据区传送一个字节数据到开始的数据区传送一个字节数据到p1口输出,口输出,共传送共传送100个数据。要求个数据。要求(1)定时采用定时器)定时采用定时器t0以方式以方式2实实现(现(2)数据输出在中断服务程序中完成。)数据输出在中断服务程序中完成。解:定时器解:定时器t0,方式方式2,最大定时时
30、间最大定时时间512us0.512ms因此,设定时时间为因此,设定时时间为0.5ms500us,采用一个软件计数器计,采用一个软件计数器计数数200次实现达到次实现达到100ms。(256x)2=500x6=06h。程序如下:程序如下:38org0000hajmpstartorg000bhajmptointstart: movtmod,#02hmovtl0,#06hmovth0,#06hsetbeasetbet0setbpt0setbtr0movdptr,#datamovr6,#100dloop:movr7,#200dmova,r7here:jnzheredjnzr6,loopclrtr0toint: djnzr7,lp1clramovca,a+dptrmovp1,aincdptrlp1:mova,r7reti39单片机专门固化的定时器单片机专门固化
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年产房护理试题及答案
- 安全驾驶与驾驶技能培训课件
- 急救竞赛理论试题及答案
- 2025年期末解剖试题及答案
- 11单元测试题及答案
- 海外华人心系祖国课件
- 物理竞赛试题及答案大学
- 呼伦贝尔农垦集团笔试试题及完整答案详解一套
- 安全风险识别培训班总结课件
- 2025年教师招聘之《小学教师招聘》题库及答案详解(有一套)
- 医疗机构药品管理法
- 有限空间第三方承包安全协议书
- 地毯更换简易施工合同协议书
- 实验小学二年级体育集体备课教案
- 西方文化概论(第二版)课件全套 曹顺庆 第0-6章 绪论 西方文化的渊源与流变、西方文学 -西方社会生活与习俗
- 百年郎酒试题专项测试题及答案
- 托管中心学生托管合同协议书
- 高中生物近5年生物高考真题分类和解析(神经调节)
- 押金管理制度
- 人教版(2024) 七年级上册英语培优补差教学工作计划
- 职业素养提升第2版(大学生职业素养指导课程)全套教学课件
评论
0/150
提交评论