版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
16.1定时器/计数器T0和T1的结构及工作原理6.1.1定时器/计数器T0和T1的基本结构6.1.280C51单片机定时器/计数器的工作原理6.2定时器/计数器T0和T1的控制寄存器6.3定时器/计数器的工作方式6.4定时器/计数器T0、T1的应用2第6章80C51单片机定时器/计数器在工业测控应用中,经常需要产生精确的定时或者延时控制,如果采用软件定时,则需要占用CPU运行时间,降低单片机工作效率;许多场合还要用到对外部事件计数的功能。MCS-51系列中51子系列单片机片内集成2个16位可编程控制的定时器/计数器T0和T1,52子系列片内集成3个,第3个是定时器T2。T0、T1是MCS-51单片机的片内功能部件,它们既可用作定时器方式,又可用作计数器方式。本章主要介绍80C51单片机定时器/计数器T0和T1的结构、工作原理及应用。6.1定时器/计数器T0和T1的结构及工作原理只有掌握T0和T1的结构及工作原理,才能熟练使用MCS-51系列单片机片内的定时器和计数器。6.1.1定时器/计数器T0和T1的结构80C51单片机定时器/计数器T0、T1的结构如图6-1所示,T0、T1是2个16位加法计数器,T0由TH0和TL02个SFR组成加计3数单元,T1由TH1和TL12个SFR组成加计数单元。TH1、TL1、TH0、TL0只能按照字节访问。对T0、T1定时或计数的模式、工作方式选择以及控制是由2个SFRTCON和TMOD的设置确定的。TMOD、TCON与T0计数单元TH0和TL0、T1计数单元TH1和TL1间通过内部总线及逻辑电路连接,TMOD用于控制定时器的模式和工作方式,TCON用于控制定时器的启动与停止。一旦设置好T0(或T1)的工作方式并启动,T0(或T1)就开始独立工作,不占CPU操作时间,当加计数器计满置位TF0(或TF1)。CPU可通过软件主动查询是否定时时间到或计数满时,也可以选择定时中断。4图6-180C51定时器/计数器的基本结构6.1.280C51单片机定时器/计数器的工作原理定时/计数器T0、T1都可以独立设定为定时模式或者计数模式,定时和计数的实质都是加计数器,区别在于计数信号来源不同。5
1.定时器的原理T0(或T1)用作定时器时,是对内部机器周期Tcy的加计数器。即每个机器周期TH0、TL0(或TH1、TL1)计数器在初值的基础上加1,计满溢出时,置位TF0(或TF1),也可以选择产生中断请求。因此,一个N位的加1计数器,从初值a开始每个机器周期加1计数,直至溢出,定时时间T为:
上式中,Tcy为机器周期,a为计数初值,N是由定时方式决定的,当T0、T1工作在方式0、1和2时,N取值分别为13、16和8。【例6-1】设单片机晶振频率为24MHz,T0、T1工作在方式0、1、2,最大定时时间各为多少?在初值为0时,有最大的定时时间。6
所以T0(或T1)在工作方式0下,其最大定时时间为
同样可以求得方式1下的最大定时时间为32.768ms;方式2下的最大定时时间为0.128ms。
2.计数器的原理T0(或T1)用作计数器时,是对P3.4引脚(或P3.5)输入的外部脉冲的加计数器,每输入一个外部脉冲(每当外部脉冲产生负跳变),TH0、TL0(或TH1、TL1)计数器在初值a基础上加1,计满溢出时置位TF0(或TF1),也可以选择产生中断请求。因此,一个N位的加计数器,从初值a开始每来一个外部脉冲加1计数,直至溢出,计数总个数C为:7
上式中,a为计数初值,N是由计数方式决定的,当T0、T1工作在方式0、1和2时,N取值分别为13、16和8。由于单片机需要两个机器周期来识别一个从“1”到“0”的跳变,因此外部计数脉冲的最高计数频率为晶振频率的1/24。【例6-2】单片机T0、T1工作在计数器各种方式下,计数范围各为多少。由于初值a取值从0~2N-1。T0、T1工作在计数器方式0下,N=13,计数范围是:1~8192(213)。在工作方式1下,N=16,计数范围是:1~65536(216)。在工作方式2下,N=8,计数范围是:1~256(28)。
3.对T0和T1的主要特性总结如下:(1)T0和T1可以通过编程选择定时模式或者计数模式,定时和计数的区别是:定时是对内部机器周期计数实现的,而计数是对外部信号计数实现。8
(2)T0和T1均可通过编程设定多种工作方式,其中T0有4种工作方式;T1有3种工作方式,T2有3种工作方式。(3)T0和T1定时时间到或计数满时,都会使计数器溢出,从而置位相应的溢出位,是否定时到或计数满可通过查询或中断方式处理。6.2T0和T1的控制寄存器对T0和T1的控制主要通过设置TMOD和TCON这2个SFR。TMOD用来确定T0和T1的工作模式及工作方式,TCON用来设定和表征T0和T1的工作过程。
1.定时器/计数器方式寄存器TMODTMOD字节地址为89H,其格式如表6-1所示。TMOD的8位分为2组,2组含义相同,高4位为T1的控制字段,低4位为T0的控制字段。9
(1)M1位和M0位M1和M0为工作方式控制位,其含义如表6-2所示(其中i=0,1)。
表6-2定时器工作方式控制位10
(2)C/位定时与计数的模式选择位。C/=0时,设置为定时器模式;C/=1时,设置为计数器模式。(3)门控位GATE当GATE=0时,仅控制位TR0(或TR1)置1可启动T0(或T1)。仅TR0(或TR1)清0可停止T0(或T1)工作。当GATE=1时,控制位TR0(或TR1)置1,同时还需(或)引脚为高电平方可启动定时器,即允许外部硬件通过P3.2(或P3.3)控制T0(或T1)启动。TMOD不能位寻址,只能用字节指令设置一次设置8位。复位时,TMOD=00H。例如:要求T1非门控,定时模式,工作方式1;语句为:TMOD=0x10;
2.定时器/计数器控制寄存器TCONTCON的字节地址为88H,可以位寻址,清溢出标志位或启动定时器都可以用位操作指令。TCON的格式如表6-3所示,11TCON低4位用于控制外部中断,在第5章中已介绍,TCON高4位的功能是控制T0(或T1)的启动、停止以及标志T0(或T1)的溢出。当系统复位时,TCON=0x00。低4位含义如下。
(1)T1溢出标志位TFl当T1计满数溢出时,由硬件自动置TF1=1,向CPU发出T1中断请求,在中断允许时响应。进入中断服务程序后,由硬件自动使TF1=0。当中断屏蔽时,TF1可由软件查询,此时只能由指令清0(编写TF1=0语句)。(2)T1运行控制位TR1TR1=0时,关闭T1;12
TR1=1时,分2种情况:当GATE=0时,则启动T1;当GATE=l时,则引脚为高电平,才可以启动Tl。(3)T0溢出标志位TF0其功能及操作情况同TF1。(4)T0运行控制位TR0其功能及操作情况同TR1。6.3定时器/计数器的工作方式80C51片内T0、T1可以通过对特殊功能寄存器TMOD中M1、M0两位的设置来选择工作方式,其中T0有方式0、1、2和3等4种工作方式;T1有方式0、1和2共3种工作方式。1.工作方式0当M1、M0设置为00时,T0(或T1)工作在方式0。T0方式0的逻辑图如图6-2所示。13
(1)计数器单元在方式0下,16位计数器单元只用了13位,由TH0的8位和TL0的低5位组成一个13位计数器,TL0(或TL1)的高3位未用,方式0计数器单元如图6-3所示,当TL0(TL1)的低5位溢出时,会向TH0(TH1)进位,当13位计数器加1到全“1”后,再加1就溢出。这时,置TCON的溢出标志位TF0(TF1)为1,同时把13位TH0和TL0(或TH1和TL1)变为全“0”。图6-2T0方式0逻辑图14图6-3T0和T1方式0计数器单元
(2)定时/计数模式控制位C/①C/=0:为定时器工作模式,对内部机器周期信号计数;②C/=1:为计数器工作模式,对P3.4(或P3.5)引脚外部输入脉冲负跳变计数。(3)定时/计数运行控制位GATEGATE位决定了T0(或T1)的运行取决于软件控制还是硬件-软件共同控制。GATE=0时,当TR0/TR1=1,13位计数器就开始计数;当TR0/TR1=0,T0(或T1)关闭。15图6-4T0方式1逻辑图16
3.工作方式2当M1、M0设置为10时,T0(或T1)工作在方式2。T0方式2的逻辑图如图6-5所示。方式2把TL0(TL1)配置成一个可以自动恢复初值(初始常数自动重新装入)的8位计数器,TH0(TH1)作为常数缓冲器,由软件预置值;当TL0(TL1)溢出时,一方面使溢出标志TF0(TR1)置1,同时把TH0(TH1)中的8位数据重新装入TL0(TL1)中。图6-5T0方式2逻辑图217
在实际应用中,工作方式0和工作方式1在定时时间到或者计数满产生溢出时,计数单元清0,如果想循环定时或者循环计数就需要频繁重新给计数单元装初值,这不但影响定时/计数,也给程序设计带来麻烦。方式2常用于循环精确地定时/计数控制。例如,80C51单片机晶振频率为12MHz,希望每隔200s产生一个定时控制脉冲,可在定时方式2下,把TH0和TL0同时预置为56实现。方式2还用作串行口波特率发生器。
4.工作方式3方式3只适用于T0。方式3使80C51具有3个定时器/计数器(增加了一个附加的8位定时器/计数器)。(1)T0工作在方式318(a)TL0作为8位定时器/计数器图6-6定时器/计数器T0工作方式319
(2)T0工作在方式3下的T1通常,当T1用作串口波特率发生器时,T0才定义为方式3,以增加一个8位计数器。T0工作在方式3时,TH0使用了T1的中断标志位(TF1),这时T1还可以设置为方式0~2,用于任何不需要中断控制的场合,或用作串行口的波特率发生器。①T1工作在方式0T1工作在方式0,作为波特率发生器,需要设置M1、M0=00,工作示意图如图6-7所示。图6-7T0工作在方式3下T1工作在方式0工作示意图20
②T1工作在方式1T1工作在方式1,作为波特率发生器,需要设置M1、M0=01,工作示意图如图6-8所示。图6-8T0工作在方式3下T1工作在方式1工作示意图
③T1工作在方式2T1工作在方式2,由于方式2可循环计数或定时,不需要重置计数初值,在波特率产生器中常用。需要设置M1、M0=10,工作示意图如图6-9所示。21图6-9T0方式3时T1为方式2时工作示意图6.4定时器/计数器T0、T1的应用本节介绍T0、T1的初始化设计及编程应用。
1.T0和T1的初始化由于T0和T1的功能实现是由软件编程确定的,所以使用前首先要初始化,步骤如下。(1)确定工作模式与工作方式,为TMOD赋值。(2)确定计数器单元初值,为T0计数单元TH0、TL0(或T1计数单元TH1、TL1)预置初值。2223
(4)给TCON送命令字,以启动或禁止定时器/计数器的运行。(5)确定定时时间到或计数满,以便进行相应的处理。若用查询方式则不需要第3步,可查询溢出标志位TF0(或TF1),溢出标志为1,则进行相应处理;若用中断方式处理,设置IE、TR0(TR1)后,一旦TF0(或TF1)标志为1,则自动转向中断服务程序。
2.T0、T1的编程应用【例6-5】T0和T1作为计数器的应用电路如图6-10所示,外部计数输入端T0(P3.2)接一按钮开关K1,外部计数输入端T1(P3.3)接信号源,P1.7引脚接一LED灯。要求:按下开关K1开始对信号源计数,当计满10个脉冲时,LED闪烁10次,T0、T1都采用中断方式。24图6-102个计数器的使用25
(1)确定TMODT0、T1都计数,T0计数1次,选择用方式1;T1计数10次选择方式1,都选择非门控。所以TMOD=0x55。(2)确定计数初值T0计数1次,方式1,计数初值为65535=0xFFFF,TH0=0xFF;TL0=0xFF,T1计数10次,选择方式1,初值为65536-10=65526=0xFFF6,TH1=0xFF;TL1=0xF6。(3)设置IE、IP由于T0、T1均采用中断方式,不设置优先级。IE=0x8A,IP=0;(4)启动T0、T1T0启动在主程序中,T1启动在T0的中断服务程序中。参考程序如下:#include<reg51.h>#defineucharunsignedcharsbitP1_7=P1^7;26voidDelay(unsignedintx)//延时1ms函数{ucharj;while(x--){for(j=0;j<125;j++);}}voidmain(){TMOD=0x55;TH0=0xFF;TL0=0xFF;TH1=0xFF;TL1=0xF6;IE=0x8A;TR0=1;P1_7=1;27while(1);}voidc0(void)interrupt1//T0中断服务程序{TR0=0;TR1=1;}voidc1(void)interrupt3//T1中断服务程序{uchari;for(i=0;i<10;i++){P1_7=0;Delay(500);P1_7=1;Delay(500);}TR1=0;}28
在实际应用中,经常用T0、T1产生精确的周期性波形。利用T0、T1产生周期性波形的思想是:利用T0、T1定时,定时时间到对输出端作相应的处理。如产生方波可在定时时间到对输出端取反。例6-6】电路如图6-11所示,设80C51晶振频率为12MHz,用T1编程实现从P1.7引脚输出频率为2kHz的音频信号。分析:从P1.7引脚输出频率为2kHz的超声波,即周期为500us的方波,可定时250us,定时时间到时,让P1.7取反一次。T1可分别工作于方式0、方式1、方式2,可分别采用查询和中断方式实现。当晶振频率为12MHz,机器周期为1us。29图6-11定时器T1产生超声波30
(1)T1采用方式0、中断方式处理方式控制字应设定为00000000B(0x00)。定时250μs,初值X=8192-250/1=7942=0x1F06,则TH1=0xF8,TL1=0x06。参考程序:#include<reg51.h>//包含特殊功能寄存器库sbitP1_7=P1^7;voidmain(){TMOD=0x00;TH1=0xF8;TL1=0x06;EA=1;ET1=1;TR1=1;while(1);}31voidti1(void)interrupt3//中断服务程序{TH1=0xF8;TL1=0x06;P1_7=!P1_7;}
仿真时,用鼠标右键单击虚拟数字示波器,在菜单中选择“DigitalOscilloscope”选项,调整时间旋钮在合适位置,会看到P1.7引脚输出给A通道的频率为2kHz的音频信号,如图6-12所示。32图6-12频率为2kHz的音频信号33
(2)T1采用方式1、中断方式处理方式控制字应设定为00010000B(0x10)。定时250μs,初值X=65536-250/1=65286=FF06,则TH1=0xFF,TL1=0x06。参考程序:#include<reg51.h>//包含特殊功能寄存器库sbitP1_7=P1^7;voidmain(){TMOD=0x10;TH1=0xFF;TL1=0x06;EA=1;ET1=1;TR1=1;while(1);}34voidti1(void)interrupt3//中断服务程序{TH1=0xFF;TL1=0x06;P1_7=!P1_7;}(3)T1采用方式2、中断方式处理方式控制字应设定为00100000B(0x20)。定时250μs,初值X=256-250/1=06,则TH1=TL1=0x06。参考程序:#include<reg51.h>//包含特殊功能寄存器库sbitP1_7=P1^7;voidmain(){TMOD=0x20;TH1=0x06;TL1=0x06;EA=1;35ET1=1;TR1=1;while(1);}voidti0(void)interrupt3//中断服务程序{P1_7=!P1_7;}(4)T1采用方式2、查询方式处理参考程序:#include<reg51.h>//包含特殊功能寄存器库sbitP1_7=P1^7;voidmain(){chari;TMOD=0x20;36TH0=0x06;TL0=0x06;TR1=1;for(;;){if(TF1){TF1=0;P1_7=!P1_7;}//查询计数溢出}}若需要定时器定时时间超过定时器最大值时,即方式1时的216个机器周期时,用一个定时器直接处理不能实现,可用两个定时器级联或一个定时器配合软件计数方式处理。【例6-7】电路如图6-13所示,设晶振频率为12MHz,定时控制P1口连接的8只LED自上而下点亮的跑马灯,每只灯点亮0.5s。每只灯点亮0.5s,这时应产生500ms的周期性的定时,定时时间到时点亮下一盏灯。可用T0产生10ms定时,然后对10ms计数50次或用T1对10ms计数50次实现。37
晶振频率12MHz,T0定时10ms,可选方式1,则TMOD=00000001B(0x01),初值X:X=65536-10000/1=55536=1101100011110000B则TH0=11011000B=0xD8,TL0=11110000B=0xF0。图6-13定时控制P1口连接的8只LED跑马灯38
(1)T0定时10ms、软件计数50次,中断处理方式。参考程序:#include<reg51.h>//包含特殊功能寄存器库#include<intrins.h>#defineucharunsignedcharuchari;voidmain(){TMOD=0x01;TH0=0xD8;TL0=0xF0;EA=1;ET0=1;i=0;TR0=1;P1=0xFE;39while(1);}voidtime0_int(void)interrupt1//T0中断服务程序{TH0=0xD8;TL0=0xF0;i++;if(i==50){P1=_crol_(P1,1);i=0;}}
(2)T0定时10ms、T1计数25次,T0和T1都采用中断方式工作。由于T1工作于计数方式时,计数脉冲通过T1(P3.5)输入,设定时器T0定时10ms时间到,对T1(P3.5)取反一次,则T140(P3.5)每20ms产生一个计数脉冲。定时500ms需要T1计数25次。T0工作于方式1,定时10ms,则TH0=11011000B=0xD8,TL0=11110000B=0xF0。设计数器T1工作于方式2,初值X=256-25=231=0xE7,TH1=TL1=0xE7。方式控制字TMOD=01100001B=0x61。参考程序如下:#include<reg51.h>#include<intrins.h>#defineucharunsignedcharsbitP3_5=P3^5;voidmain(){TMOD=0x61;TH0=0xD8;TL0=0xF0;41TH1=0xE7;TL1=0xE7;EA=1;ET0=1;ET1=1;TR0=1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026重庆秀山土家族苗族自治县公益岗招聘2人备考题库完美版
- 北京市海淀区中关村第三小学教育集团幼儿园招聘参考题库含答案
- 2026青海西宁湟源县申中乡卫生院乡村医生招聘6人参考题库及答案1套
- 2026重庆飞驶特人力资源管理有限公司招聘派往某机关事业单位招聘1人参考题库新版
- 2026黑龙江哈尔滨启航劳务派遣有限公司派遣到哈工大仪器学院导航仪器研究所招聘参考题库新版
- 赣州市保育院招聘残疾人备考题库必考题
- 2026重庆银行社会招聘50人备考题库及答案1套
- 丰城市行政事业单位编外人员招聘【5人】备考题库及答案1套
- 西宁市第一人民医院工作人员招聘信息参考题库及答案1套
- 2026陕西西安交通大学能动学院管理辅助工作人员招聘1人参考题库附答案
- 2026年数据管理局考试题库及实战解答
- 2024年集美大学马克思主义基本原理概论期末考试笔试真题汇编
- 2026国家电投秋招面试题及答案
- 数字化背景下幼儿园教育评价反馈策略与实施路径研究教学研究课题报告
- 全身麻醉后恶心呕吐的预防与护理
- 艾滋病初筛实验室标准
- 11334《纳税筹划》国家开放大学期末考试题库
- 2025版临床用血技术规范解读课件
- 毒性中药饮片培训
- 2025-2026学年人教版三年级道德与法治上册期末测试卷题(附答案)
- 城市广场石材铺装施工方案详解
评论
0/150
提交评论