最新单片机定时器考小题大题精品课件.ppt
2 定时器定时器/计数器及其应用计数器及其应用n定时器定时器/计数器的应用场合计数器的应用场合: 定时或延时控制、对外部事件的检测、计定时或延时控制、对外部事件的检测、计数等数等;nMCS-51系列系列8031、8051单片机有单片机有两个两个16位位定时器定时器/计数器(即计数器(即T0和和T1););n8032、8052单片机有单片机有3个个16位定时器位定时器/计计数器(即数器(即T0、 T1和和T2););9n控制信号控制信号K K可以控制计数器的可以控制计数器的“启动启动”和和“停止停止”, TCON(88H)K = TRx(INTx+GATE)10P1P2S1振荡周期振荡周期时钟周期时钟周期机器周期机器周期机器周期机器周期指令周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2 振荡周期、振荡周期、时钟周期时钟周期、机器周期机器周期和和指令周期指令周期11 定时器的结构及工作原理定时器的结构及工作原理n在每个机器周期的在每个机器周期的S5P2S5P2期间采样检测引脚输入电平期间采样检测引脚输入电平。n若前一个机器周期采样值为若前一个机器周期采样值为“1”1”,后一个机器周期采样值,后一个机器周期采样值为为“0”0”,则计数器加,则计数器加1 1。n新的计数值在检测到输入引脚电平发生新的计数值在检测到输入引脚电平发生“1”1”到到“0”0”的负的负跳变(下降沿)后,于下一个机器周期的跳变(下降沿)后,于下一个机器周期的S3P1S3P1期间装入计期间装入计数器中数器中。n由于由于CPUCPU需要两个机器周期来识别一个需要两个机器周期来识别一个“1”1”到到“0”0”的跳变的跳变信号,所以最高的计数频率为振荡周期的信号,所以最高的计数频率为振荡周期的1/241/24。P1P2S1振荡周期振荡周期状态周期状态周期机器周期机器周期机器周期机器周期指令周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P212定时器的结构及工作原理定时器的结构及工作原理n定时定时/ /计数器对输入信号的要求计数器对输入信号的要求n外部计数脉冲的最高频率为系统振荡器频率的外部计数脉冲的最高频率为系统振荡器频率的1/24,例如例如选用选用12MHz频率的晶体,则可输入频率的晶体,则可输入500KHz的外部脉冲。的外部脉冲。n输入信号的高、低电平至少要分别保持一个机器周期。输入信号的高、低电平至少要分别保持一个机器周期。如图所示,图中如图所示,图中Tcy为机器周期。为机器周期。13n可编程定时器的工作方式、启动、停止、溢出标可编程定时器的工作方式、启动、停止、溢出标志、计数器等都是志、计数器等都是可编程可编程的的通过设置寄存器通过设置寄存器TMOD,TCON,TH0,TL0,TH1和和TL1 实现。实现。n当设置了定时器的工作方式并启动定时器工作后,当设置了定时器的工作方式并启动定时器工作后,定时器就按被设定好的工作方式独立工作,定时器就按被设定好的工作方式独立工作,不再不再占用占用CPU,只有在计数器计满溢出时才向,只有在计数器计满溢出时才向CPU申申请中断,占用请中断,占用CPU。n由此可见,定时器是单片机中工作效率高且应用由此可见,定时器是单片机中工作效率高且应用灵活的部件。灵活的部件。定时器的结构及工作原理定时器的结构及工作原理14定时器定时器/计数器及其应用计数器及其应用定时器的定时器的TMOD和和TCON寄存器寄存器15定时器的定时器的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位;位;16工作方式控制寄存器工作方式控制寄存器TMOD8位分为两组,高位分为两组,高4位控制位控制T1,低,低4位控制位控制T0。(1) 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无位地址,不能位寻址。无位地址,不能位寻址。(5) 复位时,复位时,TMOD所有位均为所有位均为“0”。17低低4位与外部中断有关,高位与外部中断有关,高4位的功能如下位的功能如下: (1) TF1、TF0 计数溢出标志位计数溢出标志位 定时器定时器T0或或T1计数溢出时,由硬件计数溢出时,由硬件自动自动将此位将此位置置“1”;TFx可以由程序查询,也是定时中断的请求源;可以由程序查询,也是定时中断的请求源;(2) TR1、TR0 计数运行控制位计数运行控制位 TRx=1: 启动定时器启动定时器/计数器工作计数器工作 TRx=0: 停止定时器停止定时器/计数器工作计数器工作 控制寄存器控制寄存器TCON1819定时定时/ /计数器的初始化计数器的初始化51单片机的定时器单片机的定时器/计数器是可编程的,但在进行定时或计计数器是可编程的,但在进行定时或计数之前要对程序进行数之前要对程序进行初始化初始化,具体步骤如下:,具体步骤如下:(1)对)对TMOD赋值,以赋值,以确定确定定时器的定时器的工作模式工作模式;(2)置置定时定时/计数器计数器初值初值,直接将初值写入寄存器的,直接将初值写入寄存器的TH0、TL0或或TH1、TL1;(3)根据需要,对)根据需要,对IE置初值,开放定时器中断;置初值,开放定时器中断;(4)对)对TCON寄存器中的寄存器中的TR0或或TR1置位置位,启动定时,启动定时/计数计数器,置位以后,计数器即按规定的工作模式和初值进行计器,置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。数或开始定时。20定时定时/ /计数器的初始化计数器的初始化初值计算初值计算: 设计数器的最大值为设计数器的最大值为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,则最大定时值为,则最大定时值为:2:213131s =8.192ms1s =8.192ms 若工作在模式若工作在模式1,1,则最大定时值为则最大定时值为: : 2 216161s =65.536ms1s =65.536ms21定时器定时器/计数器及其应用计数器及其应用定时器的工作方式定时器的工作方式22n定时器定时器T0有有4种工作方式:种工作方式:即:即:方式方式0,方式,方式1,方式,方式2,方式,方式3。n定时器定时器T1有有3种工作方式:种工作方式:即:即:方式方式0,方式,方式1,方式,方式2。定时器的工作方式定时器的工作方式23方式方式0 M1、M0设置为设置为00 ,为,为13位位计数器,以计数器,以T1为例,为例,其框图如下其框图如下:定时器的工作方式定时器的工作方式方式方式0计数脉冲输入加1计数器24定时器的工作方式定时器的工作方式方式方式0TH1 D12 D11 D10 D9 D8 D7 D6 D5TL1 D4 D3 D2 D1 D0n在这种方式下,在这种方式下,16位寄存器位寄存器TH1和和TL1只用只用13位,位,由由TH1的的8位和位和TL1的低的低5位组成。位组成。TL1的高的高3位不定。位不定。n当当TL1的低的低5位计数溢出时,向位计数溢出时,向TH1进位。而进位。而TH1计计数溢出时,则向中断标志位数溢出时,则向中断标志位TF1进位(即硬件将进位(即硬件将TF1置置1),并请求中断。),并请求中断。n可通过查询可通过查询TF1是否置是否置“1”或考察中断是否发生来判或考察中断是否发生来判定定时器定定时器T1的操作完成与否。的操作完成与否。25定时器的工作方式定时器的工作方式方式方式0n当当C/T=0时,为时,为定时定时工作模式,开关接到振荡器工作模式,开关接到振荡器的的12分频器输出上,计数器对机器周期脉冲计数。分频器输出上,计数器对机器周期脉冲计数。其定时时间为:其定时时间为:(213-初值初值)振荡周期振荡周期12例如:若晶振频率为例如:若晶振频率为12MHz,则最长的定时时间,则最长的定时时间为为(213-0)(1/12)12us=8.191msn当当C/T=1时,为时,为计数计数工作模式,开关与外部引脚工作模式,开关与外部引脚T1(P3.5)接通,计数器对来自外部引脚的输入脉接通,计数器对来自外部引脚的输入脉冲计数。当外部信号发生负跳变时计数器加冲计数。当外部信号发生负跳变时计数器加1。26定时器的工作方式定时器的工作方式方式方式0nGATE控制定时器控制定时器Tx(T1或或T0)的条件的条件:(1) 当当GATE=0时,时,“或门或门”输出恒为输出恒为1,“与门与门”的输的输出信号出信号K由由TRx决定决定(即此时即此时K=TRx),定时器不受,定时器不受INTx输入电平的影响,由输入电平的影响,由TRx直接控制定时器的启动和停止。直接控制定时器的启动和停止。TRx=1;计数启动;计数启动;TRx=0;计数停止;计数停止;(2) 当当GATE=1时,时, “与门与门”的输出信号的输出信号K由由INTx输入输入电平和电平和TRx位的状态一起决定位的状态一起决定(即此时即此时K=TRxINTx),当且仅当当且仅当TRx=1且且INTx=1(高电平高电平)时,时,计数启动计数启动;否则,计数停止否则,计数停止。返回返回27方式方式1 M1、M0=01,为,为16位位的计数器,除位数外,其他与方式的计数器,除位数外,其他与方式0相同相同。n其定时时间为:其定时时间为:(216-初值初值)振荡周期振荡周期12例如:若晶振频率为例如:若晶振频率为12MHz,则最长的定时时间为,则最长的定时时间为(216-0)(1/12)12us=65.536ms定时器的工作方式定时器的工作方式方式方式128方式方式2 M1、M0=10 ,为,为自动恢复初值的自动恢复初值的8位位计数器,等效框图如计数器,等效框图如下下: TLx作为作为8位计数器,位计数器,THx作为重置初值的缓冲器。作为重置初值的缓冲器。 定时器的工作方式定时器的工作方式方式方式2THx作为常数缓冲器作为常数缓冲器,当,当TLx计数溢出时,在置计数溢出时,在置“1”溢出标志溢出标志TFx的同时,还的同时,还自动的将自动的将THx中的初值送至中的初值送至TLx,使,使TLx从初值开始重从初值开始重新计数。定时器新计数。定时器/计数器的方式计数器的方式2工作过程如图工作过程如图 (x=0, 1) 。29n优点:优点:方式方式0 0和方式和方式1 1用于循环重复定时或计数用于循环重复定时或计数时,在时,在每次计数器挤满溢出后,计数器每次计数器挤满溢出后,计数器复复0 0。若要进行新一轮的计数,就得重。若要进行新一轮的计数,就得重新装入计数初值。这样一来不仅造成新装入计数初值。这样一来不仅造成编编程麻烦程麻烦,而且,而且影响定时精度影响定时精度。而方式。而方式2 2具有初值自动装入的功能,避免了这个具有初值自动装入的功能,避免了这个缺点,缺点,可实现精确的定时可实现精确的定时。n缺点:缺点:只有只有8 8位计数器,定时时间短、计数范位计数器,定时时间短、计数范围小。围小。其定时时间为:其定时时间为: (28-初值初值)振荡周期振荡周期12若晶振频率为若晶振频率为12MHz,则最长的定时时间为,则最长的定时时间为(28-0)(1/12)12us=0.256ms定时器的工作方式定时器的工作方式方式方式2方式方式2工作过程图工作过程图 (x=0, 1) 。30定时器定时器/计数器及其应用计数器及其应用定时器的编程和应用定时器的编程和应用31定时器的编程和应用定时器的编程和应用n编程说明编程说明51单片机的定时器是可编程的,但在进行定时或计数之前要对程序进行单片机的定时器是可编程的,但在进行定时或计数之前要对程序进行初始化初始化,具体步骤如下:,具体步骤如下:(1)确定工作方式字:对)确定工作方式字:对TMOD寄存器正确赋值;寄存器正确赋值;(2)确定定时初值:计算初值,直接将初值写入寄存器的)确定定时初值:计算初值,直接将初值写入寄存器的TH0、TL0或或TH1、TL1;初值计算初值计算: 设计数器的最大值为设计数器的最大值为M,则置入的初值,则置入的初值X为:为: 计数方式:计数方式:X=M-计数值计数值 定时方式:由定时方式:由(M-X)T=定时值定时值,得得X=M-定时值定时值/T T为计数周期,是单片机的机器周期。为计数周期,是单片机的机器周期。(模式(模式0 M为为213,模式,模式1 M为为216,模式,模式2和和3 M为为28)(3)根据需要,对)根据需要,对IE置初值,开放定时器中断;置初值,开放定时器中断;(4)启动定时)启动定时/计数器,对计数器,对TCON寄存器中的寄存器中的TR0或或TR1置位,置位以置位,置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。后,计数器即按规定的工作模式和初值进行计数或开始定时。32定时器的编程和应用定时器的编程和应用例例1 要在要在P1.0上输出一个周期为上输出一个周期为2ms的方波,的方波,假设系统振荡频率采用假设系统振荡频率采用12MHz。 利用利用T0方式方式0产生产生1ms的定时的定时方波的周期用方波的周期用T0来确定,让来确定,让T0每隔每隔1ms计数溢出计数溢出1次,即次,即TF0=1;查询到;查询到TF0=1 则则CPU对对P1.0取反。取反。即要使即要使P1.0P1.0每隔每隔1ms1ms取反取反一次。一次。33定时器的编程和应用定时器的编程和应用第一步:第一步: 确定工作方式字确定工作方式字 方式方式0 (13位位)最长可定时最长可定时 8.192ms; 方式方式1 (16位位)最长可定时最长可定时 65.536ms; 方式方式2 (8位位)最长可定时最长可定时 256 s。nT0为方式为方式0, M1M0=00 n定时工作状态,定时工作状态, C/T=0nGATE=0,不受,不受INT0控制,控制,nT1不用全部取不用全部取“0”值。值。n故故TMOD=00H34定时器的编程和应用定时器的编程和应用第二步:第二步: 计算计算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 035例例2 将将例例1中的输出方波周期改为中的输出方波周期改为1秒。秒。 分析:分析: 周期为周期为1s的方波要求的方波要求500ms的定时。的定时。 (1) T0工作方式的确定工作方式的确定因定时时间较长,采用哪一种工作方式?因定时时间较长,采用哪一种工作方式?由各种工作方由各种工作方式的特性,可计算出式的特性,可计算出: 方式方式0 (13位位)最长可定时最长可定时 8.192ms; 方式方式1 (16位位)最长可定时最长可定时 65.536ms; 方式方式2 (8位位)最长可定时最长可定时 256 s。 所以采用定时器定时加软件计数的方法来实现延长定时。所以采用定时器定时加软件计数的方法来实现延长定时。选方式选方式1,定时,定时50ms,软件计数,软件计数10次。次。50ms 10=500ms。 所以,所以,TMOD=01H定时器的编程和应用定时器的编程和应用以上各方式以上各方式都不满足要求都不满足要求36 (2) 计算计数初值计算计数初值因为因为: (216-X)1210-6 1/12=5010-3所以所以: X=15536=3CB0H因此因此: TH0=3CH,TL0=B0H (3) 10次计数的实现次计数的实现设计一个软件计数器,初始值设为设计一个软件计数器,初始值设为10。每隔。每隔50ms定时时间到,产生溢出标志定时时间到,产生溢出标志TF0,程序查询,程序查询到到TF0=1,则软件计数器减,则软件计数器减1。这样减到。这样减到0时就获时就获得了得了500ms的定时。的定时。定时器的编程和应用定时器的编程和应用37n以上的定时程序中,程序都要以上的定时程序中,程序都要重置计时器初值重置计时器初值,这,这样从定时器溢出发出溢出标志,到重装完定时器初样从定时器溢出发出溢出标志,到重装完定时器初值,在开始计数,之间总会有一段值,在开始计数,之间总会有一段时间间隔时间间隔,使定,使定时时间增加了若干微秒,造成时时间增加了若干微秒,造成定时不够精确定时不够精确。n为了减小这种定时误差,单片机中设置了为了减小这种定时误差,单片机中设置了工作方式工作方式2(自动重装初值自动重装初值),则可避免上述因素,则可避免上述因素,省去程序省去程序中重装初值的指令,中重装初值的指令,实现精确定时。实现精确定时。n但是工作方式但是工作方式2的的缺点缺点是是只有只有8位位计数器,定时时间计数器,定时时间受到很大限制。受到很大限制。定时器的编程和应用定时器的编程和应用38例例3 利用利用T0方式方式2产生产生250us的定时,在的定时,在P1.0引脚上输出周期引脚上输出周期为为500us的方波的方波(要求精确定时要求精确定时)。(设系统振荡为设系统振荡为12MHz)(1) 工作方式选择工作方式选择实现精确定时,采用方式实现精确定时,采用方式2。对于对于12MHz晶振,方式晶振,方式2的最大计数时间为的最大计数时间为28=256us, 所以可实现所以可实现250us的精确定时。的精确定时。故,设置故,设置TMOD=02H。(2) 计算初值计算初值设初值为设初值为X: 则则 (28-X) 1210-61/12=25010-6 X=28-250=6=06H(3) 程序设计程序设计采用查询采用查询TF0的状态来控制的状态来控制P1.0的输出。的输出。定时器的编程和应用定时器的编程和应用