第8章 定时器计数器

合集下载

单片机原理及应用课件教学配套课件陈桂友孙同景第8章定时计数器

单片机原理及应用课件教学配套课件陈桂友孙同景第8章定时计数器
单片机原理及应用
1/45
第8章 定时/计数器
8.1 8051单片机的定时/计数器
8.2 MSC1211的定时器与脉宽调制
5:04:06
版权所有。
单片机原理及应用
2/45
在计算机控制中可供选择的定时方法
(1)软件定时
执行一个循环程序来实现。
(2)硬件定时
定时全部由硬件电路完成,不占用CPU时间, 但需要通过改变电路的元件参数来调节定时时 间,在使用控制上不够方便,同时增加了开发成 本。
5:04:06
TL0 TH0 (低5位) (8位)
TF0
中断
控制
TL0 TH0 (低8位) (8位)
TF0
控制
中断
版权所有。
单片机原理及应用
方式2 OSC 12分频
T0(P3.4)
C/T=0 C/T=1
TR0
GATE INT0(P3.2)
方式3
OSC T0(P3.4)
定时器工作方式控制寄存器TMOD
地址
D7
D6 D5 D4
D3
D2
D1
D0 复位值
定时器1
定时器0
89H GATE C/ T
M1
M0 GATE C/ T
M1 M0
00H
定时器控制寄存器 TCON
地址
D7 D6
D5
D4
D3
D2
D1
D0 复位值
88H TF1 TR1 TF0 TR0 IE1
IT1IE0I源自08/454、定时/计数器量程的扩展
8051单片机中提供的定时/计数器可以使用户很方便地实现定时和对外 部事件计数。但是在实际应用中,需要的定时时间或计数值可能超过定时/ 计数器的定时或计数能力,特别是8051单片机的系统时钟频率较高时,定时 能力就更为有限。为了满足需要,有时需要对8051单片机的定时计数能力进 行扩展。定时能力和计数能力扩展的方法相同,在此主要对定时能力的扩展 进行讨论,计数能力的扩展可参考定时能力扩展的方法进行。

微型计算机原理及接口技术第8章8253

微型计算机原理及接口技术第8章8253

计数器/定时器的内部结构
8253内部包含三个完全一样的计数器/定时器通道, 每个通道的工作是完全独立的
每个通道包含:
① 一个8位控制字寄存器:由编程设定该通道的工作方式、读 写格式和数制
② 一个16位计数初值寄存器:由程序设定初始计数值,可分 成高8位和低8位两个部分,可作8位寄存器使用
③ 一个计数器执行部件(实际的计数器):实际上是一个16 位减法计数器,它的起始值是初始寄存器的值,由程序设 定。可分成高8位和低8位两个部分
优点:电路结构简单,价格便宜,通过 改变电阻或电容值,可以在一定的定时 范围内改变定时时间
缺点:电路在硬件已连接好的情况下, 定时时间和范围就不能由程序来控制和 改变,而且定时精度也不高
555定时器外部引脚和内部结构
可编程硬件定时
定时原理:利用可编程定时器/计数器芯 片附加硬件电路实现定时
输出信号的波形由工作方式决定,同时还要受 到GATE引脚上的门控信号控制,它决定是否 允许计数
计数器/定时器的定时功能
当加到CLK引脚上的脉冲为精确的时钟脉 冲,可实现定时的功能。
定时时间决定于计数脉冲的频率和计数 器的初值。
定时时间=时钟脉冲周期×预置的计数初值
计数器/定时器的计数功能
方式1:可编程单稳态输出方式
写入控制字后OUT初始状态:高电平 门控信号GATE的作用:①高电平或低电平均不起作用;
②只有在GATE发生由低到高的正跳变,输出OUT由高
到低跳变,并开始计数;③在计数过程中,若GATE产 生负跳变,不影响计数;④在计数器回0之前,GATE 又产生由低到高的正跳变,8253又将初始值装入,重 新开始计数,使生成脉冲加宽。 计数过程中OUT状态:保持低电平 计数结束OUT状态:发生由低到高的正跳变。 计数器回0后,是否重新计数:否 应用:用于定时

认识单片机的定时器计数器

认识单片机的定时器计数器

