文档详情

单片机定时器及应用ppt课件

沈***
实名认证
店铺
PPT
895KB
约64页
文档ID:153618238
单片机定时器及应用ppt课件_第1页
1/64

第第6章章 定时器定时器/计数器及其运用计数器及其运用 定时器定时器/计数器及其运用计数器及其运用n定时器定时器/计数器的运用场所计数器的运用场所:n定时或延时控制、对外部事件的检测、定时或延时控制、对外部事件的检测、计数等;计数等;nMCS-51系列系列8031、8051单片机有两个单片机有两个16位定时器位定时器/计数器即计数器即T0和和T1;n8032、8052单片机有单片机有3个个16位定时器位定时器/计计数器即数器即T0、T1和和T2;定时器定时器/计数器及其运用计数器及其运用n所谓计数器就是对外部输入脉冲的计数;所谓计数器就是对外部输入脉冲的计数;n所谓定时器也是对脉冲进展计数完成的,计数的是所谓定时器也是对脉冲进展计数完成的,计数的是MCS-51内部产生的规范脉冲,经过计数脉冲个数实现定时内部产生的规范脉冲,经过计数脉冲个数实现定时n所以,定时器和计数器本质上是一致的,在以后的表达中将定时器所以,定时器和计数器本质上是一致的,在以后的表达中将定时器/计数器笼统称为定时器计数器笼统称为定时器第第6章章 定时器定时器/计数器及其运用计数器及其运用n6.1 定时器的构造及任务原理定时器的构造及任务原理n6.2 定时器的定时器的TMOD和和TCON存放器存放器n6.3 定时器的任务方式定时器的任务方式n6.3.1 方式方式0n6.3.2 方式方式1n6.3.3 方式方式2n6.3.4 方式方式3n6.4 定时器的编程和运用定时器的编程和运用第第6章章 定时器定时器/计数器及其运用计数器及其运用6.1 定时器的构造及任务原理定时器的构造及任务原理6.1 定时器的构造及任务原理定时器的构造及任务原理n组成:两个组成:两个16位的定时器位的定时器T0和和T1,以及他们的任务方式存放器,以及他们的任务方式存放器TMOD和控制存放器和控制存放器TCON等组成。

内部经过总线与等组成内部经过总线与CPU相连n定时器定时器T0和和T1各由两个各由两个8位特殊功能存放器位特殊功能存放器TH0、TL0、TH1、TL1构成n任务方式存放器任务方式存放器TMOD:用于设置定时器的任务方式和任务方式;:用于设置定时器的任务方式和任务方式;n控制存放器控制存放器TCON:用于启动和停顿定时器的计数,并控制定时器:用于启动和停顿定时器的计数,并控制定时器的形状;的形状;n单片机复位时,两个存放器的一切位都被清单片机复位时,两个存放器的一切位都被清08051定时器定时器内部构造框图内部构造框图6.1 定时器的构造及任务原理定时器的构造及任务原理两种任务方式两种任务方式:(1)计数器任务方式计数器任务方式就是对外部事件进展计数计数脉冲来自相应的外部输入引就是对外部事件进展计数计数脉冲来自相应的外部输入引脚脚T0P3.4)或或T1(P3.5)当输入信号发生由当输入信号发生由1至至0的负跳变的负跳变(下降沿下降沿)时,计数器时,计数器TH0,TL0或或TH1,TL1的值增的值增1计数的最高频率普通为振荡频率的计数的最高频率普通为振荡频率的1/24Why?(2)定时器任务方式定时器任务方式也是经过计数实现的。

计数脉冲来自内部时钟脉冲,每个机也是经过计数实现的计数脉冲来自内部时钟脉冲,每个机器周期计数值增器周期计数值增1,每个机器周期,每个机器周期=12个振荡周期,因此计个振荡周期,因此计数频率为振荡频率的数频率为振荡频率的1/12所以定时时间所以定时时间=计数值机器周计数值机器周期4种任务方式种任务方式(方式方式0-方式方式3)n振荡周期:是振荡脉冲的周期,也成为“拍,用P表示就是晶体振荡器的周期,或外部振荡脉冲的周期是MCS-51单片机的最小时序单位P1 P2S1振荡周期振荡周期时钟周期时钟周期机器周期机器周期机器周期机器周期指令周期指令周期XTAL2(OSC)S2S3S4S6S6S1S2S4S6S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2n时钟周期:是振荡源信号经二分频后构成的时钟脉冲信号,用S表示每个时钟周期分成P1、P2两个节拍,又被称为一个形状是MCS-51单片机的最根本的时序单位n机器周期:通常将完成一个根本操作所需的时间称为机器周期,由6个形状12拍组成,所以一个机器周期可以依次表示为S1P1、S2P2S6P1、S5P2通常算术逻辑操作发生在节拍P1期间,而内部存放器到存放器的传送发生在节拍P2期间。

