第六章 定时计数器
单片机讲义1(第六章定时器计数器)

脚与T0的逻辑关系框图如下图所示。
定时器/计数器T0分为2 个独立的8位计数器:TL0和 TH0。 TL0使用T0的状态控制位 C/ T GATE、TR0、 INT0 ,而TH0被 固定为1个8位定时器(不能 为外部计数模式),并使用 定时器T1的状态控制位TR1 和TF1,同时占用定时器T1 的中断请求源TF1。
6.2.2 方式1
6.2.3 方式 2
6.2.4 方式 3
在方式3下,T1只作 波特率发生器。在这样 情况下,T1将TF1、TR1 资源出借给T0使用。因 此,在方式3下,T0可以 构成两个独立的计数器 结构,如图6-6(a)和 图6-6(b)所示。
TL0构成一个完整的8 位定时器/计数器,而 TH0则是一个仅能对 fOSC/12脉冲计数的8位 定时器。
(l)计算初值 初值的计算公式为: X 2 n
设:需要装入T0的初值为X,则有:
t f
osc
12
16
其中:n=13、16、8 (由计数器的的工作方 式来决定n 的取值)
∵X= 2
n
t . f osc 现 n 16 12
t 1 ms
f osc 6 M Hz
∴X= 2
∵ X= 2
n
t . f osc 12
现 n 16 f osc 6 M Hz t 100 ms
所以:X=15 536=3CB0H 因此:TH0=3CH, TL0=B0H
(3)10次计数的实现 对于中断10次计数,可使T0工作在定时方式,采用循环程序的方法实现。 (4)程序设计 ORG 0000H RESET:LJMP MAIN ;上电,转主程序入口MAIN 0RG 000BH ;T0的中断入口地址 LJMP IT0P ;转T0中断处理程序ITOP ORG 1000H MAIN: MOV SP,#60H ;设堆栈指针 M0V B,#0AH ;设循环次数10次
单片机原理及应用 第06章定时计数器

20
6.5 定时器/计数器的编程
初始化
1 根据要求给方式寄存器TMOD送一个方式控制 字,以设定定时器的工作方式; 2 根据需要给TH和TL选送初值,以确定需要的 定时时间或计数的初值; 3 根据需要给中断允许寄存器IE送中断控制字, 以开放相应的中断和设定中断优先级;
也可用查询方式来响应定时器。
JBC TF1,RP1 SJMP DEL2
30
6.6.4 长定时时间的产生
例 假设系统时钟为6MHz,编写定时器T0产生 1秒定时的程序。 (1)T0工作方式的确定 定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出: 方式0最长可定时16.384ms;
方式1最长可定时131.072ms; 方式2最长可定时512μs。 选方式1,每隔100ms中断一次,中断10次为1s。
8
6.3 定时/计数器的4种工作方式 方式0、方式1(13位、16位定时计数方式)
T1工作于方式0的等效框图(M1M0=00、01)
GATE=0、A=1、TR1=1 GATE=1、INT1=1、TR1=1。注意定时器初值与定时时间的不同
9
6.3.1 方式0、方式1的说明 定时/计数器T1工作在方式0时,为13位的计数器,由TL1 的低5位和TH1的8位所构成。TL1低5位溢出向TH1进 位,TH1计数溢出置位TCON中的溢出标志位TF1。 GATE位的状态决定定时/计数器运行控制取决于TR1 一个条件还是TR1和INT1引脚这两个条件。 当GATE=0时,A点电位恒为1,则只要TR1被置为1,B 点电位即为1,定时/计数器被控制为允许计数(定时/计 数器的计数控制仅由TR1的状态确定,TR1=1计数, TR1=0停止计数)。 当GATE=1时,B点电位由INT1输入的电平和TR1的状 态确定,当TR1=1,且INT1=1时,B点电平才为1,才 允许定时器/计数器计数(计数控制由TR1和INT1二个条 件控制)。 方式1时,TL1的8位都参与计数,因而属于16位 定时/计数器。其控制方式,等效电路与方式0完全相 10 同。
第6章AT89C51定时器计数器