void main(void) { TMOD=0x01;
TH0=-25000/256; TL0=-25000%256; TR0=1; ET0=1; EA=1; while(1); } void timer0(void) interrupt 1 { TH0=-25000/256;
TL0=-25000%256; P10=~P10; }
根据定时时间T,及公式(1)、(2)分别可以求出初 值N为:
方式1: N=216-T×fosc/12
(3)
方式2、方式3 :N=28-T×fosc/12 (4)
如果fosc=12MHZ,以上公式可简化为
方式1: N=216-T
方式2、方式3 :N=28-T
例如:系统的时钟频率是12MHz,在方式1下,如果希望定时 器/计数器T0的定时时间T为10ms,则初值N =216-T=6553610000=55536
任务一、认识单片机的定时器/计数器
一、定时器/计数器及其应用 在单片机应用系统中,定时或计数是必不可少的。例如: 测量一个脉冲信号的频率、周期,或者统计一段时间里 电机转动了多少圈等。常用的定时方法有:
1、软件定时 软件定时是依靠执行一段程序来实现的,这段程序本身 没有具体的意义,通过选择恰当的指令及循环次数实现 所需的定时,由于执行每条指令都需一定的时间,执行 这段程序所需总的时间就是定时时间。 软件定时的特点是无需硬件电路,但定时期间CPU被占 用,增加了CPU的开销,因此定时时间不宜过长,而且 定时期间如果发生中断,定时时间就会出现误差。
led=_crol_(led,1); 满10次变量led左移1位送P0口
P0=led;
}
}
[案例3] 用定时器的计数方式实现外部中断。如图 所示,P0口控制8只发光管轮流点亮,发光管点 亮时间为500ms,单脉冲电路控制发光管的移动 方向,按下单脉冲按钮,发光管左移,再按下发 光管右移 。

第8章计数器8253

第8章计数器8253

OUT DX, AL;写入工作方式控制字
MOV AL, 46H;计数值的低字节
MOV DX, 04C0H;设置8253计数器0地址
OUT DX, AL;写入计数值的低字节
MOV AL, 10110100B;二进制,方式2,写入16位数,计数器2
MOV DX, 04C6H;控制口地址
OUT DX, AL
(1) 输出锁存器锁存或停止计数以保存当前计数值 读出当前的计数值有两种方法: ① 把当前计数值输出的锁存器锁存 ② 通过GATE门控信号发一低电平信号,使计数 执行单元不作减1操作,计数过程停止。
9
(2) 从输出锁存器读数
注意:读8位和读16位的问题
若是读16位的数据,需分两次读出。
先读低字节,再读高字节,即执行两次输入指令。
moval30h控制字送almovdx126h控制口地址送dxoutdxal向控制口写入控制字moval88h低8位计数值是88hmovdx120h通道0端口地址送dxoutdxal向通道0写入计数初值的低8位moval66h高8位计数值为66houtdxal向通道0写入计数初值的高8位21例假设8253的计数器0工作在方式5按二进制计数计数初值为46h
方式2、方式3中,可用电平触发,也可上升沿触发。
13
1. 方式0——计数结束产生中断
该方式下,门控信号决定计数的停止或继续,装入 初值决定计数过程重新开始。计数过程波形图为:
14
2. 方式1——可重复触发的单稳态触发器 该方式是在门控信号的作用下才开始计数
15
3. 方式2——分频器 该方式下用门控信号达到同步计数的目的
16
4. 方式3——方波发生器 工作过程同方式2,只是输出的脉宽不同。

51单片机定时器的使用和详细讲解_特别是定时器2

51单片机定时器的使用和详细讲解_特别是定时器2

GATE=0 定时器不受控
于外部信号;仅打开与门,
是定时器仅有TR位控制;
GATE=1 定时器受控于外
部信号,此时要求TR=1;
图8-4 方式0结构图
16
第十六页,编辑于星期三:四点 二十三分。
例题:生成周期为1.2 ms的等宽正方波。机器晶振 26.67MHz。使用T0以方式0工作,由P0.0输出
8.4 定时器T2 8.4.1 概述 定时器2 是一个16 位通用计数器,其具有两种
操作模式:16 位自动重载模式和16 位捕获模
式。
如果预分频功能被禁止,定时器2工作时,16 位通用加法计数器以12分频的周期脉冲计数,每 个周期16位通用加法计数器加1或减1。
30
第三十页,编辑于星期三:四点 二十三分。
模式2的结构图如图8-6所示。
8位加法 计数器
图8-6 方式2结构图
初值寄存 器
22
第二十二页,编辑于星期三:四点 二十三分。
4.工作模式3 当T0M(T1M)=11时定时器设定为工作模式3,只有定时
器0可以工作在工作模式3下。如把定时器1设置为工作 模式3,则定时器1停止工作。 TL0、TH0成为两个独立的8位加法计数器。它的工作情况 与模式0、模式1类似,差别在于定时范围为:
7
第七页,编辑于星期三:四点 二十三分。
1.16位加法计数器
16位加法计数器是定时器的核心,图8-1中用寄存 器TH0、TL0及TH1、TL1表示。
T0加法计数器的高8位和低8位分别用TH0、TL0表示 T1加法计数器的高8位和低8位分别用TH1、TL1 表示 高8位和第8为可分别单独使用
中断服务程序除了完成要求的方波产生这一工作之外, 还要注意将时间常数重新送入T1中,为下一次产生中 断作准备。

