AT89S51单片机的定时器计数器

合集下载

定时器计数器讲解

定时器计数器讲解
6-13所示,计数输入引脚T1(P3.5)上外接开关K1,作为 计数信号输入。按4次K1后,P1口的8只LED闪烁不停。 (1)设置TMOD寄存器
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

AT89C51定时计数器T0作定时应用技术

AT89C51定时计数器T0作定时应用技术

15.定时计数器T0作定时应用技术(一)1.实验任务用A T89S51单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始。

硬件电路如下图所示2.电路原理图图4.15.13.系统板上硬件连线(1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

(2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。

4.程序设计内容A T89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。

只要通过设置特殊功能寄存器TMOD,即可完成。

定时/计数器何时工作也是通过软件来设定TCON 特殊功能寄存器来完成的。

现在我们选择16位定时工作方式,对于T0来说,最大定时也只有65536us,即65.536ms,无法达到我们所需要的1秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取T0的最大定时为50ms,即要定时1秒需要经过20次的50ms的定时。

对于这20次我们就可以采用软件的方法来统计了。

因此,我们设定TMOD=00000001B,即TMOD=01H下面我们要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出TH0=(216-50000)/256TL0=(216-50000)MOD256当T0在工作的时候,我们如何得知50ms的定时时间已到,这回我们通过检测TCON特殊功能寄存器中的TF0标志位,如果TF0=1表示定时时间已到。

单片机应用和原理课件 AT89S51单片机的定时器 计数器 虚拟仿真设计案例

单片机应用和原理课件 AT89S51单片机的定时器 计数器 虚拟仿真设计案例

第6章虚拟仿真设计案例本章的虚拟设计仿真案例的源程序清单及虚拟仿真运行文件见拓展资源。

必须在Proteus7.5版本环境下运行。

1. 秒定时器的设计利用片内定时器/计数器来进行定时,定时时间间隔为1秒。

原理电路如图5-6所示。

单片机P1.0脚控制发光二极管闪烁,时间间隔1秒。

图5-6 利用定时器控制发光二极管1秒闪亮1次定时器的初始化编程,主要是设置定时常数和有关特殊功能寄存器。

本例使用定时器模式,即定时中断,实现每1秒钟单片机的P1.0脚输出状态发生一次翻转,即发光二极管每1秒钟闪亮一次。

内部计数器用于定时器时,是对机器周期计数,可根据单片机的时钟频率算出机器周期,再计算出定时时间从而得出定时时间常数。

参考源程序清单及虚拟仿真运行文件见拓展资源。

在Proteus7.5版本环境下运行。

2. 计数器的应用如图5-8所示,定时器T1采用计数模式,方式1中断,计数输入引脚T1(P3.5)上外接按钮开关,作为计数信号输入。

按4次按钮开关后,P1口的8只LED闪烁不停。

对各相关的特殊功能寄存器的设置如下。

(1)设置TMOD寄存器定时器T1工作在方式1,应使TMOD寄存器的M1、M0=01;设置C/T =1,为计数器模式;对T0的运行控制仅由TR0来控制,应使GA TE0=0。

定时器T0不使用,各相关位均设为0。

所以,TMOD寄存器应初始化为0x50。

(2)T1的计数初值的设置由于每按1次按钮开关,计数器计数1次,按4次后,P1口8只LED闪烁不停。

因此计数器的初值为65 536−4=65 532,将其转换成十六进制后为0xfffc,所以,TH0=0xff,TL0=0xfc。

(3)IE寄存器的设置本例由于采用T1中断,需将IE寄存器中的EA、ET1位置1。

图5-8 由外部计数输入信号控制LED的闪烁(4)启动和停止定时器T1将定时器控制寄存器TCON中的TR1=1,则启动定时器T1计数;TR1=0,则停止T1计数。

单片机原理及应用_黄河科技学院中国大学mooc课后章节答案期末考试题库2023年

单片机原理及应用_黄河科技学院中国大学mooc课后章节答案期末考试题库2023年

单片机原理及应用_黄河科技学院中国大学mooc课后章节答案期末考试题库2023年1.AT89S51单片机的串行口,数据输出端为()。

参考答案:TXD2.AT89S51单片机定时器/计数器T1的中断向量号为()。

参考答案:33.Keil C51的unsigned int数据类型是()。

参考答案:无符号整型变量4.访问片外RAM数据,在C51中该数据的存储类型为()。

参考答案:xdata5.数字温度传感器DS18B20是()总线的器件参考答案:单6.AT89S51单片机有4 组位并行I/O口。

参考答案:87.AT89S51单片机片片外最多可扩展 KB的程序存储器。

参考答案:648.AT89S51有个可编程定时器/计数器参考答案:29.某RAM芯片有12条地址线,可寻址 KB个存储单元参考答案:410.波特率是指串行口每发送或接收的数据参考答案:秒钟11.AT89S51单片机采用并行总线方式外扩器件时,地址总线的高8位由()口提供参考答案:P212.C51中断函数的关键字是()参考答案:interrupt13.AT89S51单片机有( )组工作寄存器参考答案:414.ADC0809是( )位的数模转换器参考答案:815.如果单片机的晶振是6MHz,则其机器周期为()参考答案:2μS16.单片机的I/O端口做通用I/O时,若要读某个引脚,需要先对该端口位写()。

参考答案:117.C51提供了()存储类型类访问ROM。

参考答案:code18.如果需要用到AT89S51单片机的特殊功能寄存器以及一些存储定义,需要加载头文件()。

参考答案:reg51.h19.下面哪一种不属于C51扩展的数据类型参考答案:double20.单片机复位时,系统默认的当前工作寄存器为第()组。

参考答案:21.程序在运行时,当前PC的值是()。

参考答案:当前正在执行的指令的下一条指令的地址22.C51 中以字节形式对xdata区进行寻址,用()宏定义。

第6章 定时器计数器

第6章 定时器计数器
28
期间,计数器加1。由于确认一次负跳变要花 个机器周期, 确认一次负跳变要花2个机器周期 确认一次负跳变要花 因此外部输入的计数脉冲的最高频率为系统振荡器频率的 外部输入的计数脉冲的最高频率为系统振荡器频率的 外部输入的计数脉冲的最高频率 1/24。 例如,选用6MHz频率的晶体,允许输入的脉冲频率最高为 250kHz。如果选用12MHz频率的晶体,则可输入最高频 率为500kHz的外部脉冲。 对于外部输入信号的占空比并没有什么限制,但为了确保某 占空比并没有什么限制 占空比并没有什么限制 一给定电平在变化之前能被采样一次,则这一电平至少要 至少要 保持一个机器周期。 保持一个机器周期
T 、GATE、TR0、
22
TF0 ,而TH0被固定为一个 位定时器 固定为一个8位定时器 固定为一个 位定时器(不能作为外部计数 模式),并使用定时器T1的状态控制位TR1和TF1,同时 占用定时器T1的中断请求源TF1。 2.T0工作在方式 时T1的各种工作方式 . 工作在方式 工作在方式3时 的各种工作方式 一般情况下,当T1用作串行口的波特率发生器时,T0才工 当 用作串行口的波特率发生器时 用作串行口的波特率发生器时, 才工 作在方式3。 作在方式 。T0处于工作方式3时,T1可定为方式0、方式 1和方式2,用来作为串行口的波特率发生器,或不需要中 断的场合。
18
定时器/计数器的方式 为自动恢复初值 方式2为自动恢复初值 方式 为自动恢复初值(初值自动装入)的 8位定时器/计数器 位定时器 计数器 计数器。 TLx(x = 0,1)作为常数缓冲器,当TLx计数溢出时,在溢出 自动将THx中的初值送至 中的初值送至TLx, 标志TFx置“1”的同时,还自动将 自动将 中的初值送至 使TLx从初值开始重新计数。定时器/计数器的方式2工作 过程如图6-7所示。

单片机应用和原理课件 AT89S51单片机的定时器 计数器 实验资源

单片机应用和原理课件 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引脚作为外部计数脉冲的输入。

计数器实验参考电路
实验电路图 计数器实验。

用AT89S51单片机的定时

用AT89S51单片机的定时

用AT89S51单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始。

程序设计内容AT89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。

只要通过设置特殊功能寄存器TMOD,即可完成。

定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。

现在我们选择16位定时工作方式,对于T0来说,最大定时也只有65536us,即65.536ms,无法达到我们所需要的1秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取T0的最大定时为50ms,即要定时1秒需要经过20次的50ms的定时。

对于这20次我们就可以采用软件的方法来统计了。

因此,我们设定TMOD=00000001B,即TMOD=01H下面我们要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出TH0=(216-50000) / 256TL0=(216-50000) MOD 256当T0在工作的时候,我们如何得知50ms的定时时间已到,这回我们通过检测TCON特殊功能寄存器中的TF0标志位,如果TF0=1表示定时时间已到。

程序框图C语言源程序(查询法)#include <AT89X51.H>unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char second;unsigned char tcount;void main(void){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;tcount=0;second=0;P0=dispcode[second/10];P2=dispcode[second%10];while(1){if(TF0==1){tcount++;if(tcount==20){tcount=0;second++;if(second==60){second=0;}P0=dispcode[second/10];P2=dispcode[second%10];}TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;}}}C语言源程序(中断法)#include <AT89X51.H>unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char second;unsigned char tcount;void main(void){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;tcount=0;second=0;P0=dispcode[second/10];P2=dispcode[second%10];while(1);}void t0(void) interrupt 1 using 0{tcount++;if(tcount==20){tcount=0;second++;if(second==60){second=0;}P0=dispcode[second/10];P2=dispcode[second%10]; }TH0=(65536-50000)/256;TL0=(65536-50000)%256;}。

单片机(c语言版)定时器计数器..

单片机(c语言版)定时器计数器..
21
#include<reg51.h> Char i=100;/*给变量i赋初值,定时0.5S,每次定时中断 5MS,需要中断100次*/ void main( ) { TMOD=0x01; /*设置定时器T0为方式1*/ TH0=0xee; /*向TH0写入初值的高8位*/ TL0=0x00; /*向TL0写入初值的低8位*/ P1=0x00; /*P1口8只LED点亮*/ EA=1; /*总中断允许*/ ET0=1; /*定时器T0中断允许*/ TR0=1; /*启动定时器T0*/ while(1) ; /*无穷循环,等待定时中断*/ }
定时时间:计数器溢出时间,时间常数越大,定时
时间就越短;时间常数越小,定时时间就越长。时 钟的频率越高,定时时间越短;时钟的频率越低, 定时时间越长。
设系统时钟的频率为fosc,计数器的初始值为N,定 时器工作于方式1,则定时时间: T=(216-N)×12/fosc (1) 如果定时器工作于方式2或方式3,定时时间为: T=(28-N)×12/fosc (2)
6.4 定时器/计数器的编程和应用
MCS-51单片机的定时器是可编程的,但在进行定时或计数
之前要对程序进行初始化,具体步骤如下: (1)确定工作方式字:对TMOD寄存器正确赋值; (2)确定定时初值:计算初值,直接将初值写入寄存器的TH0 、TL0或TH1、TL1; 初值计算:设计数器的最大值为M,则置入的初值X为: 计数方式:X=M-计数值 定时方式:由(M-X)T=定时值,得X=M-定时值/T T为计数周期,是单片机的机器周期。 (模式0-M为213,模式1-M为216,模式2和3-M为28) (3)根据需要,对IE置初值,开放定时器中断; (4)启动定时/计数器,对TCON寄存器中的TR0或TR1置位, 置位以后,计数器即按规定的工作模式和初值进行计数或开 始定时。

第6章 AT8S51单片机定时器计数器

第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>

第6章AT89S51单片机的定时器计数器-

第6章AT89S51单片机的定时器计数器-
定时器工作模式是对单片机的时钟振荡器信号经片内
6
12分频后的内部脉冲信号计数。由于时钟频率是定值,所以 可根据计数值计算出定时时间。
计数器的起始计数都是从计数器初值开始的。单片机复位时 计数器的初值为0,也可用指令给计数器装入一个新的初 值。
6.1.1 工作方式控制寄存器TMOD 用于选择定时器/计数器的工作模式和工作方式,字节地址为
设需要装入T0的初值为X,则有(216−X)210−6=1 10−3, 216−X=500,X=65036。
X化为十六进制数,即: 65036 = FE0CH 。
T0的初值为TH0 =FEH,TL0 = 0CH。
32
(2)初始化程序设计 采用定时器中断方式工作。包括定时器初始化和中断系 统初始化,主要是对寄存器IP、IE、TCON、TMOD的相 应位进行正确的设置,并将计数初值送入定时器中。 (3)程序设计 中断服务子程序除了完成所要求的产生方波的工作之外, 还要注意将计数初值重新装入定时器,为下一次产生中断 做准备。 本例,主程序用一条转至自身的短跳转指令来代替。
33
参考程序如下:
ORG 0000H RESET: AJMP MAIN
ORG 000BH AJMP IT0P ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#01H ACALL PT0M0 HERE: AJMP HERE
;程序入口 ;转主程序 ;T0中断入口 ;转T0中断处理程序IT0P ;主程序入口 ;设堆栈指针 ;设置T0为方式1定时 ;调用初始化子程序PT0M0 ;原地循环,等待中断
TMOD用于选择定时器/计数器T0、T1的工作模式和工 作方式。
TCON用于控制T0、T1的启动和停止计数,同时包含 了T0、T1的状态。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

查询程序虽简单,但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相同。
图6-9 T0工作在方式3时T1为方式0的工作示意图
24
(2)T1工作在方式1
资料仅供参考
当T1的控制字中M1、M0 = 01时,T1工作在方式1,工 作示意图如图6-10所示。
图6-10 T0工作在方式3时T1为方式1的工作示意图
25
资料仅供参考
(3)T1工作在方式2 当T1的控制字中M1、M0 = 10时,T1的工作方式为方式 2,工作示意图如图6-11所示。
每个机器周期的S5P2期间,都对外部输入引脚T0或T1 进行采样。如在第一个机器周期中采得的值为1,而在下 一个机器周期中采得的值为0,则在紧跟着的再下一个机 器周期S3P1期间,计数器加1。
资料仅供参考
由于确认一次负跳变要花2个机器周期,因此外部输 入的计数脉冲的最高频率为系统振荡器频率的1/24。
计数器的起始计数都是从计数器的初值开始。单片机 复位时计数器的初值为0,也可用指令给计数器装入一个 新的初值。AT89S51的定时器/计数器属于增1计数器。 6.1.1 工作方式控制寄存器TMOD
AT89S51单片机的定时器/计数器工作方式寄存器 TMOD用于选择定时器/计数器的工作模式和工作方式, 字节地址为89H,不能位寻址,其格式如图6-2所示。
例如,选用6MHz频率的晶体,允许输入的脉冲频率 最高为250kHz。如果选用12MHz频率的晶体,则可输入 最高频率为500kHz的外部脉冲。
对于外部输入信号的占空比并没有什么限制,但为 了确保某一给定电平在变化之前能被采样一次,则这一 电平至少要保持一个机器周期。
资料仅供参考
故对外部输入信号的要求如图6-12所示,图中Tcy 为机器周期。
13
资料仅供参考
(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* 两个条件来共同控制。
(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-11 T0工作在方式3时T1为方式2的工作示意图
26
(4)T1设置在方式3
资料仅供参考
当T0设置在方式3,再把T1也设成方式3,此时T1停止 计数。
6.3 对外部输入的计数信号的要求
当定时器/计数器工作在计数器模式时,计数脉冲来自 外部输入引脚T0或T1。当输入信号产生负跳变时,计数 器的值增1。
计数器模式是对加在T0(P3.4)和T1(P3.5)两个引 脚上的外部脉冲进行计数(见图6-1);
定时器工作模式是对系统的时钟振荡器信号经片内12 分频后的内部脉冲信号计数。由于时钟频率是定值,所 以12分频后的脉冲信号周期也为定值,所以可根据对内 部脉冲信号的计数值计算出定时时间。
4
资料仅供参考
资料仅供参考
图6-2 TMOD格式 8位分为两组,高4位控制T1,低4位控制T0。 TMOD各位功能。 (1)GATE—门控位。 0:仅由运行控制位TRx(x = 0,1)来控制定时 器/计数器运行。 1:用外中断引脚INT0*( 或 INT1* )上的电平与 运行控制位TRx来共同控制定时器/计数器运行。
资料仅供参考
图6-6 方式2逻辑结构框图
资料仅供参考
方式2为自动恢复初值(初值自动装入)的8位 定时器/计数器。
TLx(x = 0,1)作为常数缓冲器,当TLx计数 溢出时,在溢出标志TFx置“1”的同时,还自动 将THx中的初值送至TLx,使TLx从初值开始重新 计数。定时器/计数器的方式2工作过程见图6-7。
8
资料仅供参考
6.1.2 定时器/计数器控制寄存器TCON 字节地址为88H,可位寻址,位地址为88H~ 8FH。格式见图6-3。
图6-3 TCON格式
资料仅供参考
(1)TF1、TF0—计数溢出标志位。
当计数器计数溢出时,该位置“1”。使用查询方式时, 此位作为状态位供CPU查询,但应注意查询有效后,应 使用软件及时将该位清“0”。使用中断方式时,此位作 为中断请求标志位,进入中断服务程序后由硬件自动清 “0”。
X化为16进制数,即: 65036 = FE0CH 。 T0的初值为TH0 = FEH,TL0 = 0CH。
31
资料仅供参考
(2)初始化程序设计 采用定时器中断方式工作。包括定时器初始化和中断系 统初始化,主要是对寄存器IP、IE、TCON、TMOD的相 应位进行正确的设置,并将计数初值送入定时器中。 (3)程序设计 中断服务子程序除了完成所要求的产生方波的工作之外, 还要注意将计数初值重新装入定时器,为下一次产生中断 做准备。
资料仅供参考
内容概要
AT89S51单片机片内两个可编程的定时器/计数器T1、T0 ➢ 结构与功能 ➢ 两种工作模式和4种工作方式 ➢ TMOD和TCON各位的定义及其编程 ➢ 编程应用案例
1
6.1 定时器/计数器的结构
资料仅供参考
定时器/计数器结构如图6-1,定时器/计数器T0由特殊功能寄存 器TH0、TL0构成,定时器/计数器T1由特殊功能寄存器TH1、 TL1构成。
图6-12 对外部计数输入信号的要求 29
资料仅供参考
6.4 定时器/计数器的编程和应用
4种方式,方式0与方式1基本相同,只是计数位数不同。 方式0初值计算复杂,一般不用方式0,而用方式1。
6.4.1 方式1的应用
【例6-1】假设系统时钟频率采用6MHz,在P1.0引脚上 输出一个周期为2ms的方波,如图6-13。
32
参考程序如下:
资料仅供参考
33
资料仅供参考
程序说明:当单片机复位时,从程序入口0000H跳向主 程序MAIN处执行。其中调用了T0初始化子程序PT0M0。
子程序返回后,程序执行“AJMP HERE”指令,则 循环等待。
当响应T0定时中断时,则跳向T0中断入口,再从T0中 断入口跳向IT0P标号处执行T0中断服务子程序。 34
图6-1 定时器/计数器结构框图
2
资料仅供参考
两种工作模式(定时器、计数器); 4种工作方式(方式0、方式1、方式2和方式3)。 TMOD用于选择定时器/计数器T0、T1的工作模式和 工作方式。 TCON用于控制T0、T1的启动和停止计数,同时包含 了T0、T1的状态。
3
资料仅供参考
T0、T1不论是工作在定时器模式还是计数器模式, 实质都是对脉冲信号进行计数,只不过是计数信号的来 源不同。
(2)TR1、TR0—计数运行控制位。
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)。
资料仅供参考
图6-5 定时器/计数器方式1逻辑结构框图
16
资料仅供参考
6.2.3 方式2 方式0和方式1的最大特点是计数溢出后,计数器清0。
相关文档
最新文档