第10讲 C8051F单片机的定时器计数器分析
《C8051F单片机》课件

发效率。
3
常见应用案例
了解C8051F单片机的常见应用案例可以 帮助您更好地理解实际应用场景。
实验操作
实验材料准备
实验步骤
在进行实验操作前,您需要购买 一些电路测试仪器,例如万用表、 示波器等。
您需要按照实验步骤进行实验。 请务必仔细阅读实验说明,以确 保实验的顺利进行。
实验结果分析
在实验结束后,您需要对实验结 果进行分析和总结。这可以帮助 您更好地理解C8051F单片机的工 作原理和应用场景。
C8051F单片机课件
这份PPT课件是针对C8051F单片机开发而制作的。本课程会涵盖硬件设计、接 口设计、软件开发和实验操作等各个方面。通过学习本课程,您将学会如何 使用C8051F芯片,开发出各种电子设备。
C8051F单片机概述
什么是C8051F单片 机?
C8051F单片机是一种集成了 微处理器、存储器和各种输 入输出接口的电路芯片。
基本特性
C8051F单片机有着低功耗、 高速度、高精度、低体积的 基本特性。
应用领域
C8051F单片机应用广泛,包 括汽车电子、医疗设备、智 能家居、工业自动化等各种 领域。
硬件设计
电路原理
了解C8051F单片机的电路结构和 原理非常重要。掌握这些知识可 以帮助您更好地设计硬件电路。
接口设计
单片机的接口设计是硬件设计的 重要部分。不同的接口设计会影 响到整个电路的稳定性和性能。
Q& A
1 常见问题解答
在学习C8051F单片机的过程中,您可能会遇 到一些问题。我们为您准备了一些常见论与交流
与其他学习者进行讨论和交流,可以帮助您 更好地理解C8051F单片机的应用和工作原理。
总结
C8051F单片机

5、系统复位
复位电路将控制器置于一个预定的缺省状态。 1)CIP-51 停止程序执行 2) 特殊功能寄存器(SFR)被初始化为所定义的复位值 3)外部端口引脚被置于一个已知状态 4)中断和定时器被禁止。 5)所有的SFR 都被初始化为预定值 6)I/O 端口锁存器的复位值为0xFF,全部为逻辑‘1’,内部 弱上拉有效,使外部I/O 引脚处于高电平状态。 7) MCU 使用内部振荡器运行在2MHz 作为默认的系统时钟。 8) 看门狗定时器被使能,使用其最长的超时时间。
13
1、概述
4、可编程数字I/O •C8051F310有29个I/O引脚(3个8位口和一个5位口) •C8051F31x端口的工作情况与标准8051相似,但有一些 改进。每个端口引脚都可以被配置为模拟输入或数字I/O 。 •被选择作为数字I/O的引脚还可以被配置为推挽或漏极 开路输出。 •在标准8051中固定的“弱上拉”可以被总体禁止,为低 功耗应用提供了进一步节电的能力。
18
3、优先权交叉开关配置
也称为“交叉开关”,按优先权顺序将端口0 – 3 的 引脚分配给器件上的数字外设(UART、SMBus、 PCA、定时器等)。 端口引脚的分配顺序是从P0.0 开始,可以一直分配 到P3.7。为数字外设分配端口引脚的优先权顺序为 UART0具有最高优先权,而CNVSTR具有最低优先 权。 优先权交叉开关的配置是通过3个特殊功能寄存器 XBR0、XBR1、XBR2来实现的,对应使能位被设置 为逻辑‘1’时,交叉开关将端口引脚分配给外设。
◆16K 字节可在系统编程的FLASH 存储器
◆1280字节的片内RAM ◆可寻址64K字节地址空间的外部数据存储器接口
◆硬件实现的SPI、SMBus/ I2C 和两个UART 串行接口
MCS-51单片机内部定时器计数器