所示 , 图中Tcy为机器周期。
图6- 12
6.4 定时器/计数器的编程和应用 4种工作方式中 ,方式0与方式1基本相同 , 由于方式0是为兼容
MCS-48而设 ,初值计算复杂 ,在实际应用中 ,一般不用方式 0 ,而采用方式1。 6.4. 1 方式1应用 例6- 1 假设系统时钟频率采用6MHz ,要在P1.0上输出一个周期 为2ms 的方波 ,如图6- 13所示。
M1 、M0=01 , 16位的计数器。
图6-5 6.2.3 方式2 计数满后自动装入计数初值。
M1 、M0= 10 ,等效框图如下:
图6-6
TLX作为常数缓冲器 , 当TLX计数溢出时 ,在置“ 1 ”溢出标志 TFX的同时 ,还自动的将THX中的初值送至TLX ,使TLX从初 值开始重新计数。
定时器/计数器的方式2工作过程如图6-7 (X=0, 1) 。
图6-7 省去用户软件中重装初值的程序 ,来精确定时。
6.2.4 方式3 增加一个附加的8位定时器/计数器 , 从而具有3个定时器/计数
器。
只适用于定时器/计数器T0 。T1不能工作在方式3 。 T1方式3时相当于TR1=0 ,停止计数(此时T1可用来作串行口
图6-8( a)
图6-8(b)
2. T0工作在方式3下T1的各种工作方式 当T1用作串行口的波特率发生器时 , T0才工作在方式3 。 T0为方式3时 , T1可定为方式0 、方式1和方式2 ,用来作为串
行口的波特率发生器 , 或不需要中断的场合。 ( 1)T1工作在方式0
图6-9
(2) T1工作在方式1
第06章 MCS-51单片机定时计数器

10
2 8位计数初值自动重装,TL(7 ~ 0)
TH(7 ~ 0)
11
3 T0运行,而T1停止工作,8位定时/计数。
▪ 2.定时/计数器控制寄存器(TCON)
位
D7 D6 D5 D4 D3 D2 D1 D0
位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TR0:定时 / 计数器0运行控制位。软件置位,软件复位。与GATE有关, 分两种情况:
GATE = 0 时:若TR0 = 1,开启T0计数工作;若TR0 = 0,停止T0计 数。
GATE = 1 时:若TR0 = 1 且/INT0 = 1时,开启T0计数; 若TR0 = 1 但 /INT0 = 0,则不能开启T0计数。 若TR0 = 0, 停止T0计数。
TR1:定时 / 计数器1运行控制位。用法与TR0类似。
▪ (1)计算计数初值。欲产生周期为1000μs的等宽方波脉冲, 只需在P1.7端交替输出500μs的高低电平即可,因此定时 时间应为500μs。设计数初值为X,则有:
▪ (216-X)×1×10-6=500×10-6
▪ X=65536-500=65036=FE0CH
▪ 将X的低8位0CH写入TL1,将X的高8位FEH写入TH1。
;清TCON,定时器中断标志清
▪
MOV TMOD,#10H
;工作方式1设定
▪
MOV TH1,#0FEH
;计数1初值设定
▪
MOV TL1,#0CH
▪
MOV IE,#00H
;关中断
▪
SETB TR1
;启动计数器1
▪ LOOP0:JBC TF1,LOOP1 ;查询是否溢出
▪
第6章1 定时器和计数器PPT课件

那么计数器是如何作为定时器来用的呢?
一个闹钟,定时在 1个小时后闹响,换言之,也 可以说是秒针走了( 3600 )次,所以时间就转化 为秒针走的次数的,也就是计数的次数了,那么它们 的关系是什么呢?那就是秒针每一次走动的时间正好 是1秒。所以,只要计数脉冲的间隔相等,则计数值 就代表了时间的流逝 。
(3)计数初值寄存器
TH0
TL0
T0计数初值寄存器
TH1
TL1
T1计数初值寄存器
6.3 定时/计数器的工作方式 (1) 方式1 M0 M1为01——16位定时/计数器
震荡器
12
T1(P3.5)脚
TR1 GATE
C/T=0 C/T=1
1 2
K
控 制
3
TL1 TH1 (8位) (8位)
TF1
中断
INT1脚
main ()
{
TMOD = 0x01; //设置T0定时方式1(0000 0001B)
TR0=1;
//启动T0
for(;;){
TH0 = 0xfc; //装载计数初值
TL0 = 0x18;
do{ } while(!TF0); //等待TF0溢出
P1_0 =!P1_0; //定时时间到P1.0反相
TF0 = 0;
注意:方式0的TL0高3位未用,可填0 ,因此
a= 0110 0011 0001 1000 = 6318H
6
3
1
8H
01 10 0 0 1 1 0001 1 0 00
TH0
TL0
编程时将此初值装载到Tx中,例如: TH0 = 0x63; TL0 = 0x18;
(4)方式3
TH0+TF1+TR1组成的8位定时器 TL0+TF0+TR0组成的8位定时/计数器 T1组成的无中断功能的定时器 特点:方式3下T0可有2个具有中断功能的8位定时器 在定时器T0用作方式3时,T1仍可设置为方式0~2。
第6章 单片机的定时器计数器

T0(P 3.4)
T0 (8CH) (8AH)
TH0(8位) TL0 (8位)
7 0 7 0
T1 (8DH) (8BH)
TH1(8位) TL1 (8位)
7
0
7
0
CPU
溢 启 出 动 溢 出
启 动
工作方式 TMOD(89H)
工 作 方 式
TCON(88H)
定时/计数器逻辑结构
T0
2个16位T/C分别由8位计数器TH0、TL0、 TH1、TL1组成 “+1” 计数器 T1 控制寄存器TCON:控制T/C的启停、中断等
第6章 单片机的定时器/计数器
6.1 定时/计数器的结构与工作原理
6.2 定时器/计数器的控制
6.3 定时/计数器的工作方式
6.4 定时/计数器的编程和应用
实现定时一般有三种方法: 利用软件实现(延时程序); 优点:简单,控制方便;缺点:CPU效率低。 硬件实现,专门设计一个单稳态定时器: 优点:CPU效率高;缺点:修改参数麻烦。 利用计数器实现 1us 输入脉冲 计算机一般利用第三种方法实现 8位 计数器 预置数 256us 溢出
控制T0
GATE C/T M1 M0 0 0 0 1
查 询 方 式
#include <reg51.h> sbit P1_0=P1^0; void main (void) { TMOD=0x01; //定时器0方式1 TR0=1; for( ; ; ) { TH0=(65536-1000)/256; //置计数初值 TL0=(65536-1000)%256; while(!TF0); //查询等待TF0复位 P1_0=!P1_0; //定时时间到P1.0反相 TF0=0; //软件清TF0 } }
第6章定时计数器

6.4.4 定时 计数器的4种工作方式 定时/计数器的 种工作方式 计数器的
方式0 (1) 方式0 M1、M0为00 ,定时器/计数器的框图: M1、M0为 定时器/计数器的框图:
图6-16
决定工作模式: 为13位的计数器 ,C/T* 位决定工作模式: 13位的计数器 0:开关打在上面,为定时器工作模式; 开关打在上面, 定时器工作模式; 工作模式 1:开关打在下面,为计数器工作模式,计数脉冲为 开关打在下面, 计数器工作模式, 工作模式 P3.4、P3.5引脚上的外部输入脉冲, P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳变 引脚上的外部输入脉冲 时,计数器加1。 计数器加1 GATE位:决定定时器/计数器的运行取决于TRx一个条件还是 GATE位 决定定时器/计数器的运行取决于TRx一个条件还是 运行取决于TRx TRx和 引脚两个条件。 TRx和INTx*引脚两个条件。 (1)0:A点(见图6-2)是否计数,仅取决于TRx的状态。 见图6 是否计数,仅取决于TRx的状态。 TRx的状态 点电位由INTX 的输入电平和TRX TRX的状态这两个条 ( 2 ) 1 : B 点电位由 INTX* 的输入电平和 TRX 的状态这两个条 件来确定。是否计数是由TRx和 二个条件来控制的。 件来确定。是否计数是由TRx和INTx*二个条件来控制的。 TRx 计数器溢出后停止计数,直到新的初值送达。 计数器溢出后停止计数,直到新的初值送达。
X= 为1CH)
213
- 100=8092=1F9CH=1111110011100B(前八位为FCH,后五位
即TH0应设为FCH,TL0应设为1CH。
2.定时器方式 若时钟振荡器频率为fosc,计数器位数为n,定时时间为t秒,则时间 常数: X=
第6章 定时计数器及应用

● 教学目标
介绍定时/计数器的结构和原理 介绍定时/计数器的四种工作方式的应用 介绍定时/计数器时应注意的几个问题
● 学习要求
了解定时/计数器的结构 熟悉定时/计数器的工作原理 掌握定时/计数器的初始化及应用程序设计 掌握定时/计数器精确定时要采取的相应措施
6.1 MCS-51定时/计数器概述
TE
INTX
图6-1 定时/计数器T0或T1的结构原理图
6.1.2定时器/计数器的工作原理
由图6-1可见,定时/计数器的核心是一个加1计数器, 每输入一个脉冲,计数值加1,当计数到计数器全为1 时,再输入一个脉冲就使计数值回零,同时从最高位 溢出一个脉冲使控制寄存器TCON的TFX(X=0或1)位 置1,作为计数器的溢出中断标志。加1计数器由两个 8位特殊功能寄存器TH X 和TL X(X=0或1)组成,它们 可以被程控为不同的组合状态(13位、16位、两个分 开的8位等),从而形成定时/计数器的四种工作方式。 加1计数器计数工作的启动和停止由相应的电路控 制,方式寄存器TMOD的GATE位为0时,由寄存器 TCON的TR X(X=0或1)位启动(这时TR X=1)或停止(这 时TR X=0);GATE位为1,且TR X(X=0或1)为1时,由 中断引脚INT X(X=0或1)的外部信号电平启动(这时INT X=1)或停止(这时INT X=0)。
例6-1 利用T0方式0产生宽度为2μ s,周期为2ms的定时 负脉冲,由P1.7送出,系统采用12MHz的晶振。
解 由于晶振为12MHz,机器周期为1μ s,这样利用T0方式0产生周期 为2ms定时的初值X为:
X =N-t/T =213-2×10-3/(1×10-6) =8192-2000 =6192 =1830H =1100000110000B 则TH0=11000001B=0C1H,TL0=00010000B=10H
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章定时/计数器及应用第一节定时/计数器1.定时/计数器工作原理在实际应用中,常用定时器实现定时检测、定时控制。
计数器主要用于事件的计数。
许多物理量的测量经过外部电路设计都可将其转换为定时或计数功能。
51单片机内部集成了两个16位可编程的定时/计数器T0和T1(为描述方便,后面将以下标x来代表T0和T1的相关参数),他们具有定时和计数两种工作方式。
定时/计数器T x由特殊功能寄存器TH x、TL x及相关控制寄存器构成。
定时器/计数器本质上就是16位加法计数器,由TH x、TL x存各自的计数值。
计数工作方式下,加法计数器对芯片引脚T0(P3.4)、T1(P3.5)上输入的脉冲计数;定时工作方式下,加法计数器对内部机器周期脉冲进行计数,定时时间为:计数值×机器周期。
计数初值由用户编程设定,设置的初值不同,计数值或定时时间就不同。
因为加法计数器计数满后将回零溢出并申请中断,且在二进制数的补码表示形式中,-1的形式为全1,加1后也将回0溢出,所以计数初值可以用负数的补码来表示。
2.控制寄存器定时器/计数器两种工作方式是由用户对定时器工作方式控制寄存器TMOD编程设定的,定时器/计数器的启动、停止及溢出等情况是由定时器控制寄存器控制的。
工作方式控制寄存器TMOD其中,低4位控制T0,高4位控制T1,各位的作用为:M1M0:工作模式选择位。
定时器的工作模式由M1M0设定。
M1M0工作模式功能0 0 模式0 13位定时器/计数器0 1 模式1 16位定时器/计数器1 0 模式2 自动重装初值的8位定时器/计数器1 1 模式3 T0分为两个8位定时器/计数器;T1停止(1)C/T :工作方式选择位C/T = 1工作在计数方式,计数脉冲来自于外部脉冲输入端(P3.4,P3.5引脚);C/T = 0工作在定时方式,计数脉冲来自于内部机器周期。
(2)GATE:门控位GA TE = 0 时,定时器由TCON中的TR x(x =0,1)位进行控制,置1定时器/计数器启动,该位清0定时器/计数器停止;GA TE = 1时,外部中断引脚( INT0 或INT1 )上的高电平与TR x 共同控制。
(如:TR x 置1且相应外部中断引脚为高电平,定时器/计数器启动)。
定时器控制寄存器TCON0TF 0:定时/计数器0中断请求标志TR 1:定时/计数器1运行控制位TF 1:定时/计数器1中断请求标志3.定时器/计数器的工作模式工作模式的选择由TMOD 中的M 1M 0的值来决定,定时器/计数器T 0有4种工作模式(模式0、1、2、3),T1有3种工作模式(模式0、1、2),前3种工作模式,T 0和T 1除了所使用的寄存器、控制位和标志位不同外,其他的操作完全相同。
(1)工作模式0当M 1M 0为00时,定时器/计数器工作于模式0。
模式0为13位计数模式,最大计数值为213(8192),TH x 提供高8位,TL x 提供低5位。
程序初始化时,向TH x 和TL x 装入计数初值,启动计数后,开始加1计数,TL x 的低5位溢出后,向TH x 的最低位进位,TH x 溢出后将置位TCON 中的TF x,以申请中断。
由于此时TH x 、TL x 均回0,若需要继续计数,用户应在程序中再次装入计数初值。
由于模式0的进位特点,在装入计数初值时,13位二进制的高8位装入TH x 中,低5位装入TL x 中(TL x 的高3位无效,可补0)。
例:T0的计数初值为1000,TH 0、TL 0中的代码应该是什么?分析:由于补码的特点与定时/计数器回0溢出以申请中断的原理相同,故计数初值用-1000的补码(即1111,1100,0001,1000)来表示;由于模式0的特点,TH 0中装入E0H ,TL 0中装入18H 。
(2)工作模式1当M 1M 0为01时,定时器/计数器工作于模式1。
模式1为16位计数模式,最大计数值为216(65536),TH x 提供高8位,TL x 提供低8位。
其他情况和模式0相似。
(3)工作模式2当M 1M 0为10时,定时/计数器工作于模式2。
模式2为自动重装初值的8位计数器,TL x 作为工作计数器,TH x 作为初值寄存器。
程序初始化过程中,TH x 、TL x 装入相同的计数初值,启动计数器后,TL x 开始计数,TL x 溢出时,硬件置位TF x ,向CPU 发出中断请求,同时TH x 中的计数初值自动送入TL x 中,TL x 从初值开始从新计数,直到计数器被停止。
由于该方式省去了软件重装计数初值,所以该方式适合用于定时或计数较精确的情况。
(4)工作模式3当M1M0为11时,定时/计数器工作于模式3。
模式3仅适用于T0,此方式下,TH0和TL0成为两个独立的8位计数器。
TL0可以当作定时/计数器使用,占用T0在TMOD和TCON中的控制位和标志位;TH0只能用作定时器,占用T1的TR1和TF1。
此时T1仍可用于模式0,1,2,但不能使用中断方式。
在单片机串行通信中,一般将T1作为串行口波特率发生器,工作在模式2,此时将T0设置为模式3,可以额外增加一个8位的定时器。
4.对计数器输入信号的要求定时/计数器作计数器使用时,外部脉冲由T0(P3.4)或T1(P3.5)输入,在每个机器周期的S5P2期间采样一次该引脚电平,若前一次检测为“1”,后一次检测为“0”,则加法计数器加一。
新的计数值将在此后一个机器周期的S3P1期间装入TH x和TL x中,所以所采样的外部脉冲的“0”和“1”的持续时间都不能少于一个机器周期。
由于需要两个机器周期才能识别高电平到低电平的跳变,所以外部计数脉冲的周期应大于2倍机器周期。
如使用12MHZ 时钟,机器周期为1us,外部计数频率不能超过500KHZ。
对外部脉冲的占空比无特殊要求。
第二节定时/计数器应用编程单片机内部的2个定时/计数器是可编程器件,可以通过程序设定其功能。
其应用编程主要包括下述几个步骤:(1)根据定时要求或计数要求计算计数初值。
(2)根据要求确定工作模式,并将控制字写入TMOD。
(3)将计数初值写入TH x和TL x。
(4)若使用中断方式,开放中断(5)启动定时/计数器,即将TR x置位。
前4条在系统初始化程序部分完成,应根据具体的应用要求,在系统服务程序中利用TR x控制定时/计数器的启停。
例4-2利用定时计数器1定时,采用查询方式,在P1.1引脚输出1000HZ方波。
设T1为工作方式2,设置为定时状态,定时时间为方波周期的1/2即0.5mS,查询0.5mS 时间到,将P1.1的状态取反(假设晶振为6MHZ)。
先设置TMOD控制字:定时器/计数器1为定时器工作方式,C/T(TMOD.6) = “0”;非门控方式,GATE(TMOD.7)= “0”;采用工作方式2,M1(TMOD.5)=“1”,MO(TMOD.4)=“0”,定时器/计数器0没有使用,相应的D7~D4为随意态“X”,若取“X”为 0,则(TMOD)= 20H。
再计算0.5mS定时的T1初始值:由fosc = 6MHZ得Tc = 2μs,工作方式2时有T =(256 - X)Tc =(256 - X)* 2μs=500μS得 TH1 = TL1 = 06H。
程序如下:ORG 0100HSQU: MOV TMOD,#20H ;设置定时器/计数器工作方式MOV TH1,#06H ;设置定时初始值MOV TL1,#06HSETB TR1 ;启动定时器/计数器1LOOP: JBC TF1,$ ;定时时间不到循环等待CPL P1.1 ;P1.1状态取反SJMP LOOP例4-3 P1.0、P1.1经7407驱动LED交替发光并以每秒一次的频率闪烁。
硬件连接见图4-6。
(采用6MHZ 晶振)闪烁周期为1S,亮、灭各占一半,定时时间需要500mS。
使用6MHZ 晶振,单片机最长定时时间仅为131mS,所以需要采用软件记数方法扩展定时时间。
使用定时/计数器0,定时方式,工作方式1。
8051设置TMOD 控制字: TMOD = 01H 图4-6 驱动LED 电路图使用6MHZ 晶振,机器周期为2μs ,设定时时间100mS ,定时初值: 100 mS/2μs =50000,其十六进制补码:3CB0H 。
定时器溢出5次为500mS 。
软件流程见图4-7。
程序如下:ORG 0140H LED1: MOV TMOD,#01H ;设置定时器工作方式SETB P1.0 ;输出初始状态CLR P1.1 SETB TR0 ;启动定时器LOOP0: MOV R2,#05H ;送软件计数初值LOOP1: MOV TL0,#0B0H ;送定时常数MOV TH0,#3CH JBC TF0,$ ;循环等待定时时间到 DJNZ R2,LOOP1 ;软件计数–1≠0循环 XRL P1,#03H ;P1.0、P1.1求反 SJMP LOOP0 ;循环例4-4 当GATE X =“1”时,定时/计数器只有INT X 为高电平才能进行计数。
利用这一点,可以方便的测量脉冲信号的宽度。
设被测脉冲接至INT1引脚,将定时/计数器1设置为定时方式,即可进行脉宽测量。
要求测量脉宽单位为1μs ,选用12MHZ 晶振。
设置TMOD 控制字:GATE1 =“1”,定时/计数器1为定时方式C/T =“0”,选用工作方式1。
TMOD = 90H 。
定时初值为零,在脉冲下跳沿读出计数器的计数值即为脉冲宽度。
程序如下:ORG 0180HPULSEW : MOV TOMD ,#90H ;设置定时/计数 器工作方式CLR A ;定时初值为零MOV TH1,AMOV TL1,AJB P3.3,$ ;在低电平时启动定时,保证测量整个脉冲宽度。
SETB TR1 ;启动定时器JNB P3.3,$ ;等待脉冲到来JB P3.3,$ ;等待脉冲结束CLR TR1 ;停止计数MOV R2,TH1 ;读出脉冲宽度MOV R3,TL1……运行上面程序后,只要将R2、R3两单元内容转换成十进制数,即可送显示以读出脉冲图4-7 驱动LED 程序流程图宽度。
由于工作方式1的最大计数值为65536,所以上面程序所测脉冲宽度不能大于65536μs。
例4-5 利用单片机定时/计数器测量脉冲信号频率。
频率定义为单位时间1S内的周期数,用定时/计数器测频率,需要用一路定时器产生单位时间,另一路计数器对脉冲计数。
若被测量的信号频率较高,而测量精度有限的话,单位时间可以小于1S。
单位时间选用10mS,其间计的脉冲数乘以100即为信号频率。
设置工作方式:设单片机系统时钟频率fosc = 12MHz。
定时/计数器1定时,工作方式1,产生10mS 单位时间;定时/计数器0计数,工作方式1。