
第五章2单片机的定时器计数器.ppt
32页第五章第五章2 单片机的定时器计数器单片机的定时器计数器• 第一节第一节 定时定时/计数器的结构和功能计数器的结构和功能• 第二节第二节 定时器定时器/计数器的工作方式计数器的工作方式• 第三节第三节 定时器定时器/计数器应用计数器应用第一节第一节 定时器定时器/计数器的结构和功能计数器的结构和功能一、结构和功能一、结构和功能二、方式寄存器二、方式寄存器TMOD和控制寄存器和控制寄存器TCON一、结构和功能一、结构和功能 8051单片机内有两个可编程单片机内有两个可编程16位定时器位定时器/计数器,常称为定时器计数器,常称为定时器0和定时和定时器器1,简称为,简称为T0和和T1,每个定时计数器都由两个,每个定时计数器都由两个8位专用寄存器组成,位专用寄存器组成,T0由由TH0,TL0组成,组成,T1由由TH1,TL1组成,同时还有组成,同时还有TCON,TMOD两个专用寄存器两个专用寄存器对其进行控制常用于定时控制、延时、外部计数和检测等对其进行控制常用于定时控制、延时、外部计数和检测等1.结构:结构:外部控制门外部控制门2.功能:功能:a.定时:定时: 对机器周期进行计数,即计数脉冲来自单片机的内部。
即每对机器周期进行计数,即计数脉冲来自单片机的内部即每个机器周期产生一个计数脉冲使得计数器加个机器周期产生一个计数脉冲使得计数器加1,直至计满溢出直至计满溢出 一个机器周期=一个机器周期=12*振荡周期振荡周期 12MHZ晶体,计数周期晶体,计数周期(机器周期机器周期)==1us即每1us计数器加计数器加l 从开始计数到溢出这段时间就是从开始计数到溢出这段时间就是“定时定时”时间 因此,若机器周期一定,计数初值越大,则定时越短因此,若机器周期一定,计数初值越大,则定时越短b.计数:计数: 对外来脉冲进行计数对外来脉冲进行计数T0(P3.4)和和T1(P3.5)两个引脚,作为计数输入端两个引脚,作为计数输入端外部输入的脉冲在出现从外部输入的脉冲在出现从1到到0的负跳变时有效,计数器的负跳变时有效,计数器进行加进行加1计数方式下,单片机在每个机器周期的计数方式下,单片机在每个机器周期的S5P2拍节时对外拍节时对外部计数脉冲进行采样如果前一个机器周期采样为高电平,后部计数脉冲进行采样如果前一个机器周期采样为高电平,后一个机器周期采样为低电平,即为一个有效的计数脉冲。
在下一个机器周期采样为低电平,即为一个有效的计数脉冲在下一机器周期的一机器周期的S3Pl进行计数进行计数即采样计数脉冲需要即采样计数脉冲需要2个机器周期,即个机器周期,即24个振荡周期个振荡周期 因此,计数脉冲的频率最高为振荡脉冲频率的因此,计数脉冲的频率最高为振荡脉冲频率的 1//24 TCON8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT01.控制寄存器控制寄存器TCONTF1((TCON.7, 8FH位)位)----定时器定时器T1中断请求溢出标志位中断请求溢出标志位TF0((TCON.5, 8DH位)位)----定时器定时器T0中断请求溢出标志位中断请求溢出标志位 TR1((TCON.6, 8EH位)位)----T1运行控制位运行控制位 0:关闭:关闭T1;;1::启动启动T1运行只由软件置位或清零只由软件置位或清零TR0((TCON.4, 8CH位)位)----T0运行控制位运行控制位 0:关闭:关闭T0;;1::启动启动T0运行只由软件置位或清零只由软件置位或清零8051设有定时设有定时/计数器应用相关的控制器,即两个计数器应用相关的控制器,即两个8位专用寄存器位专用寄存器TMOD和和TCON。
定定/计工作前,必须经过由计工作前,必须经过由CPU将一些命令写入定将一些命令写入定/计的初始化过程计的初始化过程二、方式寄存器二、方式寄存器TMOD和控制寄存器和控制寄存器TCON2.方式寄存器方式寄存器TMOD (不能进行位寻址,没有位地址)(不能进行位寻址,没有位地址)GATED7D6D5D4D3D2D1D0C/TM1M0C/TM1M0GATETMOD M1 M0工作方式工作方式功功 能能 说说 明明0 0方式方式013位计数器位计数器0 1方式方式116位计数器位计数器1 0方式方式2自动再装入自动再装入8位计数器位计数器1 1方式方式3定时器定时器0:分成两个:分成两个8位计数器位计数器定时器定时器1:停止计数:停止计数C/T----定时器定时器/计数器方式选计数器方式选择位 0:定时器;:定时器;1:计数器GATE----外部门控位外部门控位 0:不用外部门,只将:不用外部门,只将TR0/TR1置置1来启动定时器;来启动定时器; 1:使用外部门,外部请求:使用外部门,外部请求信号信号INT0/INT1((高电平)和高电平)和TR0/TR1 ((置置1)共同来启动定)共同来启动定时器。
时器定时计数器定时计数器1定时计数器定时计数器01、、 方式方式0 (T1,T0)当当M1M0两两位位为为00时时,,定定时时/计计数数器器被被选选为为工工作作方方式式0,,13位位计计数数器器,,其其逻逻辑辑结结构如图所示构如图所示控制控制振荡器振荡器÷1212TL0TL0低低5 5位位TF0TF0中断中断T0T0 端端C/C/ T = 0T = 0C/C/ T = 1T = 1+ +INT0INT0 端端GATEGATETR0TR0TH0TH0 高高8 8位位第二节第二节 定时器定时器/计数器的工作方式计数器的工作方式在方式在方式0下,计数工作方式时,计数值的范围是:下,计数工作方式时,计数值的范围是: 1~~8192(213 )定时工作方式时,定时时间的计算公式为:定时工作方式时,定时时间的计算公式为: (213一计数初值一计数初值)×晶振周期晶振周期×12 或或(213一计数初值一计数初值)×机器周期机器周期若晶振频率为若晶振频率为6MHz,,1个机器周期为个机器周期为1/6 x 10-6 x12=2μs则最小定时时间为:则最小定时时间为: 最大定时时间为:最大定时时间为:[213 –0] x2μs=16384μs =16.384ms[213 –(213 -1)]x2μs=2μs2、、 方式方式1 (T1,T0)当当M1M0两两位位为为01时时,,定定时时/计计数数器器被被选选为为工工作作方方式式1,,16位位计计数数器器,,其其逻逻辑辑结结构构如图如图 所示。
所示控制控制振荡器振荡器÷1212TL0TL0(8(8位位) )TF0TF0中断中断T0T0 端端C/C/ T = 0T = 0C/C/ T = 1T = 1+ +INT0INT0 端端GATEGATETR0TR0TH0TH0(8(8位位) )在方式在方式1下,计数工作方式时,计数值的范围是:下,计数工作方式时,计数值的范围是: 1~~65536(216 )定时工作方式时,定时时间的计算公式为:定时工作方式时,定时时间的计算公式为: (216一计数初值一计数初值)×晶振周期晶振周期×12 或或(216一计数初值一计数初值)×机器周期机器周期若晶振频率为若晶振频率为6MHz ,,1个机器周期为个机器周期为1/6 x 10-6 x12=2μs则最小定时时间为:则最小定时时间为: 最大定时时间为:最大定时时间为:[216 –(216 -1)] x2μs=2μs[216 –0] x2μs=131072μs =131.072ms控制控制振荡器振荡器÷1212TL0TL0(8(8位位) )TF0TF0中断中断T0T0 端端C/C/ T = 0T = 0C/C/ T = 1T = 1+ +INT0INT0 端端GATEGATETR0TR0TH0TH0(8(8位位) )重新装重新装入入3、、 方式方式2 (T1,T0)当当M1M0两两位位为为10时时,,定定时时/计计数数器器被被选选为为工工作作方方式式2,,自自动动重重加加载载8位位计计数数器器,,其逻辑结构如图所示。
其逻辑结构如图所示方式方式0和方式和方式1有个共同的特点,就是计数溢出后计数器全清有个共同的特点,就是计数溢出后计数器全清0,因此,循环定时时,因此,循环定时时就需要反复设定计数器初值,比较麻烦,而方式就需要反复设定计数器初值,比较麻烦,而方式2具有自动重加载初值的功能,免去具有自动重加载初值的功能,免去很多反复设置初值的工作很多反复设置初值的工作在方式在方式2下,计数工作方式时,计数值的范围是:下,计数工作方式时,计数值的范围是: 1~~256(28 )定时工作方式时,定时时间的计算公式为:定时工作方式时,定时时间的计算公式为: (28一计数初值一计数初值)×晶振周期晶振周期×12 或或(28一计数初值一计数初值)×机器周期机器周期若晶振频率为若晶振频率为6MHz,, 1个机器周期为个机器周期为1/6 x 10-6 x12=2μs则最小定时时间为:则最小定时时间为: 最大定时时间为:最大定时时间为:[28–(28 -1)] x 2μs=2μs[28 –0] x 2μs=512μs控制控制振荡器振荡器÷1212TL0TL0(8(8位位) )TF0TF0中断中断T T0 0 端端C/C/ T = 0T = 0C/C/ T = 1T = 1+ +INT0INT0 端端GATEGATETR0TR0TH0TH0(8(8位位) )1/1/12 12 f foscosc1/1/12 12 f foscoscTF1TF1中断中断1/1/12 12 f foscoscTR1TR14、、 方式方式3((T0))当当M1M0两两位位为为11时时,,定定时时/计计数数器器被被选选为为工工作作方方式式3,,只只用用于于定定时时器器0,,T0被被分成两个独立的分成两个独立的8位计数器,其逻辑结构如图所示。
位计数器,其逻辑结构如图所示定时器定时器T0T0方式方式3 3结构结构控制控制振荡器振荡器÷1212TL1TL1(8(8位位) )串行口串行口T1T1((P3.5)P3.5)端端C/C/ T = 0T = 0C/C/ T = 1T = 1TH1TH1(8(8位位) )重新装入重新装入振荡器振荡器÷1212TL1TL1(8/5(8/5位位) )T1T1((P3.5)P3.5)端端C/C/ T = 0T = 0C/C/ T = 1T = 1TH1TH1(8(8位位) )串行口串行口定时器定时器T0 用作用作方式方式3时,,T1仍可用于方式仍可用于方式0~~2结构结构这时,仅用这时,仅用C/T来切换定时或计数来切换定时或计数T1T1方式方式0 0或或1 1T1T1方式方式2 2在方式在方式0下,计数工作方式时,计数值的范围是:下,计数工作方式时,计数值的范围是: 1~~8192(213 ) 213--计数初值计数初值=计数的脉冲数=计数的脉冲数定时工作方式时,定时时间的计算公式为:定时工作方式时,定时时间的计算公式为: (213一一计数初值计数初值)×晶振周期晶振周期×12=定时时间=定时时间 或或(213一一计数初值计数初值)×机器周期机器周期=定时时间=定时时间若晶振频率为若晶振频率为6MHz,,1个机器周期为个机器周期为1/6 x 10-6 x12=2μs则最小定时时间为:则最小定时时间为: 最大定时时间为:最大定时时间为:[213 –(213 -1)]x2μs=2μs[213 –0] x2μs=16384μs =16.384ms第三节第三节 定时定时/计数器应用计数器应用我们编程时,通常是求计数初值我们编程时,通常是求计数初值(1)计算计数初值计算计数初值 ::例例1::设单片机晶振频率设单片机晶振频率Fosc==6MHz,,使用定时器使用定时器1以方式以方式0产生周期为产生周期为200μs的等宽正方波脉冲,并由的等宽正方波脉冲,并由P1.0输出。
以查询方式完成以查询方式完成 欲产生欲产生200μs的等宽正方波脉冲,只需在的等宽正方波脉冲,只需在P1.0端以端以100μs为周期交替输出高低为周期交替输出高低电平即可实现,为此定时时间应为电平即可实现,为此定时时间应为100μs使用使用6MHz晶振,则一个机器周期晶振,则一个机器周期为为2μs方式方式0为为13位计数结构位计数结构设待求的计数初值为设待求的计数初值为x,,则:则: (213—x)×2μs==100μs,求解得:,求解得: x==8142(D)=1FCEH= 1111111001110B = 1111111001110B 低低5位和高位和高8位分位分别转换为十六进制数,高别转换为十六进制数,高8位为位为FEH,,低低5位为位为0EH其中高其中高8位放入位放入THl,即,即THl==FEH;;低低5位放入位放入TLl,即,即TL1==0EH2) TMOD寄存器初始寄存器初始化化为把定时器/计数器为把定时器/计数器1设定为方式设定为方式0,则,则MlM0==00H;;为实现定时功能,应使为实现定时功能,应使C//T==0;;为实现定时器/计数器为实现定时器/计数器1的运行控制,则的运行控制,则GATE==0。
定时器/计数器定时器/计数器0不用,不用,有关位设定为有关位设定为0因此TMOD寄存器应初始化为寄存器应初始化为00H3)由定时器控制寄存器由定时器控制寄存器TCON中的中的TR1位控制定时的启动和停止:位控制定时的启动和停止:(4)TR1==1启动,启动,TR1==0停止停止(4)程序设计程序设计MOVTMOD,#00HMOVTH1,#0FEHMOVTL1,#0EHSETBTR1LOOP1: JBCTF1,LOOP2SJMPLOOP1LOOP2: MOVTL1,#0EHMOVTH1,#0FEHCLRTF1CPLP1.0SJMPLOOP1 在方式在方式1下,计数工作方式时,计数值的范围是:下,计数工作方式时,计数值的范围是: 1~~65536(216 ) 216--计数初值计数初值=计数的脉冲数=计数的脉冲数定时工作方式时,定时时间的计算公式为:定时工作方式时,定时时间的计算公式为: (216一一计数初值计数初值)×晶振周期晶振周期×12 =定时时间=定时时间 或或(216一一计数初值计数初值)×机器周期机器周期=定时时间=定时时间若晶振频率为若晶振频率为6MHz ,,1个机器周期为个机器周期为1/6 x 10-6 x12=2μs则最小定时时间为:则最小定时时间为: 最大定时时间为:最大定时时间为:[216 –(216 -1)] x2μs=2μs[216 –0] x2μs=131072μs =131.072ms例例2::设单片机晶振频率设单片机晶振频率Fosc==12MHz,,使用定时器使用定时器0以方式以方式1产生周期为产生周期为2S的等宽正方波脉冲,并由的等宽正方波脉冲,并由P1.0输出。
输出以查询方式完成以查询方式完成 (1)计算计数初值计算计数初值 设待求的计数初值为设待求的计数初值为x,,则:则: (216—x)×1μs ==50000μs ,,求解得:求解得: x==15536D==3CB0H即TH0==3CH;;TL0==B0H2) TMOD寄存器初始化寄存器初始化 TMOD==00000001B(3)程序设计程序设计ATART:MOVR2,#20MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBTR0LOOP1: JBCTF0,LOOP2SJMPLOOP1LOOP2:MOVTL0,#0B0HMOVTH0,#3CHDJNZR2,LOOP1CPLP1.0MOVR2,#20SJMPLOOP1在方式在方式2下,计数工作方式时,计数值的范围是:下,计数工作方式时,计数值的范围是: 1~~256(28 ) 28--计数初值计数初值=计数的脉冲数=计数的脉冲数定时工作方式时,定时时间的计算公式为:定时工作方式时,定时时间的计算公式为: (28一一计数初值计数初值)×晶振周期晶振周期×12 =定时时间=定时时间 或或(28一一计数初值计数初值)×机器周期机器周期=定时时间=定时时间若晶振频率为若晶振频率为6MHz,, 1个机器周期为个机器周期为1/6 x 10-6 x12=2μs则最小定时时间为:则最小定时时间为: 最大定时时间为:最大定时时间为:[28–(28 -1)] x 2μs=2μs[28 –0] x 2μs=512μs例例3::使用定时器使用定时器0以工作方式以工作方式2产生产生100μs定时,在定时,在P1.0输出周期为输出周期为200μs的的连续方波。
已知晶振频率连续方波已知晶振频率fosc==6MHz1) 计算计数初值计算计数初值 6MHz晶振下,一个机器周期为晶振下,一个机器周期为2μs,以,以TH0作作重装载的预置寄存器,重装载的预置寄存器,TL0作作8位计数器,假位计数器,假设计数初值为设计数初值为x则:则: (28—x)×2μs==100μs求解得:求解得: X==206D==11001110B==CEH把把CEH分别装入分别装入TH0和和TL0中:中: TH0==CEH,,TL0==CEHTMOD寄存器初始化寄存器初始化((2)定时器/计数器)定时器/计数器0为工作方式为工作方式2,,MlM0==10;;为实现定时功能为实现定时功能 C/T=0; 依题意依题意GATE==0;;定时器/计数器定时器/计数器1不用,有关位设定为不用,有关位设定为0综上情况综上情况TMOD寄存器的状态应为寄存器的状态应为02H3))程序设计程序设计(查询方式查询方式) ::MOVTMOD,#02HMOVTH0,#0CEHMOVTL0,#0CEHSETBTR0LOOP:JBCTF0,LOOP1SJMPLOOPLOOP1:CPLP1.0SJMPLOOP例例4::用定时器用定时器l 以工作方式以工作方式2计数,每计计数,每计100次进行累计器加次进行累计器加1操作操作.(1)计算计数初值计算计数初值. 28—100==156D==9CH TH1==9CH,,TL1==9CHTMOD寄存器初始化:寄存器初始化:MlM0==10,,C//T==1,,GATE=0因此因此 TMOD==60H(2)程序设计序设计程序设计序设计CLRAMOVTMOD,#60HMOVTH1,#9CHMOVTL1,#9CHSETBTR1DEL:JBCTF1,LOOPSJMPDELLOOP:INCASJMPDEL例例5:: (应用两个定时器)(应用两个定时器)设重复周期大于设重复周期大于1ms的低频脉冲信号从的低频脉冲信号从P3.5引脚(引脚(T1)输入。
要求)输入要求P3.5每发每发生生1次负跳变时,次负跳变时,P1.0输出输出1个个500μs同步负脉冲,同时同步负脉冲,同时P1.1输出输出1个个1ms的同的同步正脉冲,其波形图如下,设步正脉冲,其波形图如下,设fosc==6MHzP3.5P1.0P1.11ms500μs1ms计算计数初值:定时器计算计数初值:定时器T0定时定时500us,使用方式,使用方式2,,T1用于计数用于计数1个脉冲(每一个脉冲(每一次负跳变发生一次变化)次负跳变发生一次变化)因此同时使用两个定时计数器,因此同时使用两个定时计数器,T0: ((28-x))×2us==500us x=6D=06H TH0==06H,,TL0==06HT1: X=28-1 X=255D=0FFH TH1=0FFH, TL1=0FFHT0用于定时用于定时C//T==0 ,方式,方式2 M1 M0==10 ,,GATE=0 T1用于计数用于计数C//T==1 ,方式,方式2 M1 M0==10 ,,GATE=0 TMOD寄存器初始化:寄存器初始化: TMOD==62HORG 0030HSTART1: MOV TMOD,#62HMOV TH0,#06H ;;T0,定时,定时500usMOV TL0,#06HMOV TH1,#0FFH; T1, 计数一个脉冲计数一个脉冲MOV TL1,#0FFHSETB P1.0 CLR P1.1 SETB TR1 ; 启动启动T 1LP1:JBC TF1,NEX1 SJMP LP1 NEX1: 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.11ms500μs1ms例例6:利用定时器利用定时器0控制产生周期为控制产生周期为2ms和和100ms的方波信号,分别的方波信号,分别由由P1.0和和P1.1引脚输出,引脚输出,采用中断方式采用中断方式。
系统时钟为系统时钟为12MHz分析:方波为分析:方波为2ms,定时时间为,定时时间为1ms 机器周期为机器周期为1μs,采用方式,采用方式0,则计数初值为,则计数初值为 X=213-1000=7192=1110000011000B TH0=E0H,,TL0=18H 方波为方波为100ms,定时时间为,定时时间为50ms,可采用,可采用50次次1ms定时定时ORG 0000HLJMP BEGINORG 000BHLJMP TOINTORG 2000HBEGIN::MOV TMOD,,#00H MOV TL0,,#18H MOV TH0,,#0E0H MOV R2,,#50 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::RETI查询方式查询方式中断方式中断方式LOOP1:JBCTF0,LOOP2SJMPLOOP1HERE::SJMP HEREORG 000BHLJMP TOINT SETB EA SETB ET0 SETB PT0 SETB TR0SETB TR0 TOINT:使用中断方式时:使用中断方式时:定时定时器溢出中断请求标志位器溢出中断请求标志位TF0,TF1,由硬件自动清由硬件自动清0。
使用查询方式时:使用查询方式时:定时器溢定时器溢出中断请求标志位出中断请求标志位TF0,TF1,由用户软家清由用户软家清0单片机专门固化的定时器单片机专门固化的定时器/计数器的特点:计数器的特点: 总结总结1、、51子系统有子系统有2个个计数器、计数器、52子系统有子系统有3个个计数器计数器2、每个计数器都是一个、每个计数器都是一个加法加法计数器3、每个计数器都可定义为、每个计数器都可定义为8bit、、13bit、、16bit等等4种工种工 作方式,以方便在不同的环境下使用作方式,以方便在不同的环境下使用4、每个计数器都可以、每个计数器都可以置初值置初值,每来一个脉冲,每来一个脉冲+15、每个计数器都可以选择计数源,内部或外部每个计数器都可以选择计数源,内部或外部6、当选择内部振荡源,由于已知频率,所以可以当定、当选择内部振荡源,由于已知频率,所以可以当定 时器,计数频率固定为振荡频率的时器,计数频率固定为振荡频率的12分频分频7、当选择外部脉冲,由于频率未知,可用内部振荡频、当选择外部脉冲,由于频率未知,可用内部振荡频 率去测量,最大计数脉冲为振荡频率的率去测量,最大计数脉冲为振荡频率的24分频分频。