二、 方式1
方式 1(16位计数器)
•MCS-51单片机内部定时器计数器
方式1和方式0的工作原理基本相同,唯一 不同是T0和T1工作在方式1时是16位的计数/定 时器。
方式1时的计数长度M是2的16次方。16位 的初值直接拆成高低字节,分别送入TH和TL 即可。
•MCS-51单片机内部定时器计数器
M1 M0:四种工作方式的选择位 工作方式选择表
M1 M0 方式
说明
0 0 0 13 位定时器(TH的 8 位和TL的低 5 位)
0 1 1 16 位定时器/计数器
1 0 2 自动重装入初值的 8 位计数器 T0 分成两个独立的 8 位计数器,
1 1 3 T1 在方式 3 时停止工作
定时 1 ms的初值:
因为 机器周期=12÷6 MHz= 2 μs
所以 1 ms内T0 需要计数N次:
•MCS-51单片机内部定时器计数器
N= 1 ms÷2 μs = 500
由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为 X=M-N=8 192-500=7 692=1E0CH 但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其 余码均计入高 8 位TH0 的初值, 则 T0
0。TF产生的中断申请是否被接受, 还需要由中断计数器T1、 T0 的运行控制位,
通过软件置 1 后, 定时器 /计数器才开始工作, 在系统复位时
被清 0。
•MCS-51单片机内部定时器计数器
定时器的工作方式
一、 方式 0
方式 0(13位计数器)
•MCS-51单片机内部定时器计数器
•MCS-51单片机内部定时器计数器
单片机的时序控制与定时器计数器应用案例分析

单片机的时序控制与定时器计数器应用案例分析单片机是一种嵌入式微处理器系统,通常用于控制和处理电子设备中的信号和数据。
在单片机的应用中,时序控制和定时器计数器是非常重要的功能模块,用于实现各种复杂的控制和计时任务。
本文将从时序控制与定时器计数器的基本原理入手,通过具体案例分析来展示它们在单片机应用中的重要性和实际应用价值。
## 时序控制的基本原理时序控制是指按照一定的时间序列来控制设备或系统的工作顺序和时间间隔。
在单片机中,时序控制通常通过定时器和计数器来实现。
定时器用来产生定时脉冲,计数器则用来计数这些脉冲的数量,从而控制设备的工作时序。
实现时序控制的关键在于合理设置定时器的计数值和时钟源,以确保生成的定时脉冲符合实际需求。
在单片机的程序中,可以通过配置定时器寄存器来实现定时器的初始化和工作参数设置,从而实现精确的时序控制。
## 定时器计数器的应用案例分析以STC单片机为例,我们来看一个简单的定时器计数器的应用案例:LED闪烁控制。
假设我们要让一个LED灯每隔一秒闪烁一次,我们可以通过定时器计数器来实现这个功能。
首先,我们需要配置定时器的计数值和时钟源,使其产生1秒的定时脉冲。
然后,在定时器中断服务程序中,每当定时器溢出时,我们就将LED的状态取反,从而实现LED的闪烁控制。
以下是一个示例代码:```c#include <reg51.h>sbit LED = P1^0;void timer_init(){TMOD = 0x01; // 定时器0工作在模式1TH0 = 0x3C; // 定时器初值高位TL0 = 0xB0; // 定时器初值低位ET0 = 1; // 允许定时器0中断TR0 = 1; // 启动定时器0EA = 1; // 允许中断}void timer0_isr() interrupt 1{static bit led_status = 0;led_status = ~led_status;LED = led_status;}void main(){timer_init();while(1);}```在上面的代码中,我们通过定时器0的计时溢出中断来控制LED的状态,从而实现LED的闪烁控制。
C8051单片机基础C8051F单片机结构及原理详解

2.2 C805lF单片机的结构与原理
2.2.1 C8051F02x单片机的组成与结构 C8051F020单片机以8051内核为中心,
通过SFR总线、外部数据存储器总线、系 统时钟线、复位线等与64KB闪存、4KB XRAM、数字功能模块(UART、SPI、定时器 等)、模拟功能模块(比较器、A/D、D/A 等)、片上时钟系统和JTAG逻辑电路等相 连。是一个完整的单片机片上系统,可以 用作为一个闭环测量控制系统。
2.1 C8051F的CIP-51内核
2.1.3 CIP-51内核的基本部件
5.流水线结构 CIP-51采用了流水线处理结构,用
于控制和管理取指令和执行指令的过程。 其已经没有机器周期时序,指令执行的最 小时序单位为系统时钟,大部分指令只要 1个~2个系统时钟即可完成。在流水线结 构中包括指令寄存器和指令译码器。
2.1 C8051F的CIP-51内核
2.1.3 CIP-51内核的基本部件
6.中断系统 中断系统的主要作用是对外部或内
部的中断请求进行管理与处理。C8051F系 列单片机的中断系统可以满足一般控制应 用的需要,C8051F系列单片机的中断源最 多可达22个。
2.1 C8051F的CIP-51内核
2.2 C805lF单片机的结构与原理
2.2.2 引脚定义及功能
下面对部分专用引脚的功能进一步说明。 (1)VDD和GND各为3个引脚,使用时建议全部
接上,这样可提高抗干扰能力。 (2)如果在系统中没有使用模拟部分,芯片的
模拟电源V+和模拟地AGND也要连接。 (3)VREF端也可以作为带隙电压基准输出驱动
单片机定时器与计数器的工作原理及应用