n指令周期:是指CPU执行一条指令所需求的时间是MCS-51单片机的最大的时序单位,由假设干个振荡周期组成一个指令周期通常含有14个机器周期,MCS-51典型的指令周期为一个机器周期振荡周期、时钟周期、机器周期和指令周期振荡周期、时钟周期、机器周期和指令周期6.1 定时器的构造及任务原理定时器的构造及任务原理n在每个机器周期的在每个机器周期的S5P2S5P2期间采样检测引脚输入电平期间采样检测引脚输入电平n假设前一个机器周期采样值为假设前一个机器周期采样值为“1 1,后一个机器周期采样,后一个机器周期采样值为值为“0 0,那么计数器加,那么计数器加1 1n新的计数值在检测到输入引脚电平发生新的计数值在检测到输入引脚电平发生“1 1到到“0 0的负的负跳变下降沿后,于下一个机器周期的跳变下降沿后,于下一个机器周期的S3P1S3P1期间装入计期间装入计数器中n由于由于CPUCPU需求两个机器周期来识别一个需求两个机器周期来识别一个“1 1到到“0 0的跳变的跳变信号,所以最高的计数频率为振荡周期的信号,所以最高的计数频率为振荡周期的1/241/24P1 P2S1振荡周期振荡周期形状周期形状周期机器周期机器周期机器周期机器周期指令周期指令周期XTAL2(OSC)S2S3S4S6S6S1S2S4S6S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P26.1 定时器的构造及任务原理定时器的构造及任务原理n定时定时/计数器对输入信号的要求计数器对输入信号的要求n外部计数脉冲的最高频率为系统振荡器频率的外部计数脉冲的最高频率为系统振荡器频率的1/241/24,例,例如选用如选用12MHz12MHz频率的晶体,那么可输入频率的晶体,那么可输入600KHz600KHz的外部脉冲。

的外部脉冲n输入信号的高、低电平至少要分别坚持一个机器周期输入信号的高、低电平至少要分别坚持一个机器周期n如下图,图中如下图,图中TcyTcy为机器周期为机器周期n可编程定时器的任务方式、启动、停顿、溢出标可编程定时器的任务方式、启动、停顿、溢出标志、计数器等都是可编程的志、计数器等都是可编程的经过设置存放器经过设置存放器TMOD,TCON,TH0,TL0,TH1和和TL1 实现n当设置了定时器的任务方式并启动定时器任务后,当设置了定时器的任务方式并启动定时器任务后,定时器就按被设定好的任务方式独立任务,不再定时器就按被设定好的任务方式独立任务,不再占用占用CPU,只需在计数器计满溢出时才向,只需在计数器计满溢出时才向CPU恳恳求中断,占用求中断,占用CPUn由此可见,定时器是单片机中任务效率高且运用由此可见,定时器是单片机中任务效率高且运用灵敏的部件灵敏的部件6.1 定时器的构造及任务原理定时器的构造及任务原理第第6章章 定时器定时器/计数器及其运用计数器及其运用6.2 定时器的定时器的TMOD和和TCON存放器存放器6.2 定时器的定时器的TMOD和和TCON存放器存放器n8051单片机定时器主要有几个特殊功能存放器组单片机定时器主要有几个特殊功能存放器组成:成:TMOD,TCON,TH0,TL0,TH1,TL1。

nTMOD:设置定时器的任务方式;:设置定时器的任务方式;nTCON:控制定时器的启动和停顿;:控制定时器的启动和停顿;nTH0和和TL0:存放定时器:存放定时器T0的初值或计数结果;的初值或计数结果;TH0存放高存放高8位,位,TL0 存放低存放低8位;位;nTH1和和TL1:存放定时器:存放定时器T1的初值或计数结果;的初值或计数结果;TH1存放高存放高8位,位,TL1 存放低存放低8位;位;6.2.1 任务方式控制存放器任务方式控制存放器TMOD8位分为两组,高位分为两组,高4位控制位控制T1,低,低4位控制位控制T01)GATE 门控位门控位 0:以以TRX(X=0,1)来启动定时器来启动定时器/计数器运转计数器运转1:用外中断引脚用外中断引脚(INT0*或或INT1*)上的高电平和上的高电平和TRX来启来启动定时器动定时器/计数器运转计数器运转2)M1、M0 任务方式选择位任务方式选择位 M1 M0 工工 作作 方方 式式 0 0 方式方式0,13位定时器位定时器/计数器0 1 方式方式1,16位定时器位定时器/计数器1 0 方式方式2,8位常数自动重新装载位常数自动重新装载 1 1 方式方式3,仅适用于,仅适用于T0,T0分成两个分成两个8位计数器,位计数器,T1停顿计数。

