版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理及单片机接口技术微机原理及单片机接口技术第七章第七章 定时计数器与可编程定时计数器与可编程计数器阵列计数器阵列任课教师: http:/ stc15系列单片机器件手册等keil vision软件下载及指导手册(Helpvision Help) http:/ Software Cx51 编译器用户手册: Cx51编译器-对传统和扩展的8051微处理器的优化的C编译器和库参考2第七章第七章 定时计数器与可编程计数器阵列定时计数器与可编程计数器阵列本章学习目标本章学习目标掌握定时计数器的应用掌握定时计数器的应用掌握可编程时钟输出模块的应用掌握可编程时钟输出模块的应用掌握可编程计数器阵列模块的应
2、用掌握可编程计数器阵列模块的应用3第七章第七章 定时计数器与可编程计数器阵列定时计数器与可编程计数器阵列7.1 定时定时/计数器及其应用计数器及其应用u7.1.1 定时定时/计数器的结构及工作原理计数器的结构及工作原理u7.1.2 定时定时/计数器的相关寄存器计数器的相关寄存器u7.1.3 定时定时/计数器的工作方式计数器的工作方式u7.1.4 定时定时/计数器量程的扩展计数器量程的扩展u7.1.5 定时定时/计数器编程举例计数器编程举例7.2 可编程时钟输出模块及其应用可编程时钟输出模块及其应用u7.2.1 可编程时钟输出的相关寄存器可编程时钟输出的相关寄存器u7.2.2 可编程时钟输出的编
3、程实例可编程时钟输出的编程实例7.3 可编程计数器阵列模块及其应用可编程计数器阵列模块及其应用u7.3.1 PCA模块的结构模块的结构u7.3.2 PCA模块的特殊功能寄存器模块的特殊功能寄存器u7.3.3 PCA模块的工作模式模块的工作模式u7.3.4 PCA模块的应用模块的应用4第七章第七章 定时计数器与可编程计数器阵列定时计数器与可编程计数器阵列 STC15F2K60S2单片机内部集成了以下与定时功单片机内部集成了以下与定时功能有关的模块:能有关的模块: 1)三个三个16位的定时位的定时/计数器计数器,不仅可以方便地用于定,不仅可以方便地用于定时控制,而且还可以用作分频器和事件记录;时控
4、制,而且还可以用作分频器和事件记录; 2)可编程时钟输出功能可编程时钟输出功能,可给外部器件提供时钟;,可给外部器件提供时钟; 3)三路可编程计数器阵列三路可编程计数器阵列(Programmable Counter Array, PCA)。可用于软件定时器、外部脉冲的捕捉、。可用于软件定时器、外部脉冲的捕捉、高速输出以及脉宽调制(高速输出以及脉宽调制(Pulse Width Modulation, PWM)输出。)输出。57.17.1定时定时/ /计数器及其应用计数器及其应用7.1.1 定时定时/计数器的结构及工作原理计数器的结构及工作原理 定时定时/计数器的核心是一个计数器的核心是一个加加1
5、计数器计数器,加,加1计数器的计数器的脉冲有两个来源,一个是外部脉冲源,另一个是系统脉冲有两个来源,一个是外部脉冲源,另一个是系统的时钟振荡器。的时钟振荡器。图图7-1 定时定时/计数器的结构框图计数器的结构框图(x =0, 1, 下同下同)P3.4/T0P3.5/T1TCON.TF0TCON.TF1溢出中断标志溢出中断标志开启开启运行运行TCON.TR1TCON.TR0TMOD6AUXR.T0(1)x12TFxTx括号内括号内1表示表示T1x12, 以下类同以下类同7.1.1定时定时/计数器的结构及工作原理计数器的结构及工作原理图中有两个模拟图中有两个模拟位开关位开关, TMOD.C/T决定
6、工作方式决定工作方式: 是是定时还是计数。定时还是计数。控制信号控制信号(由由TCON.TR0(1)等等形形成成) 决定计数器开启与决定计数器开启与关闭。关闭。用户可对特殊功能寄存器用户可对特殊功能寄存器TMOD, TCON相应位设置相应位设置, 从而选择不同工作方式从而选择不同工作方式(计数或定时计数或定时)或是否启动计数器。或是否启动计数器。AUXR中中T0 x12, T1x12决定是否对振荡时钟进行决定是否对振荡时钟进行12分频。分频。7开启运行开启运行由由TCON.TR0(1)等等形成形成TMODAUXR.T0(1)x12TFxTx图图7-1 定时定时/计数器的结构框计数器的结构框图图
7、( x =0, 1, 下同下同)7.1.1、定时、定时/计数器的结构及工作原理计数器的结构及工作原理当脉冲源为时钟振荡器当脉冲源为时钟振荡器(等间隔脉冲序列等间隔脉冲序列)时时, 每个时钟每个时钟周期计数器加周期计数器加1, 因计数脉冲为一时间基准因计数脉冲为一时间基准, 所以脉冲数所以脉冲数乘以脉冲间隔时间即定时时间乘以脉冲间隔时间即定时时间, 因此有因此有定时功能定时功能。当脉冲源为外部脉冲当脉冲源为外部脉冲(通常间隔不等通常间隔不等) 时时, 就是外部事件就是外部事件计数器计数器, 当外输入端上有当外输入端上有10的跳变的跳变时计数器加时计数器加1。外部输入信号的速率是不受限制的,但必须
8、保证给出外部输入信号的速率是不受限制的,但必须保证给出的电平在变化前至少被采样一次。的电平在变化前至少被采样一次。8TFxTxTCON.TR0(1)TMOD图图7-1 定时定时/计数器的结构框图计数器的结构框图(x =0, 1, 下同下同)7.1.1定时定时/计数器的结构及工作原理计数器的结构及工作原理计数器对这两个脉冲源之一进行输入计数,每输入一计数器对这两个脉冲源之一进行输入计数,每输入一个脉冲,计数值加个脉冲,计数值加1。当计数到计数器全当计数到计数器全1时时, 再输入一个脉冲就使计数值回再输入一个脉冲就使计数值回零零, 同时从最高位溢出一个脉冲使寄存器同时从最高位溢出一个脉冲使寄存器T
9、CON的的TF0或或TF1置置1, 作为作为计数器的溢出中断标志计数器的溢出中断标志。如果定时如果定时/计数器工作于定时状态,则表示计数器工作于定时状态,则表示定时时间到定时时间到;若工作于计数状态,则表示若工作于计数状态,则表示计数回零计数回零。9TCON.TF0(1)溢出中断标志溢出中断标志TFxTxTCON.TR0(1)TMOD7.1.1定时定时/计数器的结构及工作原理计数器的结构及工作原理图图7-2 CPU与与TMOD、TCON、AUXR、T0、T1的关系的关系图图1016位的加位的加1计数器由两个计数器由两个8位的特殊功能寄存器位的特殊功能寄存器THx (高高8位位)和和TLx(低低
10、8位位)组成组成(x=0, 1, 下同下同)。通过改变通过改变TMOD的相应位,它们可被设置为的相应位,它们可被设置为4种不同种不同的工作方式的工作方式。 标志标志TF1溢出中断溢出中断TR1TF0TR0启动运行启动运行C/TM0M1T0(1)x12C/TP3.5/T1P3.4/T0定时定时器器0, 1的的16位位计计数器数器脉脉冲输入源冲输入源7.1.1定时定时/计数器的结构及工作原理计数器的结构及工作原理11INT_CLKO内内STC15F2K60S2除了定时除了定时/计数器计数器T0和和T1外,还有一个外,还有一个16位定时器位定时器T2(简称(简称T2)。)。T2工作模式固定为工作模式
11、固定为16位自动重装载模式位自动重装载模式。可当定时计。可当定时计数器用数器用, 也可作串口波特率发生器或可编程时钟输出源。也可作串口波特率发生器或可编程时钟输出源。图图7-3 定时器定时器T2的原理框图的原理框图引脚引脚AUXR.3AUXR.4AUXR.2T2中断标志位中断标志位对用户不可见对用户不可见定时定时器器2的的16位计数器位计数器定时定时器器2的的16位重装载寄位重装载寄存器存器7.1.2 定时定时/计数器的相关寄存器计数器的相关寄存器 TMOD、TCON和和AUXR用来确定定时用来确定定时/计数器的工作计数器的工作方式并控制其功能。其中,方式并控制其功能。其中,TMOD控制定时控
12、制定时/计数器计数器0和和1的工作方式;的工作方式;TCON控制定时器控制定时器T0、T1的启停及状态;的启停及状态;AUXR设置定时器的速度和设置定时器的速度和T2的功能。的功能。 121、TMOD:定时器工作方式控制寄存器:定时器工作方式控制寄存器TMOD(地址为地址为89H, 复位值为复位值为00H)寄存器的各位定义:寄存器的各位定义:位号位号D7D6D5D4D3D2D1D0定时器名定时器名定时器定时器1定时器定时器0位名称位名称GATE C/M1 M0 GATE C/M1M0TTM1 M0 工作方式工作方式功能说明功能说明0 0016位自动装载的定时器位自动装载的定时器/计数器计数器0
13、 1116位定时器位定时器/计数器计数器1 02可自动装入的可自动装入的8位计数器位计数器1 1留作备用留作备用 1)M1和和M0:方式选择控制:方式选择控制位位表表7-1 定时定时/计数器的方式选择计数器的方式选择131、TMOD:定时器工作方式控制寄存器:定时器工作方式控制寄存器位号位号D7D6D5D4D3D2D1D0定时器名定时器名定时器定时器1定时器定时器0位名称位名称GATE C/M1 M0 GATE C/M1M0TT2)C/ :功能选择位。:功能选择位。 1:计数器功能(:计数器功能(对对T0或或T1引脚的负跳变进行计数引脚的负跳变进行计数)。)。 0:定时器功能(对时钟周期进行计
14、数)。:定时器功能(对时钟周期进行计数)。T141、TMOD:定时器工作方式控制寄存器:定时器工作方式控制寄存器位号位号D7D6D5D4D3D2D1D0定时器名定时器名定时器定时器1定时器定时器0位名称位名称GATE C/M1 M0 GATE C/M1M0TT3)GATE:门控位门控位。GATE用于选通控制用于选通控制。 1:INTx为高电平且为高电平且TRx置位时置位时, 启动定时器工作。启动定时器工作。 0:每当:每当TRx置位时置位时, 就启动定时器工作。就启动定时器工作。注意注意: TMOD寄存器不能进行位寻址,设置时只能对整寄存器不能进行位寻址,设置时只能对整个寄存器赋值。个寄存器赋
15、值。参考参考7.1.3定时定时/计数器的工作方式计数器的工作方式图图7-4,图图7-5,图图7-6 TMOD.GATE:门控位。:门控位。GATE用于选通控制。用于选通控制。GATE=1: INTx为高电平且为高电平且TRx置位置位时时, 启启动定时器工作。动定时器工作。GATE=0: 每每当当TRx置位置位时时, 就就启动定时器工作。启动定时器工作。15TCON.TF0(1)溢出中断标志溢出中断标志TFxTx参考参考图图7-5 定时器定时器0和和1的方式的方式1的原理图的原理图图图7-1 定时定时/计数器的结构框计数器的结构框图图由由TCON.TR0(1)等等形成形成2、TCON:定时器控制
16、寄存器:定时器控制寄存器16位号位号D7D6D5D4D3D2D1D0位名称位名称TF1 TR1 TF0 TR0 IE1IT1IE0IT0TCON(地址为地址为88H,复位值为复位值为00H)寄存器的格式如下:寄存器的格式如下: 1)TF1:T1溢出标志位。溢出标志位。 T1启动计数后,最高位产生溢出时,启动计数后,最高位产生溢出时,TF1由硬件置由硬件置1,向向CPU请求中断,当请求中断,当CPU响应中断时,由硬件清响应中断时,由硬件清0。TF1也可以由程序查询或清也可以由程序查询或清0。 2)TF0:定时器:定时器/计数器计数器0溢出标志位溢出标志位。 含义和功能与含义和功能与TF1相似。相
17、似。 3)TR1:T1的运行控制位。的运行控制位。可由软件置位或清可由软件置位或清0。 当当GATE(TMOD.7)=0,TR1=1启动启动T1开始计数开始计数,TR1=0时停止时停止T1计数。计数。 当当GATE(TMOD.7)=1,TR1=1且且INTx输输入高电平入高电平时时,才允许才允许T1计数。计数。 4)TR0:定时器:定时器T0的运行控制位。的运行控制位。 含义和功能与含义和功能与TR1相似。相似。172、TCON:定时器控制寄存器:定时器控制寄存器位号位号D7D6D5D4D3D2D1D0位名称位名称TF1 TR1 TF0 TR0 IE1IT1IE0IT02、TCON:定时器控制
18、寄存器:定时器控制寄存器因定时因定时/计数器可编程计数器可编程(选选3种方式等种方式等), 所以在任何一个所以在任何一个定时定时/计数器开始工作之前计数器开始工作之前, 必须对其写入相应控制字。必须对其写入相应控制字。把方式控制字写入把方式控制字写入TMOD, 选择定时器的工作方式选择定时器的工作方式;把初值写入计数器把初值写入计数器THx、TLx, 控制计数长度控制计数长度;将将TCON相应位相应位(TRx)置置1或清零实现启动或停止计数。或清零实现启动或停止计数。在运行过程中,还可读出在运行过程中,还可读出THx、TLx和和TCON的内容来的内容来随时查询随时查询T0、T1的状态。的状态。
19、18位号位号D7D6D5D4D3D2D1D0位名称位名称TF1TR1TF0TR0IE1IT1IE0IT0位号位号D7D6D5D4D3D2D1D0定时器名定时器名定时器定时器1定时器定时器0位名称位名称GATE C/M1 M0 GATE C/M1M0TTTMODTCON3、AUXR:辅助寄存器:辅助寄存器辅助寄存器辅助寄存器AUXR主要用来设置定时器的速度和定时主要用来设置定时器的速度和定时器器2的功能以及串口的功能以及串口UART的波特率控制。的波特率控制。STC15F2K60S2单片机是单片机是1T 的的8051单片机单片机, 为兼容传为兼容传统统8051单片机单片机, 定时器定时器0和定时
20、器和定时器1复位后是传统复位后是传统8051的速度的速度, 即即12分频分频, 但指令执行速度仍然是但指令执行速度仍然是1T的速度。的速度。 通过设置特殊功能寄存器通过设置特殊功能寄存器AUXR中相关的位,定时器中相关的位,定时器也可不进行也可不进行12分频,实现真正的分频,实现真正的1T速度。速度。19位号位号D7D6D5D4D3D2D1D0位名位名称称T0 x12 T1x12 UART_M0 x6UART_M0 x6 T2RT2_C/T2x12 EXTRAM S1ST2T3、AUXR:辅助寄存器:辅助寄存器位号位号D7D6D5D4D3D2D1D0位名位名称称T0 x12 T1x12 UAR
21、T_M0 x6UART_M0 x6 T2RT2_C/T2x12 EXTRAM S1ST2辅助寄存器辅助寄存器AUXR(地址地址为为8EH, 复位复位值为值为01H)各位定义各位定义:T1)T0 x12:定时器:定时器0速度控制位。速度控制位。0: 定时器定时器0速度与传统速度与传统8051定时器速度相同定时器速度相同, 即即12分频。分频。1: 定时器定时器0速度是传统速度是传统8051定时器速度的定时器速度的12倍倍, 即不分频。即不分频。202)T1x12:定时器:定时器1速度控制位。速度控制位。 0:即即12分频。分频。 1:不分频。不分频。 如果如果UART串口用串口用T1作为波特率发
22、生器,作为波特率发生器,T1x12位决定位决定UART串口是串口是12T 还是还是1T。3、AUXR:辅助寄存器:辅助寄存器21位号位号D7D6D5D4D3D2D1D0位名位名称称T0 x12 T1x12 UART_M0 x6UART_M0 x6 T2RT2_C/T2x12 EXTRAM S1ST2T3)T2R:定时器:定时器2运行控制位。运行控制位。 0:不允许定时器:不允许定时器2运行;运行; 1:允许定时器:允许定时器2运行。运行。4)T2_C/ :定时器:定时器2用作定时器和计数器的选择。用作定时器和计数器的选择。 0:定时器(计数脉冲从:定时器(计数脉冲从内部系统时钟内部系统时钟输入
23、;输入; 1:计数器(计数脉冲从:计数器(计数脉冲从P3.1/T2引脚引脚输入)。输入)。TT2工作模式固定为工作模式固定为16位自动重装载模式位自动重装载模式。不用设置不用设置工作方式。工作方式。3、AUXR:辅助寄存器:辅助寄存器UART_M0 x6用于控制用于控制UART串串口口1方式方式0时的波特率。时的波特率。 0:波特波特率率SYSclk/12; 1:波特率波特率SYSclk/2; (第第8章章)S1ST2为为串口串口1选择选择T1或或T2作波特率发生器。作波特率发生器。(第第8章章)0: 选择选择定时器定时器1; 1: 选择选择定时器定时器2EXTRAM:设设置是否允许使用内部置
24、是否允许使用内部1792字节扩字节扩展展RAM。 0: 允许使用片内扩展允许使用片内扩展RAM; 1: 禁止禁止使用。使用。22位号位号D7D6D5D4D3D2D1D0位名位名称称T0 x12 T1x12 UART_M0 x6UART_M0 x6 T2RT2_C/T2x12 EXTRAM S1ST2T5)T2x12:定时器:定时器2速度控制位。速度控制位。 0: 12分频,分频,T2每每12个时钟计数一次;个时钟计数一次; 1:不分频,:不分频,T2每每1个时钟计数一次。个时钟计数一次。7.1.2 定时定时/计数器的相关寄存器计数器的相关寄存器位号D7D6D5D4D3D2D1D0位名称4. T
25、2H/RL_TH2:定时器:定时器2的的16位计数位计数器的高器的高字字节节 /16位位重重装载装载(重装值重装值)寄存器高字节寄存器高字节 (共共用用地址地址为为0D6H, 复复位位值值为为00H)5. T2L/RL_TL2: 定定时器时器2的的16位计数器位计数器的低字节的低字节/16位重装载位重装载(重装值重装值)寄存寄存器低字器低字节节(共共用地址为用地址为0D7H, 复复位值为位值为00H)23位号D7D6D5D4D3D2D1D0位名称RL_TH2, RL_TL2: 是是2个隐藏的寄存器个隐藏的寄存器, CPU通过通过TH2, TL2对其写入数值。对其写入数值。7.1.2 定时定时/
26、计数器的相关寄存器计数器的相关寄存器24定时器定时器2有有2个隐藏的寄存器个隐藏的寄存器 RL_TH2和和RL_TL2 。RL_TH2与与T2H共有同一个地址共有同一个地址, RL_TL2与与T2L共有同一个地址。共有同一个地址。当当TR2=0即定时器即定时器/计数器计数器2被禁止工作时被禁止工作时, 对对T2L写入的内容会写入的内容会同时写入同时写入RL_TL2, 对对T2H写入的内容也会同时写入写入的内容也会同时写入RL_TH2。当当TR2=1即定时器即定时器/计数器计数器2被允许工作时被允许工作时, 对对T2L写入内容写入内容, 实际实际上不是写入当前寄存器上不是写入当前寄存器T2L中中
27、, 而是写入隐藏寄存器而是写入隐藏寄存器RL_TL2中中; 对对T2H写入内容写入内容, 实际上也不是写入当前寄存器实际上也不是写入当前寄存器T2H中中, 而是写入而是写入隐藏的寄存器隐藏的寄存器RL_TH2。这样可以巧妙地实现这样可以巧妙地实现16位重装载定时器。位重装载定时器。当读当读T2H和和T2L的内容时的内容时, 所读的内容就是所读的内容就是T2H和和T2L的内容的内容, 而而不是不是RL_TH2和和RL_TL2的内容。的内容。7.1.2 定时定时/计数器的相关寄存器计数器的相关寄存器25定时器定时器0(1)有有2个隐藏的寄存器个隐藏的寄存器 RL_TH0(1)和和RL_TL0(1)
28、 。RL_TH0(1)与与TH0(1)共有同一个地址共有同一个地址, RL_TL0(1)与与TL0(1)共有共有同一个地址。同一个地址。当当TR0(1)=0即定时器即定时器/计数器计数器0(1)被禁止工作时被禁止工作时, 对对TL0(1)写入写入的内容会同时写入的内容会同时写入RL_TL0(1), 对对TH0(1)写入的内容也会同时写写入的内容也会同时写入入RL_TH0(1)。当当TR0(1)=1即定时器即定时器/计数器计数器0(1)被允许工作时被允许工作时, 对对TL0(1)写入写入内容内容, 实际上不是写入当前寄存器实际上不是写入当前寄存器TL0(1)中中, 而是写入隐藏的寄而是写入隐藏的
29、寄存器存器RL_TL0(1)中中; 对对TH0(1)写入内容写入内容, 实际上也不是写入当前实际上也不是写入当前寄存器寄存器TH0(1)中中, 而是写入隐藏的寄存器而是写入隐藏的寄存器RL_TH0(1)。这样可以巧妙地实现这样可以巧妙地实现16位重装载定时器。位重装载定时器。当读当读TH0(1)和和TL0(1)的内容时的内容时, 所读的内容就是所读的内容就是TH0(1)和和TL0(1)的内容的内容, 而不是而不是RL_TH0(1)和和RL_TL0(1)的内容。的内容。7.1.3 定时定时/计数器的工作方式计数器的工作方式通过对寄存器通过对寄存器TMOD中中M1、M0的设置,定时的设置,定时/计
30、数计数器有器有4种不同的工作方式:种不同的工作方式: 方式方式0: 16位自动重装方式位自动重装方式 方式方式1: 16位定时位定时/计数器方式计数器方式 方式方式2: 8位自动重装方式位自动重装方式 方式方式3: 留作备用留作备用26位号位号D7D6D5D4D3D2D1D0定时器名定时器名定时器定时器1定时器定时器0位名称位名称GATE C/M1 M0 GATE C/M1M0TT1、定时定时/计数器计数器0和和1的的工作方式工作方式0 (16位自动重装方式位自动重装方式)27图图7-4 定时器定时器0和和1的工作方式的工作方式0原理框图原理框图 当当GATE(TMOD.7)=0, TRx=1
31、启动启动定时器计数。当定时器计数。当GATE=1, 允许由外部允许由外部INTx高电平控制计数高电平控制计数, 可实现脉宽测量。可实现脉宽测量。INT_CLKO内内引脚引脚P3.5/T1/T0CLKOTMOD.2/.6TCON .4 /.6AUXR.7/.6引脚引脚P3. 4 / T0 / T1CLKOP3.5/T1/T0CLKOP3.4/T0/T1CLKO定时定时器的器的16位计数器位计数器定时定时器的器的16位位重装载寄重装载寄存器存器1、定时定时/计数器计数器0和和1的的工作方式工作方式0 (16位自动重装方式位自动重装方式)STC15F2K60S2的定时器有两种计数速率:一种是的定时器
32、有两种计数速率:一种是12T模式,每模式,每12个时钟加个时钟加1;另一种是;另一种是1T模式,每个模式,每个时钟加时钟加1。T0和和T1的速率分别由特殊功能寄存器的速率分别由特殊功能寄存器AUXR中的中的T0 x12 (AUXR.7)和和T1x12 (AUXR.6)决定。决定。 T0 x12=0,T0工作在工作在12T模式;模式; T0 x12=1,T0工作在工作在1T模式。模式。 T1x12=0,T1工作在工作在12T模式;模式; T1x12=1,T1则工作在则工作在1T模式。模式。281、定时定时/计数器计数器0和和1的的工作方式工作方式0 (16位自动重装方式位自动重装方式)如何实现如
33、何实现16位重装载定时器。位重装载定时器。定时器定时器0和和1分别有分别有2个个隐隐藏寄藏寄存器存器RL_THx和和RL_TLx。RL_THx与与THx共有同一个地址,共有同一个地址,RL_TLx与与TLx共有共有同一个地址同一个地址。当当TRx=0即定时器即定时器/计数器被禁止工作计数器被禁止工作时时, 对对TLx THx写入的内容会同时写入写入的内容会同时写入RL_TLx RL_THx。当当TRx=1即定时器即定时器/计数器工作计数器工作时时, 对对TLx THx写入的写入的内内容容实际实际上不上不是写入当前寄存是写入当前寄存器器TLx THx中中, 而是写而是写入隐藏的寄存入隐藏的寄存器
34、器(修改修改教材教材)不不会写入会写入RL_TLx RL_THx。(注注意该情形的前提条件是方式意该情形的前提条件是方式0)。29注意在方式注意在方式1时时, TRx=1时时,对对TLx THx的写的写, 是确实写入是确实写入当前寄存器当前寄存器TLx THx中。中。这里这里simulator和硬件仿真结果不同和硬件仿真结果不同1、定时定时/计数器计数器0和和1的的工作方式工作方式0 (16位自动重装方式位自动重装方式)当定时器工作在模式当定时器工作在模式0时,时,TLx, THx的的溢出不仅溢出不仅置位置位TFx,而且会自动将,而且会自动将RL_TLx, RL_THx的的内容重新装内容重新装
35、入入TLx, THx。当当位位T0CLKO (INT_CLKO.0)=1时时, 将将引脚引脚T1/P3.5 /T0CLKO配置配置为定时器为定时器0的时钟的时钟输出输出T0CLKO。当当位位T1CLKO (INT_CLKO.1)=1时时, 将将引脚引脚T0/P3.4 /T1CLKO配置配置为定时器为定时器1的时钟的时钟输出输出T1CLKO。30位号位号 D7 D6D5D4D3D2D1D0位名称位名称 - EX4EX3EX2 LVD_WAKE T2CLKO T1CLKOT0CLKO外部中断使能和时钟输出寄存器外部中断使能和时钟输出寄存器INT_CLKO2. 定时定时/计数器计数器0和和1的的工作
36、方式工作方式1(16位定时位定时/计数器方式计数器方式)图图7-5 定时器定时器0和和1的方式的方式1的原理框图的原理框图31不不能重装载计数初值能重装载计数初值(时间常数时间常数), 不能不能设置设置输输出出时钟时钟2. 定时定时/计数器计数器0和和1的的工作方式工作方式1(16位定时位定时/计数器方式计数器方式)此模式下此模式下, 定时器配置为定时器配置为16位计数器位计数器, 由由TLx的的8位和位和THx的的8位构成。位构成。TLx的的8位溢出向位溢出向THx进位进位, THx计数溢出置位计数溢出置位TCON中的溢出标志位中的溢出标志位TFx。 与与方式方式0的区别是的区别是, THx
37、计数溢出时计数溢出时, 不会重新不会重新装载时间常数。此外装载时间常数。此外, 本模式也不用于时钟输本模式也不用于时钟输出功能。出功能。323. 定时定时/计数器计数器0和和1的的工作方式工作方式2 (8位自动重装方式位自动重装方式)图图7-6 定时定时/计数器的工作方式计数器的工作方式2原理框图原理框图33除除了是了是8位计数且重位计数且重装载寄存器不同外装载寄存器不同外, 其他与方式其他与方式0类似类似3. 定时定时/计数器计数器0和和1的的工作方式工作方式2 (8位自动重装方式位自动重装方式)方式方式2是能自动重置初值的是能自动重置初值的8位定时位定时/计数器计数器,计数溢出,计数溢出后
38、具有后具有自动恢复初值自动恢复初值的功能。的功能。当当TL0/TL1计数溢出时计数溢出时, 不仅置位溢出标志不仅置位溢出标志TF0/TF1, 还自动将还自动将TH0/TH1的内容送入的内容送入TL0/TL1, 使使TL0/TL1从从初值开始重新计数。初值开始重新计数。用户可以通过程序把时间常数预置在用户可以通过程序把时间常数预置在TH0/TH1中中, 再再装入后装入后, TH0/TH1的内容保持不变。的内容保持不变。34当当位位T0CLKO (INT_CLKO.0)=1时时, 将将引脚引脚T1/P3.5 /T0CLKO配置为定时器配置为定时器0的时钟输出的时钟输出T0CLKO。当当位位T1CL
39、KO (INT_CLKO.1)=1时时, 将将引脚引脚T0/P3.4 /T1CLKO配置为定时器配置为定时器1的时钟输出的时钟输出T1CLKO。7.1.3 定时定时/计数器的工作方式计数器的工作方式在在自动装载时间常数自动装载时间常数的工作方式的工作方式0, 2中,用户不需要中,用户不需要在中断服务程序中重载定时常数,在中断服务程序中重载定时常数,可产生高精度的定可产生高精度的定时时间时时间,适合用作较精确的定时脉冲信号发生器,如,适合用作较精确的定时脉冲信号发生器,如波特率发生器波特率发生器等。等。特别是工作特别是工作方式方式0(16位自动重装方式位自动重装方式),实际工程),实际工程中应用
40、更加方便,因此,建议读者尽量使用方式中应用更加方便,因此,建议读者尽量使用方式0进进行定时器的应用设计。行定时器的应用设计。定时器定时器2的工作方式与定时器的工作方式与定时器0或或1的工作方式的工作方式0类似,类似,读者可参照上述内容自行学习。读者可参照上述内容自行学习。35注意注意: T2工作模式固定为工作模式固定为16位自动重装载模式位自动重装载模式。7.1.4 定时定时/计数器量程的扩展计数器量程的扩展 实际中需要的定时时间常数超过定时器的定时能力实际中需要的定时时间常数超过定时器的定时能力, 特特别当单片机系统时钟频率较高时别当单片机系统时钟频率较高时, 定时时长就更有限。定时时长就更
41、有限。为满足需要为满足需要, 经常需对单片机的定时能力进行扩展。经常需对单片机的定时能力进行扩展。361、定时器的最大定时能力、定时器的最大定时能力定时状态时,定时器是对时钟周期进行计数,若对定时状态时,定时器是对时钟周期进行计数,若对时钟进行时钟进行12分频,则每分频,则每12个时钟周期计数一次。个时钟周期计数一次。当晶振频率为当晶振频率为6MHz, 用用12分频时分频时, 计数的单位时间为:计数的单位时间为: 单位时间为:单位时间为:Tu= = s =2s 定时时间为定时时间为:Tc=XTu。其中,。其中,Tu为单位时间,为单位时间,Tc为定时时间,为定时时间,X为所需计为所需计数的次数的
42、次数值。数值。晶振频率126000000121、定时器的最大定时能力、定时器的最大定时能力STC15F2K60S2单片机的定时单片机的定时/计数器是加计数器是加1计数器。计数器。因此因此, 不能直接将实际的不能直接将实际的计数次数值计数次数值X作为计数初值送作为计数初值送入计数寄存器入计数寄存器THx、TLx中中, 而须将实际计数值先以而须将实际计数值先以28、216为模求补为模求补, 以补码作为以补码作为计数初值送入计数初值送入THx和和TLx。即应装入定时即应装入定时/计数器的计数器的计数初值计数初值为:为:Tu2cNTn37其中,其中,n=8或或16。单位单位时间:时间:Tu =2s定时
43、时间定时时间: Tc=XTu ,X为所需计数次数。为所需计数次数。X1、定时器的最大定时能力、定时器的最大定时能力例如例如: 已知已知Tu2s, 要求定时要求定时Tc1ms, 38对方式对方式0和方式和方式1, 计数初值计数初值: 216 - 500= 65036 =0FE0CH (THx装入装入FEH,TLx装入装入0CH)。)。 当系统时钟频率为当系统时钟频率为6MHz,12分频时分频时:8位定时器最大定时能力为位定时器最大定时能力为: T= (28 - 0)2s512s16位定时器最大定时能力为位定时器最大定时能力为: T= (216 - 0)2s =131072s131.072ms1m
44、s5002 s计数次数晶振频率为晶振频率为6MHz, 用用12分频时分频时则则:6000000122、定时量程的扩展、定时量程的扩展定时量程的扩展分为定时量程的扩展分为软件扩展软件扩展和和硬件扩展硬件扩展两种方法。两种方法。(1)软件扩展方法)软件扩展方法 软件扩展方法是在定时器中断服务程序中软件扩展方法是在定时器中断服务程序中对定时器中对定时器中断请求次数进行计数断请求次数进行计数,当中断请求次数达到要求值时,当中断请求次数达到要求值时才进行相应的处理。才进行相应的处理。39例如,某事件的处理周期为例如,某事件的处理周期为1s, 由于受到最大定时时间由于受到最大定时时间的限制,无法一次完成定
45、时。的限制,无法一次完成定时。可将定时器的定时时间设为可将定时器的定时时间设为10ms,启动定时器后,每,启动定时器后,每一次一次定时器溢出中断定时器溢出中断将产生将产生10ms的定时。的定时。在在中断服务程序中中断服务程序中对定时器中断次数进行计数对定时器中断次数进行计数,每计,每计数数100次进行一次事件处理,则可实现次进行一次事件处理,则可实现1s的定时效果。的定时效果。2、定时量程的扩展、定时量程的扩展(2)硬件扩展方法)硬件扩展方法硬件扩展方法可以使用外接通用定时器芯片对单片硬件扩展方法可以使用外接通用定时器芯片对单片机的定时能力进行扩展。机的定时能力进行扩展。也可以利用单片机自身的
46、资源对定时能力进行扩展。也可以利用单片机自身的资源对定时能力进行扩展。例如例如, 将两个定时器串联起来使用将两个定时器串联起来使用 (一个用于定时方一个用于定时方式式, 另一个用于计数方式另一个用于计数方式, 请分析其最大定时时间请分析其最大定时时间)。40当系统时钟频率为当系统时钟频率为6MHz,12分频时分频时:16位定时器最大定时能力为位定时器最大定时能力为: T =131.072ms两个串联最大两个串联最大定时定时时间时间: T = 216 131.072ms 8589.9 s由于该扩展方法占用较多的资源,较少采用。由于该扩展方法占用较多的资源,较少采用。7.1.5 定时定时/计数器编
47、程举例计数器编程举例 定时定时/计数器的应用若用中断方式计数器的应用若用中断方式, 编程需考虑两点:编程需考虑两点:正确初始化正确初始化: 包括写入控制字包括写入控制字, 时间常数计算并装入;时间常数计算并装入;中断服务程序的编写中断服务程序的编写: 编写需定时完成的任务代码。编写需定时完成的任务代码。41在定时在定时/计数器初始化部分的一般步骤大致如下计数器初始化部分的一般步骤大致如下:设置工作方式,将控制字写入设置工作方式,将控制字写入TMOD寄存器寄存器 (对对T0和和T1)或或AUXR(对对T2)。(注意注意TMOD不能进行位寻址不能进行位寻址)。设置分频方式,将控制字写入设置分频方式
48、,将控制字写入AUXR寄存器。默认的寄存器。默认的情况是情况是12分频(兼容传统分频(兼容传统8051单片机),如使用传统单片机),如使用传统8051单片机模式,无需设置。单片机模式,无需设置。T2固定为固定为16位自动重装载模式位自动重装载模式, 只设置定时只设置定时/计数和分频计数和分频。在定时在定时/计数器初始化部分的一般步骤大致:计数器初始化部分的一般步骤大致: 计算定时计算定时/计数初值计数初值, 并将其装入并将其装入TLx、THx寄存器寄存器(对于对于T0和和T1), 或或T2L、T2H寄存器寄存器(对于对于T2)。 置位置位ETx和和EA允许定时允许定时/计数器中断(若需要)。计
49、数器中断(若需要)。 置位置位TRx (对于对于T0和和T1) 或或T2R (对于对于T2) 以启动定以启动定时时/计数。计数。在中断服务程序中在中断服务程序中, 要注意计数初值的重新装入问题。要注意计数初值的重新装入问题。427.1.5 定时定时/计数器编程举例计数器编程举例 【例例7-1】 设系统时钟频率为设系统时钟频率为6MHz,利用,利用T0定时,每定时,每隔隔1s将将P2.0的状态取反。的状态取反。 解解:所要求定时时间所要求定时时间1s超过了定时器的定时能力超过了定时器的定时能力 (时钟频时钟频率为率为6MHz, 12分频时分频时, 16位定时器的最长定时时间为位定时器的最长定时时
50、间为131.072ms), 所以无法采用定时器直接实现所以无法采用定时器直接实现1s定时。定时。将定时器定时时间设为将定时器定时时间设为50ms, 在中断服务程序中对在中断服务程序中对定时器溢出中断请求进行计数定时器溢出中断请求进行计数, 当计够当计够20次时次时, 将将P2.0状态取反状态取反, 否则返回主程序否则返回主程序, 从而达到从而达到1s定时。定时。43【例例7-1】每隔每隔1s将将P2.0的状态取反的状态取反选择选择T0为为16位定时器方式位定时器方式, 方式字为方式字为01H。系统时钟频。系统时钟频率为率为6MHz, 12分频时分频时, 计数单位时间间隔为计数单位时间间隔为2s
51、。T0的的计数初值为:计数初值为:1636TcXM2(50 10 )/(2 10 )Tu4465536 25000405369E58H$INCLUDE (STC15.INC) ;包含包含STC15F2k寄存器定义文件寄存器定义文件 ORG 0000H LJMP MAIN ;转主程序转主程序 ORG 000BH ;T0中断服务程序入口地址中断服务程序入口地址 LJMP T0_ISR ORG 0100HMAIN: MOV SP, #7F60H ;设置堆栈指针设置堆栈指针 MOV TMOD, #01H ;T0初始初始化化, 方式方式1, 16位定时器方式位定时器方式 汇编程序:汇编程序:TH0,TL
52、0【例例7-1】 MOV TL0, #58H ;计数初计数初值值9E58H MOV TH0, #9EH ; 装入时间常数装入时间常数 MOV A, #20 ; A置初值置初值20, 计数计数定时中断次数定时中断次数 SETB ET0 ;允外允外T0中断中断 SETB EA ;CPU开中断开中断 SETB TR0 ;启动启动T0计数计数 SJMP $ ;等待等待45T0_ISR:MOV TL0, #58H ; MOV TH0, #9EH;需重新装入时间常数需重新装入时间常数 DEC A ; 累加器累加器A内容减内容减1 JNZ EXIT CPL P2.0 ;计计时时1s到到, 将将P2.0的的状
53、态取反状态取反 MOV A, #20 ;累加器累加器A重载重载20EXIT: RETI END头文头文件有定义件有定义: P2 DATA 0A0H ;P2.0(或或P20)可直接用可直接用, C语言不能语言不能直接直接用用头文头文件有定义件有定义: ET0 BIT 0A9HEA BIT 0AFHTR0 BIT 8CH对对16位定时器方位定时器方式式(方式方式1)T0中断中断服务程服务程序入口序入口【例例7-1】每隔每隔1s将将P2.0的状态取反。的状态取反。C语言程序语言程序: 46#include “stc15.h” /包含包含STC15F2k60S2寄存器定义文件寄存器定义文件sbit P
54、20=P20; /声明声明P2.0的引脚位变量的引脚位变量, 不能直接用不能直接用P20 unsigned char i; /声明计数变量。声明计数变量。C程序中尽量不要用程序中尽量不要用ACCvoid main (void) /SP=0 x60; /用用C语言设计程序语言设计程序,可不设置堆栈指针可不设置堆栈指针 TMOD=0 x01; TL0=0 x58; TH0=0 x9E; i=20; /定时中断次数计数变量赋初值定时中断次数计数变量赋初值, 中服中减一计数中服中减一计数 ET0=1;/允许允许T0中断中断 EA = 1;/开放总的中断开放总的中断TR0=1;/启动启动T0计数计数 w
55、hile(1); /等待中断等待中断头文头文件有定义件有定义: sfr P2 0 xA0;头文头文件有定义件有定义: sbit ET0=IE1sbit EA=IE7sbit TR0=TCON4头文头文件有定义件有定义: sfr TMOD=0 x89; sfr TL0=0 x8A; sfr TH0=0 x8C;【例例7-1】每隔每隔1s将将P2.0的状态取反。的状态取反。C语言程序语言程序:void T0_ISR (void) interrupt 1 /定时器定时器T0中断中断服务服务函数函数TL0=0 x58; /重新装入时间常数重新装入时间常数 TH0=0 x9E; i-; /定时中断定时中
56、断次数计数变量次数计数变量(初值初值20)减减1if(i=0) /若减到若减到0,则将,则将P2.0取反取反P20 = !P20; /将将P2.0取取反反, 不能直接用不能直接用P20 (P2.0)i = 20; /重新给计数变量赋值重新给计数变量赋值 47【例例7-1】每隔每隔1s将将P2.0的状态取反。的状态取反。48若用工作若用工作方式方式0 (16位自动装载位自动装载), 则上述程序除将则上述程序除将TMOD值值设置为设置为0外外, 中断服务程序中中断服务程序中, 不需重新装入时不需重新装入时间常数间常数, 即:即:汇编语言程序中断服务程序中可省去下面两句:汇编语言程序中断服务程序中可
57、省去下面两句: MOV TL0, #58H MOV TH0, #9EH ;重新装入时间常数重新装入时间常数在在C语言程序的中断服务程序中可省去下面两句:语言程序的中断服务程序中可省去下面两句: TL0=0 x58; TH0=0 x9E; /重新装入时间常数重新装入时间常数其他部分的程序不变。其他部分的程序不变。对于对于1T模式的使用,请读者自行实验学习。模式的使用,请读者自行实验学习。思考思考: 若晶振频率改为若晶振频率改为11.0592MHz, 时间常数时间常数应为多少应为多少? 例例7-1 设时钟频率设时钟频率11.0592MHz,利用利用T0定时,每隔定时,每隔1s将将P2.0的状态取反
58、。的状态取反。491s定时时间超过了定时器的定时能力定时时间超过了定时器的定时能力 (时钟频率为时钟频率为11.0592MHz, 12分频时分频时, 16位定时器的最长定时时间为位定时器的最长定时时间为71.111ms), 所以无法采用定时器直接实现所以无法采用定时器直接实现1s定时。定时。将定时器定时时间设为将定时器定时时间设为50ms, 在中断服务程序中对定在中断服务程序中对定时器溢出中断请求进行计数时器溢出中断请求进行计数, 当计够当计够20次时次时, 将将P2.0状状态取反态取反, 否则返回主程序否则返回主程序, 从而达到从而达到1s定时。定时。时间常数应为多少时间常数应为多少?163
59、6TcXM2(50 10 )/(12/11.0592 10 )Tu6553646080194564C00HT0的计数初值为:的计数初值为: 例例7-2设时钟频率设时钟频率18.432MHz, 用用定时器定时器2定时定时, 使使P0.0口输出口输出38.4KHZ方波。方波。$INCLUDE (STC15.INC) ;包含寄存器定义文件包含寄存器定义文件 ;定义定义38.4KHz时的时间常数时的时间常数 (65536-18432000/12/38400/2)T38_4KHz EQU 0FFECHTEST_PIN BIT P0.0 ;测试引脚定义测试引脚定义 ORG0000H LJMPMAIN OR
60、G0063H ;定时器定时器2的中断服务程序入口地址的中断服务程序入口地址 LJMPT2_ISR50汇编代码如下:汇编代码如下:TcXMTu1/38400/212/1843200012分频用分频用12,不不分频时用分频时用1注意注意: 这里的时间常数是按对时这里的时间常数是按对时钟频率进行钟频率进行12分分频后计算出的频后计算出的例例7-2用定时器用定时器2定时定时,使使P0.0口输出口输出38.4KHZ方波方波MAIN: MOV SP, #70H ;设置堆栈指针设置堆栈指针 ;ORL AUXR, #04H;设置设置T2为为1T不分频不分频 MOV T2H, #HIGH T38_4KHz ;设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年神经科学实验工程师神经退行性变机制研究
- 安全滑冰:快乐运动安全同行
- 数字化人力资源绩效管理方案
- 城市供水等配套基础设施建设项目社会稳定风险评估报告
- 建筑装饰施工废弃物管理方案
- 排水管道接头与维修技术方案
- 小手拉大手 植树齐步走2026年植树节主题教育课件
- (2026年)危重患者的评估与护理
- 播种绿色希望共筑生态家园2026植树节环保宣传课件
- 2025年考研353流行病学真题及答案解析
- 2026年内蒙古呼伦贝尔市单招职业适应性测试题库及答案详解(夺冠)
- 2026福建厦门大学人工智能研究院行政管理人员招聘1人考试参考题库及答案解析
- 2025浙江嘉兴市申嘉有轨电车运营管理有限公司公开招聘工作人员55名笔试历年难易错考点试卷带答案解析2套试卷
- 调研报告:国有企业薪酬管理存在的问题及建议
- 【《基于单片机的酒店环境监控系统设计与实现》14000字(论文)】
- 消毒供应中心清洗技术及应用
- 2026年及未来5年市场数据中国广东生猪屠宰行业市场调查研究及投资策略研究报告
- 工业通信技术
- 网约车安全生产培训会议课件
- (2025版)远程机器人手术操作指南解读课件
- 阳极余热锅炉缺水应急处置方案
评论
0/150
提交评论