定时计数器

定时计数器
) (8位)
T1端 TR1 GATE l
≥l
TF1
中断
C/T=1 &
控制
INT1端
2.工作方式1 ( M1M0=01 ,16位定时器/计数器) 由TH1和TL1构成16位加1计数器,其他特性与工作 方式0相同。
振荡器 ÷12 C/T=0 TL1 (8位) T1端 TR1 GATE INT1端 l ≥l TH1 (8位)
第6章
定时/计数器
P132
定时/计数器的结构及工作原理 定时/计数器的工作方式 定时/计数器方式和控制寄存器 定时/计数器的编程举例
6.1 概述
在测量控制系统中,常需要有实时时钟和计数器,以实现 定时(或延时)控制以及对外界事件进行计数。 一、常用的定时(或延时)方法: 软件延时:利用执行一个循环程序进行时间延迟。其特点是 定时时间精确,不需外加硬件电路,但占用CPU时间。因此软 件定时的时间不宜过长。 硬件定时:利用硬件电路实现定时。其特点是不占用CPU时 间,通过改变电路元器件参数来调节定时,但使用不够灵活方 便。对于时间较长的定时,常用硬件电路来实现。 可编程定时器/计数器(硬件+软件):通过专用的定时器/ 计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实 现定时,定时时间可通过程序设定的方法改变,使用灵活方 便。也可实现对外部脉冲的计数功能。
TL0,#83H P1.0 TH0,#06H P1.1
;送方式字 ;送时间常数 ;送时间常数 ;送控制宇 ;送中断控制字
;等待中断
;重装时间常数 ;控制方波倒相 ;重装时间常数 ;控制方波倒相
RETI DONE2: MOV CPL RETI
【*例3】试用T1方式2编制程序,在P1.0引脚输出周 期为400S的脉冲方波,已知fosc=12MHZ。

可编程定时器计数器8253及其应用

可编程定时器计数器8253及其应用

第八章可编程定时器/计数器8253及其应用【回顾】可编程芯片的概念,端口的概念。

【本讲重点】定时与计数的基本概念及其意义,定时/计数器芯片Intel8253的性能概述,内、外部结构及其与CPU的连接。

8.1 定时与计数1.定时与计数在微机系统或智能化仪器仪表的工作过程中,经常需要使系统处于定时工作状态,或者对外部过程进行计数。

定时或计数的工作实质均体现为对脉冲信号的计数,如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程即为定时,如果计数的对象是与外部过程相对应的脉冲信号(周期可以不相等),则此时即为计数。

2.定时与计数的实现方法(1) 硬件法专门设计一套电路用以实现定时与计数,特点是需要花费一定硬设备,而且当电路制成之后,定时值及计数范围不能改变。

(2) 软件法利用一段延时子程序来实现定时操作,特点,无需太多的硬设备,控制比较方便,但在定时期间,CPU不能从事其它工作,降低了机器的利用率。

(3) 软、硬件结合法即设计一种专门的具有可编程特性的芯片,来控制定时和计数的操作,而这些芯片,具有中断控制能力,定时、计数到时能产生中断请求信号,因而定时期间不影响CPU的正常工作。

8.2 定时/计数器芯片Intel8253Intel8253是8086微机系统常用的定时/计数器芯片,它具有定时与计数两大功能。

一、8253的一般性能概述1.每个8253芯片有3个独立的16位计数器通道;2.每个计数器通道都可以按照二进制或二—十进制(BCD码)计数;3.每个计数器的计数速率可以高达2MHz;4.每个通道有6种工作方式,可以由程序设定和改变;5.所有的输入、输出电平都与TTL兼容。

二、8253内部结构8253的内部结构如图8-1所示,它主要包括以下几个主要部分:图8-1 8253的内部结构1.数据总线缓冲器实现8253与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8253的控制信息、数据信息以及CPU从8253读取的状态信息,包括某时刻的实时计数值。

第八章 可编程计数器定时器8253及其应用

第八章 可编程计数器定时器8253及其应用
WR
LSB=4 CR=4
CLK GATE
OUT CRCE 4 CRCE 2 4 CRCE 2 4 CRCE 2 4 CRCE 2 4
8253方式3 计数初值为奇数时的波形 CW=16H WR LSB=5
CR=5
CLK GATE OUT
CRCE
5 4
CRCE 2 5 2
CRCE 5 4
CRCE 4 3
8253方式0
两种特殊情况:
中途改变计数初值
CW=10H WR CR=3 CLK GATE OUT CR=3 LSB=3
LSB=3
CRCE 3 2
CRCE 1 3 2
1
0
8253方式1
2、方式1——可编程单稳态输出方式
时序图
CW=12H WR
LSB=3 CR=3
CLK GATE
OUT
CRCE
CRCE 3 2
1
0
8253方式1
工作过程
① 写入控制字,OUT立即变为高,并保持不变。 ② 写计数初值N,只有当GATE形成一个上升沿时,才在
下一个时钟脉冲的下降沿,将n装入实际计数器,同 时OUT由高变为低,开始减1计数(再来一个脉冲)。
③ 计数期间,OUT一直为低;当计数结束(计数值为0)
8253综述
Intel 8253是一种可编程的计数器/定时器芯片。 8253内部具有3个独立的16位计数器通道,通过对
它进行编程,每个计数器通道均有6种工作方式,并 且都可以按2进制或10进制2种格式进行计数,最高 计数频率能达到2MHz。 8253还可用作可编程方波频 率产生器、分频器、程控单脉冲发生器等。
教材第八章内容
第八章 可编程计数器/定时器8253及应用