停顿计数3)C/T*计数器方式和定时器方式选择位计数器方式和定时器方式选择位0:定时器方式定时器方式1:计数器方式计数器方式4)TMOD无位地址,不能位寻址无位地址,不能位寻址6)复位时,复位时,TMOD一切位均为一切位均为“0低低4位与外部中断有关,后面引见高位与外部中断有关,后面引见高4位的功能如下位的功能如下:(1)TF1、TF0 计数溢出标志位计数溢出标志位 定时器定时器T0或或T1计数溢出时,由硬件自动将此位置计数溢出时,由硬件自动将此位置“1;TFx可以由程序查询,也是定时中断的恳求源;可以由程序查询,也是定时中断的恳求源;(2)TR1、TR0 计数运转控制位计数运转控制位 TRx=1:启动定时器启动定时器/计数器任务计数器任务 TRx=0:停顿定时器停顿定时器/计数器任务计数器任务 6.2.2 控制存放器控制存放器TCON第第6章章 定时器定时器/计数器及其运用计数器及其运用6.3 定时器的任务方式定时器的任务方式nMCS-51的定时器的定时器T0有有4种任务方式:种任务方式:n即:方式即:方式0,方式,方式1,方式,方式2,方式,方式3nMCS-51的定时器的定时器T1有有3种任务方式:种任务方式:n即:方式即:方式0,方式,方式1,方式,方式2。

6.3 定时器的任务方式定时器的任务方式6.2.1 方式方式0 M1、M0设置为设置为00,为,为13位计数器,以位计数器,以T1为例,其框图如下为例,其框图如下:6.3 定时器的任务方式定时器的任务方式方式方式0计数脉冲输入加1计数器6.3 定时器的任务方式定时器的任务方式方式方式0TH1 D12 D11 D10 D9 D8 D7 D6 D6TL1 D4 D3 D2 D1 D0n在这种方式下,在这种方式下,16位存放器位存放器TH1和和TL1只用只用13位,位,由由TH1的的8位和位和TL1的低的低6位组成TL1的高的高3位不定n当当TL1的低的低6位计数溢出时,向位计数溢出时,向TH1进位而TH1计计数溢出时,那么向中断标志位数溢出时,那么向中断标志位TF1进位即硬件将进位即硬件将TF1置置1,并恳求中断并恳求中断n可经过查询可经过查询TF1能否置能否置“1或调查中断能否发生来或调查中断能否发生来断定定时器断定定时器T1的操作完成与否的操作完成与否6.2.3 定时定时/计数器的初始化计数器的初始化初值计算:初值计算:设计数器的最大值为设计数器的最大值为M,那么置入的初值,那么置入的初值X为:为:计数方式:计数方式:X=M-计数值计数值 定时方式:由定时方式:由(M-X)T=定时值定时值,得得X=M-定时值定时值/T T为计数周期,是单片机的机器周期。

为计数周期,是单片机的机器周期方式方式0:M为为213,方式,方式1:M为为216,方式,方式2和和3:M为为28例如:机器周期为例如:机器周期为1s 1s 时,时,假设任务在方式假设任务在方式0 0,那么最大定时值为,那么最大定时值为:213:2131s 1s=8.192ms=8.192ms 假设任务在方式假设任务在方式1,1,那么最大定时值为那么最大定时值为:216 2161s=66.636ms1s=66.636ms6.3 定时器的任务方式定时器的任务方式方式方式0n当当C/T=0时,为定时任务方式,开关接到振荡器时,为定时任务方式,开关接到振荡器的的12分频器输出上,计数器对机器周期脉冲计数分频器输出上,计数器对机器周期脉冲计数其定时时间为:其定时时间为:n(213-初值初值)振荡周期振荡周期12n例如:假设晶振频率为例如:假设晶振频率为12MHz,那么最长的,那么最长的定时时间为定时时间为(213-0)(1/12)12us=8.191msn当当C/T=1时,为计数任务方式,开关与外部引脚时,为计数任务方式,开关与外部引脚T1(P3.5)接通,计数器对来自外部引脚的输入脉接通,计数器对来自外部引脚的输入脉冲计数。

当外部信号发生负跳变时计数器加冲计数当外部信号发生负跳变时计数器加1n6.3 定时器的任务方式定时器的任务方式方式方式0nGATE控制定时器控制定时器Tx(T1或或T0)的条件:的条件:n(1)当当GATE=0时,时,“或门输出恒为或门输出恒为1,“与门的与门的输出信号输出信号K由由TRx决议决议(即此时即此时K=TRx),定时器不受,定时器不受INTx输入电平的影响,由输入电平的影响,由TRx直接控制定时器的启动和直接控制定时器的启动和停顿nTRx=1;计数启动;计数启动;nTRx=0;计数停顿;计数停顿;n(2)当当GATE=1时,时,“与门的输出信号与门的输出信号K由由INTx输输入电平和入电平和TRx位的形状一同决议位的形状一同决议(即此时即此时K=TRxINTx),n当且仅当当且仅当TRx=1且且INTx=1(高电平高电平)时,计数启动;时,计数启动;n否那么,计数停顿否那么,计数停顿n前往前往6.3.2 方式方式1 M1、M0=01,为,为16位的计数器,除位数外,其他与方式位的计数器,除位数外,其他与方式0一样其定时时间为:其定时时间为:(216-初值初值)振荡周期振荡周期12例如:假设晶振频率为例如:假设晶振频率为12MHz,那么最长的定时时间为,那么最长的定时时间为(216-0)(1/12)12us=66.636ms6.3 定时器的任务方式定时器的任务方式方式方式16.3.3 方式方式2 M1、M0=10,为自动恢复初值的,为自动恢复初值的8位计数器,位计数器,等效框图如下等效框图如下:TLx作为作为8位计数器,位计数器,THx作为重作为重置初值的缓冲器。