单片机定时器与计数器的工作原理及应用摘要:单片机作为现代电子设备中广泛采用的一种集成电路,其内部包含了丰富的功能模块,其中定时器和计数器被广泛应用于各种领域。
本文将介绍单片机定时器和计数器的工作原理及应用,包括定时器的基本原理、工作模式和参数配置,以及计数器的工作原理和常见应用场景。
希望通过本文的阐述,读者能够深入了解单片机定时器和计数器的基本原理和应用,为电子系统设计提供参考。
引言:单片机作为嵌入式系统中的核心部件,承担着控制和处理各种信号的重要任务。
定时器和计数器作为单片机的重要功能模块,为实现各种实时控制任务提供了有效的工具。
定时器可以生成一定时间间隔的定时信号,而计数器则可以对外部事件的频率进行计数,实现时间测量和计数控制等功能。
一、定时器的工作原理单片机中的定时器通常为计数器加上一定逻辑控制电路构成。
定时器的基本工作原理是通过控制计数器的计数速度和计数值来实现不同时间间隔的输出信号。
当定时器触发时,计数器开始计数,当计数值达到预设值时,定时器产生一个输出信号,然后重新开始计数。
定时器通常由以下几个部分组成:1.计数器:定时器的核心部件是计数器,计数器可以通过内部振荡器或外部输入信号进行计数。
通常情况下,计数器是一个二进制计数器,它可以按照1、2、4、8等倍数进行计数。
2.预设值:定时器的预设值决定了定时器的时间间隔。
当计数器达到预设值时,定时器会产生一个输出脉冲。
3.控制逻辑电路:控制逻辑电路用于控制计数器的启动、停止和重置等操作。
通常情况下,控制逻辑电路由一系列的触发器和逻辑门组成。
二、定时器的工作模式定时器可以根据实际需求在不同的工作模式下运行,常见的工作模式有以下几种:1.定时工作模式:在定时工作模式下,定时器按照设定的时间间隔进行计数,并在计数值达到预设值时产生一个输出脉冲。
这种模式常用于周期性任务的触发和时间测量。
2.计数工作模式:在计数工作模式下,定时器通过外部输入信号进行计数,可以测量外部事件的频率。
80C51单片机的定时计数器
返回
2,模式1 :16位计数器模式(以T1为例).
启动控制 震荡器 1/12 C/T=0
T1 引脚 TR1 GATE INT1
C/T=1
16位加1计数器
TL1
TH1
(8位)
(8位)
TF1 中断
注:计数器在每个机器周期采样一次从T1引脚进入的外部计数脉冲,由于检 测到一次从高到低的负跳变需要两个机器周期,所以外部计数脉冲的频率应
T0 引脚 TR0 GATE INT0
Fosc/12 TR1
C/T=1
控制
TL0
TF0 中断
TH0
TF1 中断
模式3定时器T0的结构图
模式3时T0(TH0,TL0)及T1的各自特点: 1 TH0计数脉冲来自内部fosc,所以它只能处于”定时”方式; 2 TH0分别借用了定时器T1的TR1和TF1为自己服务,使TH0能象
设置TMOD 设置计数器初值
重装计数器初值
开中断 启动计数 主程序流程图
口线求反 RETI
中断处理子程序流程图
(1)主程序设计 初始化指令段 采用定时器中断方式工作。包括定时器初始化和中断系统初 始化,主要是对寄存器IP、IE、TCON、TMOD的相应位进行 正确的设置,并将计数初值送入定时器中。 其他工作程序 任意指令段,本例中用一条转至自身的短跳转指令来代替。 (2)中断服务子程序设计 中断服务子程序除了完成所要求的产生方波的工作之外,还 要注意将计数初值重新装入定时器。
小于fosc/24
对外部输入信号的要求,图中,Tcy为机器周期。
对外部计数输入信号的要求
13
3,模式2 : 8位自动重装初值模式
由TL1做计数器,TH1做初值寄存器, 工作前TL1,TH1分别预置相同的初值 TL1计数时, 当产生溢出置位TF1的同时, 将TH1中的初值自动重装入TL1。 TL1继续计数,此模式主要用于做串行口波特率发生器。
80C51单片机的定时计数器
80C51单片机的定时计数器定时计数器的控制寄存器<>定时器/计数器的工作方式1.定时器/计数器的工作方式0(1)电路逻辑结构当图6-7中的计数器=13位(TH的8位与TL低5位)即得方式0的逻辑电路图。
(2)工作方式0的特点①两个定时器/计数器T0、T1均可在方式0下工作;②是13位的计数结构,其计数器由TH全部8位和TL的低5位构成(高3位不用);③当产生计数溢出时,由硬件自动给计数溢出标志位TF0(TF1)置1,由软件给TH,TL重新置计数初值。
应说明的是,方式0采用13位计数器是为了与早期的产品兼容,计数初值的高8位和低5位的确定比较麻烦,所以在实际应用中常由16位的方式1取代。
2.定时器/计数器的工作方式1(1)电路逻辑结构方式1是16位计数结构的工作方式,计数器由TH全部8位和TL全部8位构成。
其逻辑电路如图6-11所示。
(2)工作方式1的特点①两个定时器/计数器均可在方式1下工作;②是16位的计数结构,其计数器由TH的全部8位和TL的全部8位构成;③当产生计数溢出时,由硬件自动给计数溢出标志位TF0(TF1)置1,由软件给TH,TL重新置计数初值。
(3)计数/定时的范围在方式1下,当为计数工作方式时,由于是16位的计数结构,所以计数范围是:1~65536。
当为定时工作时,其定时时间=(216-计数初值)×机器周期,例如:设单片机的晶振频率f=12MHz,则机器周期为1μs,从而定时范围:1μs~65536μs。
因为80C51单片机的定时计数器是可编程的。
因此,在利用定时/计数器进行定时计数之前,先要通过软件对他进行初始化,初始化一般应进行如下工作:①设置工作方式,即设置TMOD中的各位GATE、C/T、M1M0。
②计算加1计数器的计数初值COUNT,并将计数初值COUNT 送入TH、TL中。
计数方式:计数值= 2n – COUNT ,计数初值:COUNT= 2n –计数值。
定时器计数器工作原理
定时器计数器工作原理
定时器计数器是一种用于计算时间间隔的电子设备。
它通过内部的晶振、分频器和计数器等组件实现精确的计时功能。
工作原理如下:
1. 晶振:定时器计数器内部搭载了一个晶振,晶振的频率非常稳定,一般为固定的几十千赫兹。
2. 分频器:晶振的频率可能非常高,但计数器需要较低的频率进行计数,所以需要一个分频器将晶振的频率降低,得到一个更低的频率作为计数器的输入。
3. 计数器:分频器将得到的较低频率信号送入计数器,计数器会根据信号的脉冲个数来进行计数。
4. 触发器:计数器会将计数结果保存在一个触发器中,可以通过读取这个触发器来获取时间间隔的计数值。
5. 重置:当计数器达到设定的计数值后,会自动重置为初始状态,重新开始计数。
通过以上几个步骤的组合,定时器计数器可以实现精确的时间间隔计算。
可以根据不同的需求设置不同的晶振频率、分频器的分频倍数和触发器的位数,以实现不同精度的计数功能。
定时器计数器广泛应用于各种电子设备中,如计时器、时钟、
定时开关等。
它们都依赖于定时器计数器的准确计时功能,来实现精确的时间控制。
MCS-51单片机计数器定时器详解
MCS-51单片机计数器定时器详解80C51单片机内部设有两个16位的可编程定时器/计数器。
可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。
在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。
:从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。
其访问地址依次为8AH-8DH。
每个寄存器均可单独访问。
这些寄存器是用于存放定时或计数初值的。
此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。
这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。
TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。
当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。
定时计数器的原理:16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。
当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。
显然,定时器的定时时间与系统的振荡频率有关。
因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。
如果晶振为12MHz,则计数周期为:T=1/(12×106)Hz×1/12=1μs这是最短的定时周期。
若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。
当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。
计数器在每个机器周期的S5P2期间采样引脚输入电平。
若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
时钟控制寄存器CKCON
位7:未用。读=0b,写=忽略。 位6-3:T4M-T0M:T4到T0的时钟选择(不包含T3,T3的时 钟选择由T3控制寄存器TMR3CN的第0位T3XCLK决定)。
0:定时器按系统时钟的12分频计数
1:定时器按系统时钟频率计数
位2-0:保留。读=000b,写入值必须是000b。
中断服务程序
void Timer1_ISR (void) interrupt 3
{ TH1=0x3c; //重装初值 //中断计数 //500ms到,重赋计数初值,P1.0取反
TL1|=0xb0;
count--; if (count==0) { count=10; P1_0=!P1_0; } }
问题:为什么用TL1|=0xb0; 而非TL1=0xb0?
WAVE = 1;
} }
10.4 定时器/计数器T2和T4
10.4.1 概 述
定时器/计数器T2 和T4的结构基本相同,具有三种工作方式: 自动重装初值的16位定时器/计数器方式、 带捕捉的16位定时器/计数器方式 波特率发生器方式
计数的脉冲如果来源于单片机的引脚,由于其周期一般不 确定,可表示事件发生,这时称为计数器。
(1) 计数方式
外部输入信号的下降沿触发计数。 计数器在每个时钟周期或时钟周期的12分频采样外部输 入信号,若一个周期的采样值为1,下一个周期的采样值为0, 则计数器加1,故识别一个从1到0的跳变需2个周期。 所以,对外部输入信号最高的计数速率是时钟频率的1/2 或1/24(取决于是否12分频)。同时,外部输入信号的高电 平与低电平保持时间均需大于一个周期。
例3 在频率为12MHz 的标准51单片机上,在P1.0引脚上输出周期为2.5S,
占空比为20%的脉冲信号。
解:
中断次数加1
次数=高电平?
P1.0=0
次数=周期?
P1.0=1
返回
#include <c8051f020.h> sbit WAVE = P1^0; uchar period = 250; uchar high = 50; uchar overflow_count = 0; void main( void ) { WDTCN = 0xde; //关看门狗 WDTCN = 0xad; XBR2 = 0x40; //使能端口输出 CKCON&=0xef; //T1的计数源选择系统脉冲的12分频 TMOD=0x10; //T1方式1 WAVE =0; TH0 = ( 65536 – 10000 ) / 256; //初值 TL0 = ( 65536 – 10000 ) % 256; IE|=0x88; //允许T1中断 IP|=0x08; //TF1中断为高级中断 while(1); //死循环,等待中断,产生方波 }
最大定时时间(设 fOSC=12MHz、T0M=0 ): 方式0: TMAX = 213×1μs = 8.192ms 方式1: TMAX = 216×1μs = 65.536ms 方式2、3: TMAX = 28 ×1μs = 0.256ms
初值a=M-C a为计数初值初值 M为计数器的模,与工作方式有关 , C为所需要的计数值
定时器T0、T1的工作方式
10.3.2 T0和T1的工作方式和电路结构
(1)工作方式1:——16位的定时/计数器
时基选择
定时/计数选择 16位计数器
启/停控制 GATE0=0时:TR0=1 启动计数
GATE0=1时: TR0=1且INT0=1
启动计数
方式1:定时初值/定时时间计算
若T0的计数初值为a,则T0从初值a加1计数至溢出所需 的时间为:
2、工作方式2:——8 位自动重装的定时/计数器
用于需要重复定时和计数的场合。 最大计数值:256 (28)
工作方式 2 的编程: TMOD寄存器选方式: 写“M1,M0” = 10 b 选中方式2 THx/TLx赋相同初值 在TLx计数达到0FFH 再加“1”时,TL0 将溢出, “TFx”置1去申请中断,同时THx中的 值自动重装(Copy)进TLx 其他用法与各种方式1完全相同
(1)定时器初值计算 a=216-50ms/1us=63536-50000= 15536=3CB0H 即:TH0=0x3c;TL0=0xb0
(2)初始化程序
包括T1初始化和中断系统初始化,主要是对IP、IE、CKCON、
TCON、TMOD的相应位进行正确的设置,并将时间常数送入T1。
本例中将初始化操作放在主程序中完成,当程序规模较大时, 应编写单独的初始化程序,以利于程序的模块化设计。
1、初始化步骤
确定定时器/计数器的工作方式----初始化TMOD
根据需要初始化CKCON
计算定时器/计数器的计数初值,装载TH和TL寄存
器。 中断设置(IE、IP) 启动定时/计数器(TCON)
2、计数初值的计算 (1T 0 M ) 12 16 T (2 a) s f osc
(2)定时器初值计算
方式0 a=213-2ms/1us=6192=1830H 即:TH0=0C1H;TL0=10H(高三位为0) 方式1 a=216-2ms/1us=63536=F830H 即:TH0=0F8H;TL0=30H
(3)初始化程序 void T0_mode1_2ms_init( void )
3、工作方式3
方式3只适用于定时器0。此时,定时器0的 TH0、TL0成为两个独立的计数器。 TL0可作为定时器/计数器,占用定时器0在 TCON和TMOD中的控制位和标志位。 TH0只能作为定时器使用,占用定时器1在 TCON和TMOD中的控制位和标志位。
10.3.3 T0和T1的编程
第 10 讲 C8051F020单片机定时器/计数器
10.1 C8051F020定时器/计数器概述
10.2 定时器的一般结构和工作原理 10.3 定时器/计数器T0和T1 10.4 定时器/计数器T2和T4
10.1 C8051F020定时器/计数器概述
(1) 定时器/计数器的功用 定时操作:定时采样,定时扫描,定时中断 测量外部信号:累加统计,测量周期等 定时输出:PWM等 (2) C8051F020单片机定时器/计数器资源 C8051F020内部有5 个定时器/计数器:其中三个16 位定时器/计数器与标准8051 中 的计数器/定时器兼容, 还有两个16 位自动重装载定时器可用于ADC、SMBus、 UART1 或作 为通用定时器使用。
中断服务程序
void timer1_ISR(void) interrupt 1 { TH0 = ( 65536 – 10000 ) / 256;
TL0 = ( 65536 – 10000 ) % 256;
if( ++overflow_count == high ) WAVE = 0; else if ( overflow_count == period ) { overflow_count=0;
(3)中断服务程序
中断服务程序除了完成要求的方波产生这一工作之外,还 要注意将时间常数重新送入T1中,为下一次产生中断作准备。
主程序
#include <c8051f020.h> sbit P1_0 = P1^0; int count=10; //10次T1中断为500ms void main( void ) { WDTCN = 0xde; //关看门狗 WDTCN = 0xad; XBR2 = 0x40; //使能端口输出 CKCON&=0xef; //T1的计数源选择系统脉冲的12分频 TMOD=0x10; //T1方式1 P1_0=0; TH1=0x3c; //初值 TL1=0xb0; IE|=0x88; //允许T1中断 IP|=0x08; //TF1中断为高级中断 TCON|=0x20; //启动T1 while(1); //死循环,等待中断,产生方波 }
3、定时器方式寄存器TMOD (89H)
控制T1
D7 D6
C/ T1
控制T0
D4
T1M0
D5
T1M1
D3
GATE0
D2
C/T0
D1
T0M1
D0 字节 T0M0 地址 89H
TMOD GATE1
00:方式0
门控位 定时/计数选择 1:计数器 方式选择 0:定时器 01:方式1 10:方式2 11:方式3
(2) 定时方式
每一个计数周期计Biblioteka 器加1,直至计满溢出,产生中断请求。 对于一个N位的加1计数器,若计数周期Tclock是已知的,则从初值 a开始加1计数至溢出所占用的时间为:
T Tclock ( 2 a )
n
则,最大定时时间:
Tmax 2 Tclock
n
式中n由工作方式决定,Tclock为定时器/计数器的计数脉冲周期, 由C8051F的系统时钟或系统时钟经12分频提供,是否需要12分 频取决于对时钟控制寄存器CKCON的设定。
C8051F020定时器/计数器的工作方式
10.2 定时器的一般结构和工作原理
溢出标志 启/停控制 定时器 方式选择 执行机构 加1计数器:如T0~T4 中断
查询
计数器
实质是计数器,脉冲每一次下降沿,计数寄存器数值将加1。 计数的脉冲如果来源于单片机内部的晶振,由于其周期极为 准确,这时称为定时器。
M0 来选择工作方式。
10.3.1 与定时器有关的特殊功能寄存器
1、计数寄存器TH与TL
2、定时器控制寄存器TCON (88H)
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TRx: Timer0/1运行控制位。 =1 启动计数; =0 停止计数
TFx: Timer0/1计数溢出标志位。 =1 计数溢出; =0 计数未满 TFx标志位可用于申请中断或供CPU查询。 在进入中断服务程序时会自动清零;但在查询方式时必 须软件清零。