第八章 STM32定时器

第八章 STM32定时器
/*对C端口初始化,即0,1,2,3管脚输出0*/
GPIO_ResetBits(GPIOC,GPIO_Pin_0); GPIO_ResetBits(GPIOC,GPIO_Pin_1); GPIO_ResetBits(GPIOC,GPIO_Pin_2); GPIO_ResetBits(GPIOC,GPIO_Pin_3); }
TIM_Perscaler:用户设定的预分频系数, 其值范围从0~65535,为1999
8.7 TIM2应用实例概述
void Timer_Configuration(void) { /*定义TIM结构体变量*/ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_DeInit(TIM2); TIM_TimeBaseStructure.TIM_Period=35999; TIM_TimeBaseStructure.TIM_Prescaler=1999; TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure); TIM_ClearFlag(TIM2,TIM_FLAG_Update); TIM_Cmd(TIM2,ENABLE);
8.7 TIM2应用实例概述
4.定时器的初始化
定时时间T的计算公式: T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK =(35999+1)*(1999+1)/72MHz=1s

第八章__定时器计数器8253

第八章__定时器计数器8253

3.
引脚及其功能
• 数据线D7~D0:双向、三态。用于将8253/8254芯片与 系统数据总线相连,在芯片与CPU之间传送数据、命令 、状态信息。 • A1A0:片内端口选择线,输入。这两根线一般接到系 统地址总线的A1、A0 上。当-CS=0时8253/8254芯片被 选中,这两位地址线用来选择片内四个端口地址(三个 计数器的端口和一个控制字寄存端口),以便进行读写。 (当A1A0=00、01、10时,分别选计0、计1、计2) • 当A1A0=11时选中片内的控制寄存器,将命令字写入其 中。该控制寄存器只写,不可读。 • CLK:计数器时钟(计数脉冲)输入端。三个独立的 计数器,各自有一个独立的输入时钟脉冲信号CLK0、 CLK1、CLK2,每输入一个时钟脉冲信号CLK,计数器 中同步递减计数器CE的当前计数值便减1,进行计数或 定时控制。
2.
方式1(可编程单脉冲发生器)
• 在该方式中,写入方式命令字和装入计数初 值到计数寄存器后,计数器输出端OUT为高 电平。在GATE输入端出现一个上升沿后,计 数器使输出端OUT降为低电平,开始计数; 当计数值减到0,输出端恢复为高电平,完成 一个单脉冲输出过程。 显然输出端负脉冲的宽度与计数值的大小有 关,设预置计数值为N,计数时钟周期为TCLK, 那么输出负脉冲宽度就是N×TCLK。所以这是 一个可编程控制的单稳态发生器,如下图所 示。
(1) 控制字写入计数器时,所有的控制逻辑电路立即复位, 输出端OUT进入初始状态。该初始状态与工作方式有关, 设置成方式0时,OUT的初始状态为低电平,设置成其他工 作方式,OUT的初始状态为高电平。 (2) 初始值写入初值计数器CR以后,要经过一个时钟脉冲的 上升沿和下降沿,将初值送入计数执行单元,计数执行单 元从下一个时钟开始进行计数。 (3) 通常,在时钟脉冲CLK的上升沿对门控信号GATE进行采 样,各计数器的门控信号的触发方式与工作方式有关。在 方式0、方式4中,门控信号为电平触发;方式1、方式5中, 门控信号为上升沿触发;方式2、方式3中,即可用电平触 发,也可用上升沿触发。 (4) 在时钟脉冲的下降沿计数器进行计数。0是计数器所能 容纳的最大初值,因为用二进制计数时,16位计数器,0 相当于216,用BCD码计数时,0相当于104。

AVR单片机定时计数器的结构与应用探素