置初值的缓冲器6.3 定时器的任务方式定时器的任务方式方式方式2THx作为常数缓冲器,当作为常数缓冲器,当TLx计数溢出时,在置计数溢出时,在置“1溢出标志溢出标志TFx的同时,还自动的将的同时,还自动的将THx中的初值送至中的初值送至TLx,使,使TLx从初值开从初值开场重新计数定时器场重新计数定时器/计数器的方式计数器的方式2任务过程如图任务过程如图(x=0,1)n优点:优点:n方式方式0 0和方式和方式1 1用于循环反复定时或用于循环反复定时或计数时,在每次计数器挤满溢出后,计计数时,在每次计数器挤满溢出后,计数器复数器复0 0假设要进展新一轮的计数,假设要进展新一轮的计数,就得重新装入计数初值这样一来不仅就得重新装入计数初值这样一来不仅呵斥编程费事,而且影响定时精度而呵斥编程费事,而且影响定时精度而方式方式2 2具有初值自动装入的功能,防止具有初值自动装入的功能,防止了这个缺陷,可实现准确的定时了这个缺陷,可实现准确的定时n缺陷:缺陷:n只需只需8 8位计数器,定时时间短、计位计数器,定时时间短、计数范围小其定时时间为:数范围小其定时时间为:n(28-(28-初值初值)振荡周期振荡周期1212n假设晶振频率为假设晶振频率为12MHz12MHz,那么最长的定,那么最长的定时时间为时时间为n(28-0)(28-0)(1/12)(1/12)12us=0.266ms12us=0.266ms6.3 定时器的任务方式定时器的任务方式方式方式2方式方式2任务过程图任务过程图(x=0,1)。

6.3.4 方式方式3 只适用于定时器只适用于定时器/计数器计数器T0T1不能任务在方式不能任务在方式3假设将假设将T1置为方式置为方式3,那么相当于,那么相当于TR1=0,停顿计数,停顿计数(此时此时T1可用来作串行口波特率产生器可用来作串行口波特率产生器)1.任务方式任务方式3下的下的T0 T0在方式在方式3时被拆成两个独立的时被拆成两个独立的8位计数器:位计数器:TH0和和TL08位计数器位计数器TL0运用运用T0的形状控制位的形状控制位C/T*、GATE、TR0、INT0,它既可以任务在定时方式,也可以任务在计数方式它既可以任务在定时方式,也可以任务在计数方式8位定时器位定时器TH0被固定为一个被固定为一个8位定时器位定时器(不能作外部计数方式不能作外部计数方式),并运用定时器并运用定时器T1的形状控制位的形状控制位TR1,同时占用定时器,同时占用定时器T1的中的中断恳求源断恳求源TF1此时,定时器此时,定时器TH0的启动或停顿只受的启动或停顿只受TR1控控制TR1=1时,启动时,启动TH0的计数;的计数;TR1=0时,停顿时,停顿TH0的计数的计数6.3 定时器的任务方式定时器的任务方式方式方式36.3 定时器的任务方式定时器的任务方式各引脚与各引脚与T0的逻辑关系如下图的逻辑关系如下图:2.T0任务在方式任务在方式3下下T1的各种任务方式的各种任务方式 留意:当留意:当T0处于方式处于方式3时,时,T1仍可设置为方式仍可设置为方式0、方式、方式1和方式和方式2。

当时由于当时由于TR1、TF1和和T1的中断源都已被定时器的中断源都已被定时器T0(中的中的TH0)占用,占用,所以定时器所以定时器T1 仅有控制位仅有控制位C/T来决议其任务在定时方式或计数来决议其任务在定时方式或计数方式当计数器计满溢出时,不能置位当计数器计满溢出时,不能置位“TF1,而只能将输出送往串口而只能将输出送往串口所以,此时定时器所以,此时定时器T1普通用作串口的波特率发生器,或不需求中普通用作串口的波特率发生器,或不需求中断的场所断的场所1)T1任务在方式任务在方式06.3 定时器的任务方式定时器的任务方式(2)T1任务在方式任务在方式1(3)T1任务在方式任务在方式26.3 定时器的任务方式定时器的任务方式第第6章章 定时器定时器/计数器及其运用计数器及其运用6.4 定时器的编程和运用定时器的编程和运用6.4 定时器的编程和运用定时器的编程和运用n编程阐明编程阐明nMCS-51单片机的定时器是可编程的,但在进展定时或计数之前要对单片机的定时器是可编程的,但在进展定时或计数之前要对程序进展初始化,详细步骤如下:程序进展初始化,详细步骤如下:n1确定任务方式字:对确定任务方式字:对TMOD存放器正确赋值;存放器正确赋值;n2确定定时初值:计算初值,直接将初值写入存放器的确定定时初值:计算初值,直接将初值写入存放器的TH0、TL0或或TH1、TL1;n初值计算:初值计算:设计数器的最大值为设计数器的最大值为M,那么置入的初值,那么置入的初值X为:为:n 计数方式:计数方式:X=M-计数值计数值n 定时方式:由定时方式:由(M-X)T=定时值定时值,得得X=M-定时值定时值/Tn T为计数周期,是单片机的机器周期。

