第6章AT89S51单片机的定时器计数器素材
第6章 89C51的定时器计数器
6.4.1 方式1应用 例6-1 假设系统时钟频率采用6MHz,要在P1.0上输出一个周期 为2ms的方波,如图6-13所示。
方波的周期用T0来确定,让T0每隔1ms计数溢出1次(每1ms 产生一次中断),CPU响应中断后,在中断服务程序中对 P1.0取反。
(1)计算初值X 设初值为X,则有: (216-X)×2×10-6=1×10-3 216-X=500 X=65036 X化为16进制,即X=FE0CH=1111111000001100B。 所以,T0的初值为: TH0=0FEH TL0=0CH (2)初始化程序设计 对寄存器IP、IE、TCON、TMOD的相应位进行正确设置, 将计数初值送入定时器中。
⑵ 工作方式1: T0初值 =216-500s/2s=65536–250=65286=FF06H TH0=FFH;TL0=06H。 ⑶ 工作方式2: T0初值 =28-500s/2s=256-250=6 TH0=06H;TL0=06H。 ⑷ 工作方式3: T0方式3时,被拆成两个8位定时器,定时初值可分 别计算,计算方法同方式2。两个定时初值一个装入TL0, 另一个装入TH0。因此: TH0=06H;TL0=06H。
⒋ 工作方式3 方式3仅适用于T0,T1无方式3。 ⑴ T0方式3 在方式3情况下,T0被拆成二个独立的8位计数器TH0、TL0。 TL0可以为定时/计数器; TH0只能作为8位定时器。 ① TL0使用T0原有的控制寄存器资 源:TF0,TR0,GATE,C/T,INT0,组成一个8位的定时/计数器; ② TH0借用T1的中断溢出标志TF1,运行控制开关TR1,只能 对片内机周脉冲计数,组成另一个8位定时器(不能用作计数 器)。 ⑵ T0方式3情况下的T1 T1由于其TF1、TR1被T0的TH0占用,计数器溢出时,只能 将输出信号送至串行口,即用作串行口波特率发生器。
第6章 AT89S51的定时器计数器
二、 TCON寄存器(定时器/计数器控制寄存器)
图6-3 TCON格式
低4位与外部中断有关,已介绍。高4位的功能如下:
(1) TF1、TF0——计数溢出标志位 (2) TR1、TR0——计数运行控制位
1:启动定时器/计数器工作 0:停止定时器/计数器工作
例:设置T0工作于方式1定时方式,用指令 MOV TMOD,#01H 启动T0工作,用指令 SETB TR0
3. 应用举例(续)
(3)程序设计
ORG AJMP ORG AJMP MAIN: ORG MOV MOV MOV SETB SETB SETB AJMP 0000H MAIN 000BH IT0P ;T0的中断入口 ;转T0中断处理程序IT0P
HERE: IT0P:
0100H TMOD,#01H ;设置T0为定时器方式1 TL0,#30H ;T0置初值 TH0,#0F8H TR0 ;启动T0计数 ET0 ;允许T0中断 EA ;CPU开中断 HERE ;自身跳转
图6-1 AT89S51单片机的定时器/计数器结构框图
单片机复位时,两个寄存器都清0。
一、TMOD寄存器(工作方式控制寄存器)
不能 位寻址
图6-2 TMOD格式
(1)GATE——门控位
0:以TRX(X=0,1)来启动定时器/计数器运行。 1:用外中断引脚(INT0或INT1)上的高电平和TRX两个 条件来启动定时器/计数器运行。
方式0最长可定时8.192ms 方式1最长可定时65.536ms 方式2最长可定时256s (1)计算计数初值X: (216 − X) 1 10−6 = 50 10−3 X = 15536 = 3CB0H (2)10次计数的实现:
定时器计数器讲解
TR1位(或TR0位)=1,启动定时器工作的必要条件。 TR1位(或TR0位)=0,停止定时器工作。 该位可由软件置“1”或清“0”。
10
6.2 定时器/计数器的4种工作方式 4种工作方式分别介绍如下。
6.2.1 方式0 当M1、M0为00时,定时器/计数器被设置为工作方式0,
这时定时器/计数器的等效逻辑结构框图如图6-4所示(以定 时器/计数器T1为例,TMOD.5、TMOD.4 = 00)。
(1)GATE=0时,A点(见图6-4)电位恒为1,B点电位仅 取决于TRx状态。TRx = 1,B点为高电平,控制端控制电子 开关闭合,允许T1(或T0)对脉冲计数。TRx = 0,B点为低 电平,电子开关断开,禁止T1(或T0)计数。
(2)GATE=1时,B点电位由INTX*(x = 0,1)的输入电 平和TRx的状态两个条件来定。当TRx=1,且INTX*=1时,B 点才为1,控制端控制电子开关闭合,允许T1(或T0)计数。 故这种情况下计数器是否计数是由TRx和INTX*两个条件来共 同控制。
图6-1 AT89S51单片机的定时器/计数器结构框图
4
只不过计数信号的来源不同。 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上
的外部脉冲进行计数(见图6-1) 定时器模式是对单片机的系统时钟信号经片内12分频后的
内部脉冲信号(机器周期)计数。由于时钟频率是定值,所 以可根据对内部脉冲信号的计数值可计算出定时时间。
本例由于采用定时器T0中断,因此需将IE寄存器中的EA、 ET0位置1。 (4)启动和停止定时器T0
AT89S51单片机的定时器计数器
查询程序虽简单,但CPU必须要不断查询TF0标志,工作
效率低。
35
资料仅供参考
【例6-2】系统时钟为6MHz,编写定时器T0产生1s定 时的程序。
基本思想:采用定时器模式。因定时时间较长,首先 确定采用哪一种工作方式。时钟为6MHz的条件下,定 时器各种工作方式最长可定时时间:
方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512s。 由上可见,可选方式1,每隔100ms中断一次,中断10 次为1s。
1.工作方式3下的T0 TMOD的低2位为11时,T0被选为方式3,各引脚与T0 的逻辑关系如图6-8。
定时器/计数器T0分为两个独立的8位计数器TL0和TH0, TL0使用T0的状态控制位C/T*、GATE、TR0、TF0,
资料仅供参考
而TH0被固定为一个8位定时器(不能作为外部计数 模式),并使用定时器T1的状态控制位TR1和TF1,同 时占用定时器T1的中断请求源TF1。 2.T0工作在方式3时T1的各种工作方式
11
资料仅供参考
图6-4 定时器/计数器方式0逻辑结构框图 13位计数器,由TLx(x = 0,1)低5位和THx高8位构 成。TLx低5位溢出则向THx进位,THx计数溢出则把 TCON中的溢出标志位TFx置“1”。
12
资料仅供参考
图6-2的C/T* 位控制的电子开关决定了定时器/计数器 的两种工作模式。
6.2.2 方式1
资料仅供参考
当M1、M0=01时,定时器/计数器工作于方式1,这时 定时器/计数器的等效电路逻辑结构见图6-5。
方式1和方式0的差别仅仅在于计数器的位数不同,方 式1为16位计数器,由THx高8位和TLx低8位构成(x=0, 1),方式0则为13位计数器,有关控制状态位的含义 (GATE、C/T* 、TFx、TRx)与方式0相同。
单片机应用和原理课件 AT89S51单片机的定时器 计数器 实验资源
第6章 实验资源
实验 定时器实验
一、实验要求
利用片内定时器/计数器来进行定时,定时时间间隔为1秒。
单片机的P1.0脚接1个发光二极管,控制发光二极管闪烁,时间间隔1秒。
当按下某一I/O口线上的按键操作时,发光二极管按设定的时间1秒定时闪烁。
二、实验目的
掌握单片机定时器/计数器定时模式的使用及编程。
三、知识点
定时器的初始化编程,主要是设置定时常数和有关特殊功能寄存器。
本例使用的是定时器模式,即定时中断,实现每1秒钟单片机的P1.0脚输出状态发生一次翻转,即发光二极管每1秒钟亮一次。
内部计数器用于定时器时,是对机器周期计数,可根据单片机的时钟频率算出机器周期,再计算出定时时间从而得出定时时间常数。
定时器实验参考电路
实验电路图 定时器实验
实验 计数器实验
一、实验要求
利用单片机内定时器/计数器T0的计数器模式,对T0引脚(P3.4脚)上的按键开关按下的
次数进行计数。
按一下按键开关产生一个计数脉冲,将脉冲个数(10个以内)在P1口驱动的LED数码管上显示出来。
例如按第1下,LED数码管显示1;按第2下,显示2……按第10下显示0。
二、实验目的
掌握单片机定时器/计数器计数模式的使用及编程。
三、知识点
本实验涉及单片机片内定时器/计数器T0的两种工作模式和4种工作方式。
如何来对定时器/计数器进行初始化以及计数的与显示的编程。
T0引脚作为外部计数脉冲的输入。
计数器实验参考电路
实验电路图 计数器实验。
ATS单片机的定时器计数器素材
计数器的起始计数都是从计数器的初值开始。单片机 复位时计数器的初值为0,也可用指令给计数器装入一个 新的初值。AT89S51的定时器/计数器属于增1计数器。 6.1.1 工作方式控制寄存器TMOD
AT89S51单片机的定时器/计数器工作方式寄存器 TMOD用于选择定时器/计数器的工作模式和工作方式, 字节地址为89H,不能位寻址,其格式如图6-2所示。
(1)C/T*=0,电子开关打在上面,T1(或T0)为定 时器模式,把时钟振荡器12分频后的脉冲作为计数信号。
(2)C/T*=1,电子开关打在下面,T1(或T0)为计 数器模式,计数脉冲为P3.4(或P3.5)引脚上的外部输入 脉冲,当引脚上发生负跳变时,计数器加1。
GATE位状态决定定时器/计数器的运行控制取决TRx 一个条件还是TRx和INTx*(x = 0,1)引脚状态两个条 件。
计数器模式是对加在T0(P3.4)和T1(P3.5)两个引 脚上的外部脉冲进行计数(见图6-1);
定时器工作模式是对系统的时钟振荡器信号经片内12 分频后的内部脉冲信号计数。由于时钟频率是定值,所 以12分频后的脉冲信号周期也为定值,所以可根据对内 部脉冲信号的计数值计算出定时时间。
4
第4页/共67页
13
第13页/共67页
(1) GATE =0,A点(见图6-4)电位恒为1,B点电 位仅取决于TRx状态。TRx = 1,B点为高电平,控制端 控制电子开关闭合,允许T1(或T0)对脉冲计数。 TRx =0,B点为低电平,电子开关断开,禁止T1(或T0) 计数。
(2) GATE =1,B点电位由 INTx* (x= 0,1)的输 入电平和TRx的状态这两个条件来确定。当TRx = 1,且 INTx* =1时,B点才为1,控制端控制电子开关闭合,允 许T1(或T0)计数。故这种情况下计数器是否计数是由 TRx和INTx* 两个条件来共同控制。
AT89S51单片机的定时器计数器
图7-5 方式1的逻辑结构框图
方式1和方式0差别仅仅在于计数器的位数不同
整理ppt
8
7.2.3 方式2
方式0和方式1最大特点是计数溢出后,计数器为全0。因此在 循环定时或循环计数应用时就存在用指令反复装入计数初值的问
题,这会影响定时精度,方式2就是为解决此问题而设置的。
当M1、M0=10时,工作方式2,等效逻辑结构见图7-6(以T1 为例,x=1)。
图7-3 TCON格式
整理ppt
6
这里仅介绍高4位功能。
(1)TF1、TF0—计数溢出标志位
当计数器计数溢出时,该位置“1”。使用查询方式时,此 位可供CPU查询,但应注意查询后,用软件及时将该位清 “0”。使用中断方式时,作为中断请求标志位,进入中断服务 程序后由硬件自动清“0”。
(2)TR1、TR0—计数运行控制位
工作方式2为自动恢复初值(初值自动装入)的8位定时器/计
数器,TLx(x=0,1)作为常数缓冲器,当TLx计数溢出时,在溢
出标志TFx置“1”的同时,还自动将THx中的初值送至TLx,使
TLx从初值开始重新计数。定时器/计数器方式2工作过程见图7-7
。
整理ppt
9
图7-6 方式2逻辑结构框图
整理ppt
15
(4)T1设置在方式3 T0方式3时,再把T1也设置成方式3,此时T1停止计数。
7.3 对外部输入的计数信号的要求 计数器模式时,计数脉冲来自外部输入引脚T0或T1。当输
入信号产生负跳变时,计数值增1。每个机器周期S5P2期间, 都对外部输入引脚T0或T1进行采样。如在第1个机器周期中采 得值为1,而在下一个机器周期中采得的值为0,则在紧跟着的 再下一个机器周期S3P1期间,计数器加1。由于确认一次负跳 变要花2个机器周期,即24个振荡周期,因此外部输入的计数 脉冲的最高频率为系统振荡器频率1/24。
AT89S51单片机的定时器计数器
7.4
定时器/计数器的编程和应用 4种工作方式中,方式0与方式1基本相同,只是计数位数
不同。方式0为13位,方式1为16位。由于方式0是为兼容MCS48而设,计数初值计算复杂,所以在实际应用中,一般不用 方式0,常采用方式1。 7.4.1 P1口控制8只LED每0.5s闪亮一次 【例7-1】在AT89S51的P1口上接有8只LED,原理电路见图
T0分为两个独立的8位计数器TL0和TH0,TL0使用T0的
状态控制位C/T* 、GATE、TR0 ,而TH0被固定为一个8位 定时器(不能作为外部计数模式),并使用定时器T1的状态 控制位TR1,同时占用定时器T1的中断请求源TF1。
12
图7-8
T0方式3的逻辑结构框图
2.T0工作在方式3时T1的各种工作方式 一般情况下,当T1用作串口波特率发生器时,T0才工作在
30
#include <reg51.h> //头文件reg51.h sbit P1_0=P1^0; //定义特殊功能寄存器P1的位变量P1_0 void main(void) //主程序 { TMOD=0x01; //设置T0为方式1 TR0=1; //接通T0 while(1) //无限循环 { TH0=0xfc; //置T0高8位初值 TL0=0x18; //置T0低8位初值 do {}while(!TF0); //判TF0是否为1,为1则T0溢出,往下 //执行,否则原地循环 P1_0=!P1_0; // P1.0状态求反 TF0=0; //TF0标志清零 } }
void main( )
{ TMOD=0x50; TH1=0xff; TL1=0xfc; EA=1; ET1=1; TR1=1; while(1) ; }
第6章 AT8S51单片机定时器计数器
ET0=1;
TR0=1; while(1) ; */ }
/*定时器T0中断允许*/
/*启动定时器T0*/ /*无穷循环,等待定时中断
23
/*以下为定时器T0的中断服务程序*/ void T0_int(void) interrupt 1 {TH0=0xee; T0溢出*/ TL0=0x00; /*给T0装入16位初值,计4608个数后,
4
6.1 概述
②T0两种工作状态( C T ) 位 (TMOD.2) =0 为内部定时 C T =1 为外部计数 ③T0可读可写 写T0就是对之赋初值 读T0就是检查T0当前的计数结果存 入单片机寄存器中 MOV DPTR,#DADA (此一条按字操作) ④中断功能 T0溢出时 计数结果为0000H 进位丢 失—CY(CY短时间还有)置位中断申请标志位 TF0 TCON.5 ⑤T0的启停可以被脚 P3.2 ,TR0位 GATE位所控制 T1同T0
本例由于采用定时器T1中断,因此需将IE寄存器中的EA、
ET1位置1。 (4)启动和停止定时器T1 将定时器控制寄存器TCON中的TR1=1,则启动定时器T1 计数;TR1=0,则停止定时器T1计数。 参考程序如下:
27
#include <reg51.h>
void Delay(unsigned int i)/* 定义延时函数Delay( ),i是形式参数,不 能赋初值*/ {unsiБайду номын сангаасned int j; for(;i>0;i--) /* 变量i由实际参数传入一个值,因此i不能赋初值*/ for(j=0;j<125;j++) {; } } /*空函数*/
22
#include<reg51.h>
毕业回馈-89c51之定时器计数器(TimerCount)
毕业回馈-89c51之定时器计数器(TimerCount)今天分享的是89c51系列单⽚机的内部资源定时器/计数器,在所有的嵌⼊式系统中都包含这两个内部功能。
⾸先先了解⼏个定时器/计数器相关的概念:•时钟周期:时钟周期 T 是时序中最⼩的时间单位,具体计算的⽅法就是1/时钟源频率,(⼀般单⽚机采⽤的是11.0592mHz)•机器周期:我们的单⽚机完成⼀个操作的最短时间。
标准51单⽚机,⼀个机器周期是 12 个时钟周期,也就是 12/11059200 秒。
•定时器:当T/C⼯作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加1,计数频率=当前单⽚机⼯作频率/12。
当单⽚机⼯作在12MHz时,计数频率=1MHz,单⽚机每1us计数值加1。
•计数器:计数脉冲来⾃外部脉冲输⼊引脚 T0(P3.4)或T1(P3.5)。
当T0或T1引脚上负跳变时计数值加1。
识别引脚上的负跳变需要2个机器周期,即24个振荡周期。
所以T0或者T1 输⼊的可计数外部脉冲的最⾼频率为当前单⽚机⼯作频率/24。
当单⽚机⼯作在12MHz时,最⾼计数频率为500KHz,⾼于该频率将计数出错。
定时器/计数器所涉及到的寄存器如下:其中TCON为定时器/计数器T0,T1的可控制及窜起,同时也锁存T0,T1溢出中断源和外部请求中断源等。
TCON寄存器可以进⾏位寻址TCON中每⼀位的使⽤如下:注:TF1:定时器/计数器T1溢出标志。
T1被允许计数以后,从初值开始加1计数。
当最⾼位产⽣溢出时由硬件置‘1’TF1,向CPU发送中断请求,⼀直保持到CPU响应中断时,由硬件⾃动清零,当不执⾏中断时,也可以通过查询的⽅式对TF1标志位进⾏软件清零TR1:定时器T1的运⾏控制位。
由软件置位和清零。
当GATE(TMOD.7)=0,TR1=1时就运⾏T1开始计数,TR1=0时禁⽌T1计数。
当GATE(TMOD.7)=1,TR1=1且INTI外部输⼊⾼电平时,才允许T1计数TF0:同TF1拥有两种清零⽅式TMOD寄存器不可位寻址:每⼀位的使⽤如下:THx/TLx(x=0,1)介绍如下:T/C是16位的,计数寄存器由TH⾼8位和TL低8位构成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图6-10 T0工作在方式3时T1为方式1的工作示意图
26
(3)T1工作在方式2 当T1的控制字中M1、M0 = 10时,T1的工作方式为方
式2,工作示意图如图6-11所示。
图6-11 T0工作在方式3时T1为方式2的工作示意图
27
(4)T1设置在方式3
当T0设置在方式3,再把T1也设成方式3,此时T1停止
5
计数器的起始计数都是从计数器的初值开始。单片机 复位时计数器的初值为0,也可用指令给计数器装入一个 新的初值。AT89S51的定时器/计数器属于增1计数器。
6.1.1 工作方式控制寄存器TMOD
AT89S51单片机的定时器/计数器工作方式寄存器 TMOD用于选择定时器/计数器的工作模式和工作方式, 字节地址为89H,不能位寻址,其格式如图6-2所示。
图6-2
TMOD格式
8位分为两组,高4位控制T1,低4位控制T0。 TMOD各位功能。 (1)GATE—门控位。 0:仅由运行控制位TRx(x = 0,1)来控制定时 器/计数器运行。 1:用外中断引脚INT0*( 或 INT1* )上的电平与 运行控制位TRx来共同控制定时器/计数器运行。
7
(2)M1、M0—工作方式选择位 M1、M0共4种编码,4种工作方式选择,见表6-1。
计数。定时器/计数器的方式2工作过程见图6-7。
图6-7 方式2工作过程 该方式可省去用户软件中重装初值的指令执行时间, 简化定时初值的计算方法,可相当精确地确定定时时间。
21
6.2.4 方式3 为增加一个8位定时器/计数器而设,使AT89S51单片机 具有3个定时器/计数器。 方式3只适用于T0,T1不能工作在方式3。T1处于方式3 时相当于TR1=0,停止计数(此时T1可用来作为串行口 波特率产生器)。 1.工作方式3下的T0
图6-8 定时器/计数器T0方式3的逻辑结构框图 24
(1)T1工作在方式0
T1的控制字中M1、M0 = 00时,T1工作在方式0,工作
示意如图6-9。
图6-9 T0工作在方式3时T1为方式0的工作示意图
25
(2)T1工作在方式1
当T1的控制字中M1、M0 = 01时,T1工作在方式1,工
作示意图如图6-10所示。
TR1位(或TR0位)=1,启动定时器/计数器工作的必 要条件。
TR1位(或TR0位)= 0,停止定时器/计数器工作。 该位可由软件置“1”或清“0”。
11
6.2 定时器/计数器的4种工作方式 4种工作方式如下。 6.2.1 方式0 M1、M0=00时,被设置为工作方式0,等效逻辑结构
框图见图6-4(以定时器/计数器T1为例,TMOD.5、
查询程序虽简单,但CPU必须要不断查询TF0标志,工作 36 效率低。
【例6-2】系统时钟为6MHz,编写定时器T0产生1s定 时的程序。
基本思想:采用定时器模式。因定时时间较长,首先
确定采用哪一种工作方式。时钟为6MHz的条件下,定
时器各种工作方式最长可定时时间:
方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512s。 由上可见,可选方式1,每隔100ms中断一次,中断10 次为1s。
图6-5 定时器/计数器方式1逻辑结构框图
17
6.2.3 方式2
方式0和方式1的最大特点是计数溢出后,计数器清0。
因此在循环定时或循环计数应用时就存在用指令反复装
入计数初值的问题。这不仅影响定时精度,也给程序设
计带来麻烦。方式2就是针对此问题而设置的。
当M1、M0为10时,定时器/计数器处于工作方式2,
这时定时器/计数器的等效逻辑结构如图6-6(以定时器T1
为例,x= 1)。
图6-6 方式2逻辑结构框图
方式2为自动恢复初值(初值自动装入)的8位 定时器/计数器。 TLx(x = 0,1)作为常数缓冲器,当TLx计数 溢出时,在溢出标志TFx置“1”的同时,还自动 将THx中的初值送至TLx,使TLx从初值开始重新
8
(3)C/T* —计数器模式和定时器模式选择位 0:定时器工作模式,对单片机的晶体振荡器12
分频后的脉冲进行计数。
1:计数器工作模式,计数器对外部输入引脚 T0(P3.4)或T1(P3.5)的外部脉冲(负跳变) 计数。
9
6.1.2 定时器/计数器控制寄存器TCON 字节地址为88H,可位寻址,位地址为88H~ 8FH。格式见图6-3。
33
参考程序如下:
34
程序说明:当单片机复位时,从程序入口0000H跳向主 程序MAIN处执行。其中调用了T0初始化子程序PT0M0。 子程序返回后,程序执行“AJMP HERE”指令,则 循环等待。 当响应T0定时中断时,则跳向T0中断入口,再从T0中 断入口跳向IT0P标号处执行T0中断服务子程序。 35
器TH0、TL0构成,定时器/计数器T1由特殊功能寄存器TH1、
TL1构成。
图6-1
定时器/计数器结构框图
3
两种工作模式(定时器、计数器); 4种工作方式(方式0、方式1、方式2和方式3)。
TMOD用于选择定时器/计数器T0、T1的工作模式和
工作方式。 TCON用于控制T0、T1的启动和停止计数,同时包含
32
(2)初始化程序设计 采用定时器中断方式工作。包括定时器初始化和中断系 统初始化,主要是对寄存器IP、IE、TCON、TMOD的相 应位进行正确的设置,并将计数初值送入定时器中。
(3)程序设计 还要注意将计数初值重新装入定时器,为下一次产生中断
做准备。
中断服务子程序除了完成所要求的产生方波的工作之外,
6.2.2 方式1
当M1、M0=01时,定时器/计数器工作于方式1,这时
定时器/计数器的等效电路逻辑结构见图6-5。 方式1和方式0的差别仅仅在于计数器的位数不同,方 式1为16位计数器,由THx高8位和TLx低8位构成(x=0, 1),方式0则为13位计数器,有关控制状态位的含义
(GATE、C/T* 、TFx、TRx)与方式0相同。
TMOD.4 = 00)。
12
图6-4 定时器/计数器方式0逻辑结构框图 TLx低5位溢出则向THx进位,THx计数溢出则把TCON 中的溢出标志位TFx置“1”。
13
13位计数器,由TLx(x = 0,1)低5位和THx高8位构成。
图6-2的C/T* 位控制的电子开关决定了定时器/计数器 的两种工作模式。
(1)C/T*=0,电子开关打在上面,T1(或T0)为定 时器模式,把时钟振荡器12分频后的脉冲作为计数信号。 (2)C/T*=1,电子开关打在下面,T1(或T0)为计 数器模式,计数脉冲为P3.4(或P3.5)引脚上的外部输入 脉冲,当引脚上发生负跳变时,计数器加1。 GATE位状态决定定时器/计数器的运行控制取决TRx 一个条件还是TRx和INTx*(x = 0,1)引脚状态两个条 件。
计数。
6.3 对外部输入的计数信号的要求
当定时器/计数器工作在计数器模式时,计数脉冲来自
外部输入引脚T0或T1。当输入信号产生负跳变时,计数
器的值增1。 每个机器周期的S5P2期间,都对外部输入引脚T0或T1 进行采样。如在第一个机器周期中采得的值为1,而在下 一个机器周期中采得的值为0,则在紧跟着的再下一个机
14
(1) GATE =0,A点(见图6-4)电位恒为1,B点电
位仅取决于TRx状态。TRx = 1,B点为高电平,控制端
控制电子开关闭合,允许T1(或T0)对脉冲计数。
TRx =0,B点为低电平,电子开关断开,禁止T1(或T0)
计数。 (2) GATE =1,B点电位由 INTx* (x= 0,1)的输 入电平和TRx的状态这两个条件来确定。当TRx = 1,且 INTx* =1时,B点才为1,控制端控制电子开关闭合,允 许T1(或T0)计数。故这种情况下计数器是否计数是由 TRx和INTx* 两个条件来共同控制。
37
(1)计算计数初值X 因为(216 − X)×2 ×10−6 = 10−1,所以X = 15536 = 3CB0H 因此 TH0 = 3CH,TL0 = B0H。 (2)10次计数的实现 对于中断10次的计数,采用B寄存器作为中断次数计数器。 (3)程序设计 参考程序如下:
38
程序说明:不论1s定时时间是否已到,都返回到“SJMP HERE”指令处。“SJMP HERE”指令实际是一段主程序。 在这段主程序中再通过对F0标志的判定,可知1s定时是否到 再进行具体处理。 39
了T0、T1的状态。
4
T0、T1不论是工作在定时器模式还是计数器模式,
实质都是对脉冲信号进行计数,只不过是计数信号的来
源不同。
计数器模式是对加在T0(P3.4)和T1(P3.5)两个引
脚上的外部脉冲进行计数(见图6-1); 定时器工作模式是对系统的时钟振荡器信号经片内12 分频后的内部脉冲信号计数。由于时钟频率是定值,所 以12分频后的脉冲信号周期也为定值,所以可根据对内 部脉冲信号的计数值计算出定时时间。
了确保某一给定电平在变化之前能被采样一次,则这一
电平至少要保持一个机器周期。
故对外部输入信号的要求如图6-12所示,图中Tcy
为机器周期。
图6-12 对外部计数输入信号的要求
30
6.4 定时器/计数器的编程和应用 4种方式,方式0与方式1基本相同,只是计数位数不同。 方式0初值计算复杂,一般不用方式0,而用方式1。 6.4.1 方式1的应用 【例6-1】假设系统时钟频率采用6MHz,在P1.0引脚上 输出一个周期为2ms的方波,如图6-13。
器周期S3P1期间,计数器加1。
由于确认一次负跳变要花2个机器周期,因此外部输
入的计数脉冲的最高频率为系统振荡器频率的1/24。
例如,选用6MHz频率的晶体,允许输入的脉冲频率