AVR单片机定时计数器的结构与应用探素
OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0
位0——TOV0(Overflow) T/C0溢出中断标志。当T/C0 产 生溢出时,该位自动置1,向CPU提出溢出中断请求,该中 断得以处理后,该位硬件自动清0,用户也可对其写1清0
位1——OCF0 T/C0 输出比较匹配中断标志。当T/C0比 较匹配成功,OCF0置1,向CPU提出比较匹配中断请求, 该中断得以处理后,该位硬件自动清0,用户也可对其写1 清0
引入
• 先回顾学习51单片机时,定时器的中断 如何产生的?
第8章 定时/计数器实例解析
• 本章重点: • 1.了解AVR定时/计数器的特点 • 2.学会对定时/计数器的相关寄存器进行配置 • 3. 掌握AVR定时/计数器的工作模式 • 本章难点: • 掌握定时/计数器的PWM模式,T/C1的输入
捕捉功能
PORTB|=(1<<PB0); // PB0配置为 ,PB0 上拉电阻
}
/********定时器0初始化函数********/
void timer0_init()
{
SREG = 0x80; //使能全局中断
TIMSK|=(1<<TOIE0); //使能T0溢出中断
TCCR0|=
; //T/C0工作于普通模式,上升沿触发
实例解析1—T/C0计数实验
使用T/C0进行计数,T0(PB0)为外部计数输入端,每计一 次,PA口所接的八个LED灯状态改变一次。
设计思路:设置TCNT1的初值为0XFF,当有外部计数信 号输入时,计数值加1,产生溢出中断,进入T/C0溢出中断函 数,在溢出中断函数中,使PA口取反,LED灯状态改变一次。
定时计数器的应用

第八章 可编程计数器定时器8253及其应用

第八章 可编程计数器定时器8253及其应用
6
习题 CH8 8253
答(续上题): 计数器1工作在方式2,即分频器的方式.输出波形的频 率f=fclk/N=2MHZ/3000=666.7HZ,其周期为1.5ms,输出负 脉冲的宽度等于CLK的周期为0.5s. 方式3,即方波发生器的方式.输出频率 f=2MHZ/1000=2000Hz的对称方波. 三个OUT的输出波形如下:
3kHz +5V
产品计数脉冲
+5V
装箱脉冲
1
习题 CH8 8253
1.写出相关定时/计数器的工作方式,并简述理由. 答:T0的工作方式为1,因为方式1需要外触发才能计数,并且 在计数过程中OUT端输出低电平(2分) T1的工作方式为0, 因为方式0下计数器计数结束后,输出一个上升沿.(2分) 2.计算相关定时/计数器的计数初值. 答:计数器0的初值等于2秒钟计数的个数,即6000.(1分) 计数器1的初值等于19.(1分)
5
习题 CH8 8253
设8253的计数器0,工作在方式1,计数初值为2050H; 计数器1,工作在方式2,计数初值为3000;计数器2,工 作在方式3,计数初值为1000.如果三个计数器的GATE都 接高电平,三个计数器的CLK都接2MHz时钟信号,试画出 OUT0,OUT1,OUT2的输出波形. 答:计数器0工作在方式1,即可编程单稳态方式.这种方 式下, GATE必须有个上升沿,计数器才能启动.而GATE 接了高电平,当方式控制字写入后OUT0变高,计数器无 法启动,所以OUT0一直为高电平.
2
习题 CH8 8253
3.编写8253的初始化程序片断(8253占用地址90H~93H). 答:
MOV AL,00110011B ;通道0,方式1,BCD OUT 93H,AL MOV AL,00H OUT 90H,AL MOV AL,60H OUT 90H,AL OUT 93H,AL MOV AL,19 OUT 91H,AL (1分)

单片机中的定时器和计数器

单片机中的定时器和计数器

单片机中的定时器和计数器单片机作为一种嵌入式系统的核心部件,在各个领域都发挥着重要的作用。

其中,定时器和计数器作为单片机中常用的功能模块,被广泛应用于各种实际场景中。

本文将介绍单片机中的定时器和计数器的原理、使用方法以及在实际应用中的一些典型案例。

一、定时器的原理和使用方法定时器是单片机中常见的一个功能模块,它可以用来产生一定时间间隔的中断信号,以实现对时间的计量和控制。

定时器一般由一个计数器和一组控制寄存器组成。

具体来说,定时器根据计数器的累加值来判断时间是否到达设定的阈值,并在时间到达时产生中断信号。

在单片机中,定时器的使用方法如下:1. 设置定时器的工作模式:包括工作在定时模式还是计数模式,以及选择时钟源等。

2. 设置定时器的阈值:即需要计时的时间间隔。

3. 启动定时器:通过控制寄存器来启动定时器的运行。

4. 等待定时器中断:当定时器计数器的累加值达到设定的阈值时,会产生中断信号,可以通过中断服务函数来进行相应的处理。

二、计数器的原理和使用方法计数器是单片机中另一个常见的功能模块,它主要用于记录一个事件的发生次数。

计数器一般由一个计数寄存器和一组控制寄存器组成。

计数器可以通过外部信号的输入来触发计数,并且可以根据需要进行计数器的清零、暂停和启动操作。

在单片机中,计数器的使用方法如下:1. 设置计数器的工作模式:包括工作在计数上升沿触发模式还是计数下降沿触发模式,以及选择计数方向等。

2. 设置计数器的初始值:即计数器开始计数的初始值。

3. 启动计数器:通过控制寄存器来启动计数器的运行。

4. 根据需要进行清零、暂停和启动操作:可以通过控制寄存器来实现计数器的清零、暂停和启动操作。

三、定时器和计数器的应用案例1. 蜂鸣器定时器控制:通过定时器模块产生一定频率的方波信号,控制蜂鸣器的鸣叫时间和静默时间,实现声音的产生和控制。

2. LED呼吸灯控制:通过定时器模块和计数器模块配合使用,控制LED的亮度实现呼吸灯效果。

单片机-AT89S52定时器计数器资料

单片机-AT89S52定时器计数器资料

TR1=1;
/* 启动 T1 运行 */
33
编程实现(查询方式)
for(; ;)
/* 无限循环作为main的结束 */
{
/* 如果要输出高电平,则输出高电平,4*50ms,下一次将为低电平;
否则输出低电平,16*50ms,下一次将为高电平 */
if (will_be _high)
{overflow_counter=4; SQW=1; will_be _high=0;}
24
分析: 50Hz的方波,周期为1/50=20ms
3、计算初值 TC=65536-10ms/1us=55536=0D8F0H
25
编程实现(查询方式)
#include <reg51.h>
//要用到SFR
sbit SQW=P1^7;
/*定义输出方波引脚*/
main()
{
TMOD=0x01;
/* T0 模式1, 定时, GATE=0 */
第8章 定时器/计数器
第一节 概述 第二节 模式0、模式1及其应用 第三节 模式2及其应用 第四节 模式3及其应用 第五节 定时器/计数器2
1
第一节 概述
回忆8051结构特点:由单一内部总线连接各功能模 块,通过特殊功能寄存器(SFR)集中控制。嵌入式结 构,不同型号引脚定义和SFR定义有所不同,因此,从 两个方面来认识和掌握某一个功能模块。
} //end of for(; ;)
}//end of main
34
编程实现(中断方式)
#include <reg51.h>
//要用到SFR
sbit SQW=P1^0;
/*定义输出方波引脚*/

定时计数器

定时计数器

这一讲我们了解定时/计数器的作用和原理我先讲一下什么是定时器单片机就是"放在一个芯片里的计算机" ,所以光有CPU还不算单片机,还需要有内存,外存,输入输出接口和外部设备,这个芯片里就有一台完整的小电脑了.所以叫"单个芯片的计算机" 简称单片机内存,外存,输入输出我们都好理解,外部设备有哪些呢?主要就是串行通信控制器(串口)和定时/计数器今天这课就是讲定时/计数器定时/计数器是即能定时,又能计数的器件单片机不能完全靠人来控制比如你按什么键它就执行什么事,那么你不按呢?它就傻等着,这可不行,那么我们给单片机制定了工作日程表,总不能一直用人盯着提醒它做什么吧。

这样我们给它提供了一个闹钟,就是这个定时器,我们把要做的时安排好时间,然后定时器到了时间就提醒CPU做该做的事,这样就自动化了再说计数器如果用单片机来计数,一般可以通过用CPU来计算,可是这样一来,CPU就不能集中精力做事了比如它想知道生产线上一共传送了多少个产品,那么有一个办法就是让它一直等,有一个产品它就计数加1,可是它也不知道下一个产品什么时候来,所以只好一直等,那它就没办法专心做别的事了,开发人员想了,干脆给它派个助手吧,专门在那等着计数,然后CPU 也不管它计了多少,什么时候想知道了就到计数器那里去问一下。

定时器和计数器其实是一回事!!!只不过定时器是对系统的时钟信号进行计数。

我们通常用用电是200V 50HZ 我想前面那个我不用解释了吧。

后面那个的意思就是一秒钟有50次的频率。

也就是50HZ。

那么6M也就是6MHZ也就是600万次的频率。

也就是说一秒钟600万次。

比如我们用6M的晶振,那么12个时钟周期执行一条指令。

就是一个指令周期。

我们用计数器对指令周期计数。

6M=600万600万/12=500K (k是指千)就是一秒钟有500K个指令周期。

一个指令周期就是1秒/500K=2微秒那么我们想定时1毫秒500*2微秒=1000微秒=1毫秒就设定计数器记录500个时钟周期就行了那么要得到1秒呢?就是1000个1毫秒,无非就是改变计数的值现在我们来总结一下这个定时/计数器,其实就是个计数器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

T0工作在方式3时T1为方式2的工作示意图
(4)T1设置在方式3 当T0设置在方式3,再把T1也设成方式3,此时T1停止计数。
23
8.3
定时器/计数器的编程和应用
4种方式,方式0与方式1基本相同,只是计数位数不同。方 式0初值计算复杂,一般不用方式0,而用方式1。 8.3.1 方式1的应用
【例1】假设系统时钟频率采用6MHz,在P1.0引脚上输出一
8
8.1.2 定时器/计数器T0、T1的工作方式
4种工作方式分别介绍如下。 1. 方式0 ——13位定时器/计数器 M1、M0=00时,被设置为工作方式0,等效逻辑结构框图 如图8-2所示(以定时器/计数器T1为例,TMOD.5、
TMOD.4 =/计数器方式0逻辑结构框图
由上可见,可选方式1,每隔100ms中断一次,中断10
次为1s。
31
(1)计算计数初值X
因为(216 − X) 2 10−6 = 10−1,所以X = 15536 = 3CB0H。 因此TH0 = 3CH,TL0 = B0H。

12分频后的内部脉冲信号计数。由于时钟频率是定值,所以 可根据计数值可计算出定时时间。

计数器的起始计数都是从计数器初值开始的。单片机复位 时计数器的初值为0,也可用指令给计数器装入一个新的
初值。AT89S51的定时器/计数器属于增1计数器。
5
1. 工作方式控制寄存器TMOD 用于选择定时器/计数器的工作模式和工作方式,字节地址为89H, 不能位寻址。
复执行上述过程。
如CPU不做其他工作,也可用查询方式进行控制,程 序要简单得多。
29
查询方式参考程序:
MOV LOOP: MOV MOV TMOD,#01H ;设置T0为方式1 TH0,#0FEH TL0,# 0CH ;接通T0 ;查TF0,TF0 =0, T0未溢出; ;TF0 =1, T0溢出, CLR CPL TR0 P1.0 ;T0溢出, 关断T0 ;P1.0的状态求反 ;T0置初值
2.T0工作在方式3时T1的各种工作方式 一般情况下,当T1用作串行口的波特率发生器时,T0才工 作在方式3。T0处于工作方式3时,T1可定为方式0、方式 1和方式2,用来作为串行口的波特率发生器,或不需要中 断的场合。
19
图8-5 定时器/计数器T0方式3的逻辑结构框图
20
(1)T1工作在方式0
第 8章
定时器/计数器 及应用
1
内容概要
工业检测与控制,许多场合都要用到计数或定时功能。 例如,对外部脉冲进行计数,产生精确的定时时间等。 AT89S51片内有两个可编程的定时器/计数器T1、T0,可 满足需要。 本章介绍定时器/计数器的结构与功能,2种工作模式和 4种工作方式,以及相关的2个特殊功能寄存器TMOD和
子开关闭合,允许T1(或T0)对脉冲计数。TRx = 0,B 点为低电平,电子开关断开,禁止T1(或T0)计数。 (2) GATE = 1,B点电位由 INT( x x = 0,1)的输入电平和 TRx的状态这两个条件来确定。当TRx = 1,且 INTx =1时,
B点才为1,控制端控制电子开关闭合,允许T1(或T0)
本例,主程序用一条转至自身的短跳转指令来代替。
26
参考程序如下:
ORG 0000H ;程序入口 ;转主程序 ;T0中断入口 ;转T0中断处理程序IT0P ;主程序入口 ;设堆栈指针 ;设置T0为方式1定时
RESET: AJMP MAIN ORG 000BH
AJMP IT0P ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#01H
TCON各位的定义及其编程,最后介绍定时器/计数器的编
程及应用实例。
2
8.1 定时器/计数器T0、T1
8.1.1 T0、T1的内部结构 定时器/计数器T0由特殊功能寄存器TH0、TL0构成,定 时器/计数器T1由特殊功能寄存器TH1、TL1构成。
图8-1 定时器/计数器结构框图
3
具有定时器和计数器2种工作模式,4种工作方式(方
各引脚与T0的逻辑关系如图8-5所示。
定时器/计数器T0分为两个独立的8位计数器TL0和TH0, TL0使用T0的状态控制位C/ T 、GATE、TR0、
18
TF0 ,而TH0被固定为一个8位定时器(不能作为外部计数 模式),并使用定时器T1的状态控制位TR1和TF1,同时
占用定时器T1的中断请求源TF1。
T1的控制字中M1、M0 = 00时,T1工作在方式0。
T0工作在方式3时T1为方式0的工作示意图
21
(2)T1工作在方式1
当T1的控制字中M1、M0 = 01时,T1工作在方式1,工 作示意图如图6-10所示。
T0工作在方式3时T1为方式1的工作示意图
22
(3)T1工作在方式2
当T1的控制字中M1、M0 = 10时,T1的工作方式为方式2,工作示 意图如图6-11所示。
;装初值的高8位
;允许T0中断 ;总中断允许 ;启动T0 ;中断子程序,T0重装初值 ;P1.0的状态取反
程序说明:当单片机复位时,从程序入口0000H跳向主 程序MAIN处执行。其中调用了T0初始化子程序PT0M0。
28
子程序返回后,程序执行“AJMP HERE”指令,则
循环等待。 当响应T0定时中断时,则跳向T0中断入口,再从T0中 断入口跳向IT0P标号处执行T0中断服务子程序。 当执行完中断返回的指令“RETI”后,又返回断点处 继续执行循环指令“AJMP HERE”。在实际的程序中, “AJMP HERE” 实际上是一段主程序。当下一次定时 器T0的1ms定时中断发生时,再跳向T0中断入口,从而重
ACALL PT0M0
HERE: AJMP HERE
;调用初始化子程序PT0M0
;原地循环,等待中断
27
PT0M0: MOV TL0,#0CH
;T0初始化,装初值的低8位
MOV TH0,#0FEH
SETB ET0 SETB EA SETB TR0 RET IT0P: MOV TL0,#0CH MOV TH0,#0FEH CPL RETI P1.0
个周期为2ms的方波,如下图所示。
P1.0引脚上输出周期为2ms的方波
24
基本思想:方波周期T0确定,T0每隔1ms计数溢出1次,
即T0每隔1ms产生一次中断,CPU响应中断后,在中断服务 子程序中对P1.0取反。为此要做如下几步工作。
(1)计算计数初值X
机器周期 = 2s = 2 10−6s 设需要装入T0的初值为X,则有(216−X)210−6=1 10−3, 216−X=500,X=65036。
13位计数器,由TLx(x = 0,1)低5位和THx高8位构成。 TLx低5位溢出则向THx进位,THx计数溢出则把TCON中
的溢出标志位TFx置“1”。
10
图8-2的C/ T 位控制的电子开关决定了定时器/计数器的 两种工作模式。
(1)C/ T =0,电子开关打在上面位置,T1(或T0)为
定时器工作模式,把时钟振荡器12分频后的脉冲作为计数 信号。 (2)C/ T =1,电子开关打在下面位置,T1(或T0)为 计数器工作模式,计数脉冲为P3.4(或P3.5)引脚上的外
定时器/计数器的方式2为自动恢复初值(初值自动装入)的
8位定时器/计数器。
15
图8-4
定时器/计数器方式2逻辑结构框图
16
TLx(x = 0,1)作为常数缓冲器,当TLx计数溢出时,在溢出
标志TFx置“1”的同时,还自动将THx中的初值送至TLx, 使TLx从初值开始重新计数。该方式可省去用户软件中重 装初值的指令执行时间,简化定时初值的计算方法,可以 相当精确地确定定时时间。
SETB TR0 LOOP1:JNB TF0,LOOP1
SJMP LOOP
查询程序虽简单,但CPU必须要不断查询TF0标志,工作 效率低。
30
【例2】系统时钟为6MHz,编写定时器T0产生1s定时
的程序。 基本思想:采用定时器模式。因定时时间较长,首先确 定采用哪一种工作方式。时钟为6MHz的条件下,定时器 各种工作方式最长可定时时间: 方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512s。
X化为十六进制数,即: 65036 = FE0CH 。
T0的初值为TH0 =FEH,TL0 = 0CH。
25
(2)初始化程序设计
采用定时器中断方式工作。包括定时器初始化和中断系 统初始化,主要是对寄存器IP、IE、TCON、TMOD的相 应位进行正确的设置,并将计数初值送入定时器中。 (3)程序设计 中断服务子程序除了完成所要求的产生方波的工作之外, 还要注意将计数初值重新装入定时器,为下一次产生中断 做准备。
部输入脉冲,当引脚上发生负跳变时,计数器加1。
GATE位状态决定定时器/计数器的运行控制取决TRx一 个条件还是TRx和 INT x(x = 0,1)引脚状态两个条件。
11
(1) GATE = 0,A点(见图8-2)电位恒为1,B点电位仅
取决于TRx状态。TRx = 1,B点为高电平,控制端控制电
8位分为两组,高4位控制T1,低4位控制T0。
(1)GATE———门控位。 0:仅由运行控制位TRx(x = 0,1)来控制定时器/计数器运行。
1:用外中断引脚( 或 )上的电平与运行控制位TRx共同来控制
定时器/计数器运行。
6
(2)C/ T —计数器模式和定时器模式选择位
0:为定时器工作模式,对单片机的晶体振荡器12分频
后的脉冲进行计数。 1:为计数器工作模式,计数器对外部输入引脚T0 (P3.4)或T1(P3.5)的外部脉冲(负跳变)计数。 (3)M1、M0——工作方式选择位
相关文档
最新文档