为计数周期,是单片机的机器周期n方式方式0 M为为213,方式,方式1 M为为216,方式,方式2和和3 M为为28n3根据需求,对根据需求,对IE置初值,开放定时器中断;置初值,开放定时器中断;n4启动定时启动定时/计数器,对计数器,对TCON存放器中的存放器中的TR0或或TR1置位,置位置位,置位以后,计数器即按规定的任务方式和初值进展计数或开场定时以后,计数器即按规定的任务方式和初值进展计数或开场定时6.4 定时器的编程和运用定时器的编程和运用例例6-1 要在要在P1.0上输出一个周期为上输出一个周期为2ms的方的方波,假设系统振荡频率采用波,假设系统振荡频率采用12MHz利用利用T0方式方式0产生产生1ms的定时的定时方波的周期用方波的周期用T0来确定,让来确定,让T0每隔每隔1ms计数计数溢出溢出1次,次,CPU对对P1.0取反即要使即要使P1.0P1.0每隔每隔1ms1ms取反取反一次6.4 定时器的编程和运用定时器的编程和运用第一步:第一步:确定任务方式字确定任务方式字 方式方式0(13位位)最长可定时最长可定时 8.192ms;方式方式1(16位位)最长可定时最长可定时 66.636ms;方式方式2(8位位)最长可定时最长可定时 266s。

T0为方式为方式0,M1M0=00 定时任务形状,定时任务形状,C/T=0GATE=0,不受,不受INT0控制,控制,T1不用全部取不用全部取“0值故故TMOD=00H6.4 定时器的编程和运用定时器的编程和运用第二步:第二步:计算计算1ms定时的初值定时的初值X 设初值为设初值为X,那么有,那么有:(213-X)1210-6 1/12=110-3可求得:可求得:X=8192-1000=7192X化为化为16进制,进制,即即X=1C18H=1,1100,000 1,1000B所以,所以,T0的初值为的初值为:TH0=E0H TL0=18HTH0 1 1 1 0 0 0 0 0TL0 1 1 0 0 0第三步:第三步:程序设计程序设计 采用采用T0中断的方式来控制中断的方式来控制P1.0的输出,同时要重的输出,同时要重新装入初值新装入初值6.4 定时器的编程和运用定时器的编程和运用 参考程序参考程序:ORG 0000HLJMPMAINORG 000BHLJMPTIMERORG 0100HMAIN:SETBEASETB ET0MOV TMOD,#00H;设置;设置T0为方式为方式0MOV TL0,#18H;送计数初值;送计数初值 MOV TH0,#0E0H;送计数初值;送计数初值SETB TR0 ;启动;启动T0SJMP$TIMER:MOV TL0,#18H ;T0重置初重置初值值 MOV TH0,#0E0H ;T0重置初值重置初值 CPL P1.0 ;P1.0的形状取反的形状取反RETIEND例例6-2 将将例例6-1中的输出方波周期改为中的输出方波周期改为1秒。

秒分析:分析:周期为周期为1s的方波要求的方波要求600ms的定时1)T0任务方式确实定任务方式确实定因定时时间较长,采用哪一种任务方式?由各种任因定时时间较长,采用哪一种任务方式?由各种任务方式的特性,可计算出务方式的特性,可计算出:方式方式0(13位位)最长可定时最长可定时 8.192ms;方式方式1(16位位)最长可定时最长可定时 66.636ms;方式方式2(8位位)最长可定时最长可定时 266s所以采用定时器定时加软件计数的方法来实现延伸定所以采用定时器定时加软件计数的方法来实现延伸定时选方式选方式1,定时,定时60ms,软件计数,软件计数10次60ms 10=600ms所以,所以,TMOD=01H6.4 定时器的编程和运用定时器的编程和运用以上各方式以上各方式都不满足要求都不满足要求 (2)计算计数初值计算计数初值由于由于:(216-X)1210-6 1/12=6010-3所以所以:X=16636=3CB0H因此因此:TH0=3CH,TL0=B0H (3)10次计数的实现次计数的实现设计一个软件计数器,初始值设为设计一个软件计数器,初始值设为10每隔60ms定时时间到,产生定时中断,那么软件计定时时间到,产生定时中断,那么软件计数器减数器减1。

这样减到这样减到0时就获得了时就获得了600ms的定时6.4 定时器的编程和运用定时器的编程和运用(4)程序设计参考程序程序设计参考程序 MAIN:SETB EASETB ET0MOV TMOD,#01H ;设;设T0任务在方式任务在方式1MOV TL0,#0B0H ;给;给T0设初值设初值MOV TH0,#3CHMOV R7,#10;软件计数器初值;软件计数器初值SETB TR0 ;启动;启动T0SJMP$TIMER:DJNZ R7,EXIT;R7不等于不等于0,那么不对,那么不对P1.0取反取反CPLP1.0MOV R7,#10;重置软件计数器初值;重置软件计数器初值EXIT:MOV TL0,#0B0H;T0中断子程序,中断子程序,重装初值重装初值MOV TH0,#3CH RETIEND n以上的定时程序中,程序都要重置计时器初值,这以上的定时程序中,程序都要重置计时器初值,这样从定时器溢出发出溢出标志,到重装完定时器初样从定时器溢出发出溢出标志,到重装完定时器初值,在开场计数,之间总会有一段时间间隔,使定值,在开场计数,之间总会有一段时间间隔,使定时时间添加了假设干微秒,呵斥定时不够准确。

时时间添加了假设干微秒,呵斥定时不够准确n为了减小这种定时误差,单片机中设置了任务方式为了减小这种定时误差,单片机中设置了任务方式2(自动重装初值自动重装初值),那么可防止上述要素,省去程,那么可防止上述要素,省去程序中重装初值的指令,实现准确定时序中重装初值的指令,实现准确定时n但是任务方式但是任务方式2的缺陷是只需的缺陷是只需8位计数器,定时时间位计数器,定时时间遭到很大限制遭到很大限制6.4 定时器的编程和运用定时器的编程和运用例例6-3 利用利用T0方式方式2产生产生250us的定时,在的定时,在P1.0引脚上输出周引脚上输出周期为期为500us的方波的方波(要求准确定时要求准确定时)设系统振荡为设系统振荡为12MHz)(1)任务方式选择任务方式选择实现准确定时,采用方式实现准确定时,采用方式2对于对于12MHz晶振,方式晶振,方式2的最大计数时间为的最大计数时间为28=255us,所以可实现所以可实现250us的准确定时的准确定时故,设置故,设置TMOD=02H2)计算初值计算初值设初值为设初值为X:那么那么(28-X)1210-61/12=25010-6 X=28-250=5=05H(3)程序设计程序设计采用采用T0中断来控制中断来控制P1.0的输出。

的输出6.4 定时器的编程和运用定时器的编程和运用(4)参考程序参考程序MAIN:SETBEASETB ET0MOVTMOD,#02H ;置置T0方式方式2MOVTH0,#05H;送计数初;送计数初值值MOVTL0,#05HSETB TR0;启动;启动T0SJMP$TIMER:CPL P1.0;输出取反;输出取反RETI;反复循环;反复循环END6.4 定时器的编程和运用定时器的编程和运用nGATE门可使定时器门可使定时器Tx(T0或或T1)的启动计数的启动计数受受INTx*的控制,可丈量引脚的控制,可丈量引脚INTx*(P3.2或或P3.3)上正脉冲的宽度上正脉冲的宽度(机器周期数机器周期数)n以以T1为例:为例:门控制位门控制位GATE的运用的运用丈量脉冲宽度丈量脉冲宽度回想回想当当GATE=1时,时,K=TRxINTxK例例6-4 利用利用T1门控位门控位GATE测试测试INT1*(P3.3)引脚上出现的正脉冲的宽度引脚上出现的正脉冲的宽度分析:分析:根据设计要求,将根据设计要求,将T1设定为定时任务方式、方式设定为定时任务方式、方式1、GATE=1;当当TR1=1时,一旦时,一旦INT1*(P3.3)引脚上出现高电平就开场计数,直到出现低引脚上出现高电平就开场计数,直到出现低电平为止。

电平为止然后读取然后读取TH1、TL1中的计数值,分别送到存放器中的计数值,分别送到存放器A和和B中由于由于T1任务在定时方式,计数器计数的是机器周期的脉冲数;任务在定时方式,计数器计数的是机器周期的脉冲数;将脉冲数转化成时间,就可得到正脉冲的宽度将脉冲数转化成时间,就可得到正脉冲的宽度门控制位门控制位GATE的运用的运用丈量脉冲宽度丈量脉冲宽度ORG 0100HMAIN:MOV TMOD,#90H;T1为方式1定时控制字MOV TL1,#00H;计数器初值为0MOV TH1,#00HLOOP:JB P3.3,LOOP;等待INT1*低SETB TR1;如INT1*为低,启动T1LOOP1:JNB P3.3,LOOP1;等待INT1*升高,开场计数LOOP2:JB P3.3,LOOP2;等待INT1*降低,停顿计数CLR TR1;停顿T1计数MOV A,TL1;T1计数值的低8位送AMOV B,TH1;T1计数值的高8位送B由于定时器最长为16位计数器,因此被测脉冲高电平的宽度不能超越66636个机器周期参考程序参考程序:例例6-6 当当T0(P3.4)引脚上发生负跳变时,从引脚上发生负跳变时,从P1.0引脚上引脚上输出一个周期为输出一个周期为1ms的方波的方波,如下图。

如下图系统振荡为系统振荡为6MHz)两个计数器同时运用两个计数器同时运用6.4 定时器的编程和运用定时器的编程和运用(1)任务方式选择任务方式选择T0为方式为方式1计数,初值计数,初值 0FFFFH,即外部计数输入端,即外部计数输入端T0(P3.4)发生一次负跳变时,发生一次负跳变时,T0加加1且溢出,溢出标志且溢出,溢出标志TF0置置“1,发中断恳求在进入发中断恳求在进入T0中断程序后,把中断程序后,把F0标志置标志置“1,阐,阐明明T0引脚上已接纳了负跳变信号引脚上已接纳了负跳变信号T1定义为方式定义为方式2定时在T0引脚产生一次负跳变后,启动引脚产生一次负跳变后,启动T1每每600s产生一次中断,在中断效力程序中对产生一次中断,在中断效力程序中对P1.0求反,使求反,使P1.0产生周期产生周期1ms的方波TMOD=0010,0101=26H(2)计算计算T1初值初值设设T1的初值为的初值为X:那么那么(28-X)210-6=610-4 X=28-260=6=06H6.4 定时器的编程和运用定时器的编程和运用ORG 100HMAIN:SETB EASETB ET0 SETB ET1MOV TMOD,#26H;初始化,T1为方式2定时,T0为方 式1计数MOV TL0,#0FFH ;T0置初值 MOV TH0,#0FFHSETB TR0 ;启动T0MOV TL1,#06H ;T1置初值MOV TH1,#06HSJMP$TIMER0:CPLP1.0;P1.0取反SETB TR1;启动T1RETITIME1:CPLP1.0;P1.0取反RETIEND(3)程序设计程序设计n本本 章章 结结 束!束!6.4 定时器的编程和运用定时器的编程和运用nT0 方式方式3时,时,TL0和和TH0被分成两个独被分成两个独立的立的8位定时器位定时器/计数器。

其中,计数器其中,n TL0:8位定时器位定时器/计数器;计数器;n TH0:8位定时器位定时器n当当T1作串行口波特率发生器时,作串行口波特率发生器时,T0才才设置为方式设置为方式36.4 定时器的编程和运用定时器的编程和运用例例6-6 假设某假设某MCS-51运用系统的两个外中断源已被占用,运用系统的两个外中断源已被占用,设置设置T1任务在方式任务在方式2,作波特率发生器用现要求添加,作波特率发生器用现要求添加一个外部中断源,并控制一个外部中断源,并控制P1.0引脚输出一个引脚输出一个6kHz的方的方波设系统振荡为波设系统振荡为6MHz1)选择任务方式选择任务方式TL0为方式为方式3计数,把计数,把T0引脚引脚(P3.4)作附加的外中断输入端,作附加的外中断输入端,TL0初值设为初值设为0FFH,当检测到,当检测到T0引脚电平出现负跳变时,引脚电平出现负跳变时,TL0溢出,恳求中断,这相当于跳沿触发的外部中断源溢出,恳求中断,这相当于跳沿触发的外部中断源TH0为为8位方式位方式3定时,控制定时,控制P1.0输出输出6kHz的方波信号如的方波信号6.4.3 方式方式3的运用的运用(2)初值计算初值计算TL0的初值设为的初值设为0FFH。

6kHz的方波的周期为的方波的周期为200s,TH0的定时时间为的定时时间为100sTH0初值初值X计算如下计算如下:(28-X)210-6=110-4X=28-100=166=9CH(3)程序设计程序设计ORG 0000HLJMP MAINORG 000BH;T0中断入口中断入口LJMP TL0INT;跳;跳T0中断效力程序中断效力程序ORG 001BH;在;在T1方式方式3时,时,TH0占用占用T1的中断的中断LJMP TH0INT;跳;跳TH0中断效力程序中断效力程序6.4.3 方式方式3的运用的运用ORG 0100HMAIN:MOV TMOD,#27H;T0方式方式3计数,计数,T1方式方式2定时定时MOV TL0,#0FFH ;置;置TL0初值初值MOV TH0,#9CH;置;置TH0初值初值MOV TL1,#dataL;data为波特率常数为波特率常数MOV TH1,#dataHMOV TCON,#66H;启动;启动T0、T1,设置外部中断为跳沿触,设置外部中断为跳沿触发发MOV IE,#9FH;开中断;开中断TL0INT:MOV TL0,#0FFH ;TL0中断效力程序,中断效力程序,TL0重新重新装入初值装入初值 中断处置中断处置 TH0INT:MOV TH0,#9CH;TH0中断效力程序,中断效力程序,TH0重新装入初重新装入初值值CPL P1.0 ;P1.0位取反输出位取反输出RETI 6.4.3 方式方式3的运用的运用6.2.3 定时定时/计数器的初始化计数器的初始化MCS-51单片机的定时器单片机的定时器/计数器是可编程的,但在进展定计数器是可编程的,但在进展定时或计数之前要对程序进展初始化,详细步骤如下:时或计数之前要对程序进展初始化,详细步骤如下:1对对TMOD赋值,以确定定时器的任务方式;赋值,以确定定时器的任务方式;2置定时置定时/计数器初值,直接将初值写入存放器的计数器初值,直接将初值写入存放器的TH0、TL0或或TH1、TL1;3根据需求,对根据需求,对IE置初值,开放定时器中断;置初值,开放定时器中断;4对对TCON存放器中的存放器中的TR0或或TR1置位,启动定时置位,启动定时/计数计数器,置位以后,计数器即按规定的任务方式和初值进展计器,置位以后,计数器即按规定的任务方式和初值进展计数或开场定时。

数或开场定时1.实时时钟实现的根本思想实时时钟实现的根本思想 如何获得如何获得1秒的定时,可把定时时间定为秒的定时,可把定时时间定为100ms,采,采用中断方式进展溢出次数的累计,计满用中断方式进展溢出次数的累计,计满10次,即得到次,即得到秒计时片内片内RAM中规定中规定3个单元作为秒、分、时单元,详细个单元作为秒、分、时单元,详细安排如下安排如下:42H:“秒单元秒单元;41H:“分单元;分单元;40H:“时时单元单元从秒到分,从分到时是经过软件累加并进展比较的方从秒到分,从分到时是经过软件累加并进展比较的方法来实现的法来实现的6.4.6 实时时钟的设计实时时钟的设计 2.程序设计程序设计(1)主程序的设计主程序的设计流程如下图流程如下图6.4.6 实时时钟的设计实时时钟的设计(2)中断效力程序的设计中断效力程序的设计中断效力程序的主要中断效力程序的主要功能是实现秒、分、功能是实现秒、分、时的计时处置参考时的计时处置参考程序略6.4.6 实时时钟的设计实时时钟的设计 在读取运转中的定时器在读取运转中的定时器/计数器时,需留意计数器时,需留意:假设恰好假设恰好出现出现TLX溢出向溢出向THX进位的情况,那么读得的进位的情况,那么读得的(TLX)值就完全不对。

同样,先读值就完全不对同样,先读(THX)再读再读(TLX)也能够也能够出错方法方法:先读先读(THX),后读,后读(TLX),再读,再读(THX)假设两次读得两次读得(THX)一样,那么读的内容正确假设前后一样,那么读的内容正确假设前后两次读的两次读的(THX)有变化,那么再反复上述过程,这次有变化,那么再反复上述过程,这次反复读得的内容就应是正确的下面是有关的程序,反复读得的内容就应是正确的下面是有关的程序,读得的读得的(TH0)和和(TL0)放置在放置在R1和和R0内6.4.6 运转中读定时器运转中读定时器/计数器计数器RDTIME:MOV A,TH0;读;读(TH0)MOV R0,TL0;读;读(TL0)CJNE A,TH0,RDTIME;比较;比较2次读得的次读得的(TH0);不相等那么反复读;不相等那么反复读MOV R1,A;(TH0)送入送入R1中中 RET 6.4.6 运转中读定时器运转中读定时器/计数器计数器6.1 定时器的构造及任务原理定时器的构造及任务原理n当控制信号当控制信号 定时器任务在定时方式;加定时器任务在定时方式;加1计数器对脉冲计数器对脉冲f进展计数,每来一个脉冲,计数器加进展计数,每来一个脉冲,计数器加1,直到计时器计满溢出;,直到计时器计满溢出;由于由于 ,即一个计数脉冲的周期就是一个机器周期;计数,即一个计数脉冲的周期就是一个机器周期;计数器计数的是机器周期脉冲个数。

从而实现定时器计数的是机器周期脉冲个数从而实现定时n当控制信号当控制信号 定时器任务在计数方式;加定时器任务在计数方式;加1计数器对来自输计数器对来自输入引脚入引脚T0(P3.4)和和T1(P3.5)的外信号脉冲进展计数,每来一个的外信号脉冲进展计数,每来一个脉冲,计数器加脉冲,计数器加1,直到计时器计满溢出;,直到计时器计满溢出;Tx THxTFxTLxTRxINTx定时定时计数计数0f0/12ff 控制信号控制信号K K“1 1启动,计数器运转;启动,计数器运转;“0 0停顿,计数器停顿;停顿,计数器停顿;定时器定时器/计数器原理框图计数器原理框图加加1 1计数器计数器0/12ff1C/T=n控制信号K可以控制计数器的“启动和“停顿,TCON88HK=TRx(INTx+GATE)。

下载提示
相关文档
正为您匹配相似的精品文档