版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章
单片机的定时器/计数器从应用的角度重点讲述MCS-51单片机的定时器/计数器的结构、工作原理和C语言编程方法。第5章
单片机的定时器/计数器定时器/计数器的基本结构和工作原理5.1定时器/计数器的工作方式5.2定时器/计数器的应用5.35.1.1定时器/计数器的基本结构
5.1
定时器/计数器的基本结构和工作原理定时器/计数器的核心部件是加1计数器。定时器模式时,是对内部机器周期计数。计数值乘以机器周期就是定时时间。计数器模式时,是对外部事件计数。脉冲由T0(P3.4)或T1(P3.5)引脚输入。
5.1.2
定时器/计数器的工作原理MCS-51单片机中有两个SFR与定时/计数有关:TMOD用于设置定时器/计数器的工作模式和工作方式TCON用于控制定时器/计数器的启动、停止和中断请求1.工作方式寄存器TMOD(89H)
D7D6D5D4D3D2D1D0TMOD(89H)GATEC/TM1M0GATEC/TM1M0←定时器/计数器T1→←定时器/计数器T0→5.1.3
定时器/计数器的控制TMOD中各位的含义如下:①M1、M0—工作方式选择位定时器/计数器有4种工作方式,由M1M0进行设置,如下表所示。M1M0方式说明00方式013位定时器/计数器01方式116位定时器/计数器10方式2自动重新装载的8位定时器/计数器11方式3T0分成两个8位计数器,T1停止计数5.1.3
定时器/计数器的控制②C/T—定时/计数模式选择位C/T=0,设置为定时模式,对内部机器周期进行计数。C/T=1,设置为计数模式,对来自T0、T1引脚的外部脉冲信号进行计数。③GATE—门控位GATE=0时,只要用软件使TCON中的运行控制位TRx为1,就可以启动Tx。GATE=1时,要用软件使运行控制位TRx为1,同时或引脚要为高电平时,才可以启动Tx。注意:TMOD不能进行位寻址。5.1.3
定时器/计数器的控制2.中断请求标志寄存器TCON(88H)TCON的高4位用于控制定时器/计数器的启动、停止和中断申请。格式如下所示:
D7D6D5D4D3D2D1D0(88H)8FH8EH8DH8CH8BH8AH89H88HTCONTF1TR1TF0TR0IE1IT1IE0IT0TFx:Tx溢出标志位。响应中断后TFx由硬件自动清0。TRx:Tx运行控制位。置1时开始工作;清0时停止工作。TRx要由软件置1或清0(即启动与停止要由软件控制)。5.1.3
定时器/计数器的控制T0有方式0、1、2、3;T1有方式0、1、2。以T0为例说明。5.2.1方式0(13位计数器)方式0是为兼容MCS-48而设的,在实际应用中几乎不再使用。5.2
定时器/计数器的工作方式5.2.2方式1(16位计数器)5.2
定时器/计数器的工作方式门控位作用当GATE=0时仅由TR0控制与门的开启。与门输出1时,控制开关接通,计数开始;当GATE=1时与门的开启由INT0和TR0共同控制。这种方式可以用来测量INT0引脚上正脉冲的宽度。
5.2
定时器/计数器的工作方式5.2.3方式2(8位自动重装初值计数器)方式2省去了重装初值的时间,可以实现精确的定时,常用于产生串行通信中的波特率。5.2
定时器/计数器的工作方式5.2.4方式3(仅T0有此方式,T1的方式3将停止计数)TL0进行8位定时/计数
TH0进行8位定时(借用T1的TR1、TF1)
T0处于方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。5.2
定时器/计数器的工作方式5.3.1定时器/计数器初值计算和初始化1.计数初值的计算假设当前工作方式下的最大计数值用M表示,则各种工作方式的最大计数值如下:方式0,M=213=8192;方式1,M=216=65536;方式2,M=28=256;方式3,M=28=256。5.3
定时器/计数器的应用假设用X表示计数初值,N表示能产生溢出的计数值计数模式下,计数值与计数初值之间的关系如下:
X=M-N定时模式,计数值N乘以机器周期Tcy等于定时时间t,即:
t=N×Tcy=(M-X)×Tcy由此式可以得到计数初值X的表达式如下所示:
X=M-t/Tcy
其中Tcy=12/fosc。
5.3.1定时器/计数器初值计算和初始化【例5-1】假设定时时间为5ms,单片机主频为6MHz,使用T0,求方式1的计数初值。解:Tcy=12/(6MHz)=2μs X=M-t/Tcy=M-5ms/(2μs)=M-2500对于方式1,X=216-2500=63036=0F63CH,其中低8位3CH要送入TL0,高8位F6H要送入TH0。5.3.1定时器/计数器初值计算和初始化2.定时器/计数器的初始化初始化的步骤如下:(1)对TMOD赋值,以设定T0和T1的工作模式和工作方式;(2)计算计数初值,并送入TH0、TL0、TH1、TH1;(3)给IE和IP赋值,以开放相应中断和设置中断优先级;(4)设置TR0、TR1,以启动或禁止T0、T1的运行。5.3.1定时器/计数器初值计算和初始化【例5-2】假设T0为定时模式,按方式2工作,TH0、TL0的初值均为0FH,且允许T0中断,请对该定时器进行初始化。TMOD=0x02; //T0为定时器方式2TL0=0x0f; //置计数初值TH0=0x0f;EA=1; //CPU开中断ET0=1; //允许T0中断TR0=1; //启动T0工作参考程序5.3.1
定时器/计数器初值计算和初始化【例5-3】在某工厂的一条自动饮料生产线上,每生产12瓶饮料,就需要发出一个包装控制信号自动执行装箱操作。试编写程序完成这一计数任务,假设用T0完成计数,用P1.0发出控制信号,如下图所示。5.3.2
计数应用分析(1)选择工作方式
因为计数值为12,所以选用T0的工作方式2来完成此任务。
假设此时T1不工作,则方式控制字为TMOD=06H。(2)求计数初值XX=256-12=244=F4H
因此,TL0和TH0的初值都为F4H。5.3.2
计数应用参考程序1(采用中断方式)#include<reg51.h>#include<intrins.h>sbit P1_0=P1^0void main(){ TMOD=0x06; TH0=0xf4; TL0=0xf4; EA=1; ET0=1; TR0=1; P1_0=0; while(1); }void counter0()interrupt1{ P1_0=1; _nop_(); _nop_(); P1_0=0; }5.3.2
计数应用参考程序2(采用查询方式)void main() { TMOD=0x06; TH0=0xf4; TL0=0xf4; TR0=1; P1_0=0; while(1) { while(!TF0); TF0=0; P1_0=1; _nop_(); _nop_(); P1_0=0; }}5.3.2
计数应用【例5-4】利用定时器T1的方式2对外部信号计数,要求每计满100个数将P1.7取反。分析(1)确定方式字
假设此时T0不工作,则T1工作在方式2的控制字为TMOD=60H。(2)计算初值
X=28-100=156=9CH
因此,TL1和TH1的初值都为9CH。5.3.2
计数应用参考程序#include<reg51.h>sbit P1_7=P1^7 ; void main() { TMOD=0x60; TH1=0x9c; TL1=0x9c; EA=1; ET1=1; TR1=1; while(1); }void counter1()interrupt3 //T1的中断服务函数{ P1_7=!P1_7; }5.3.2
计数应用【例5-5】假设系统时钟频率为6MHz,现欲利用定时器T0每隔1ms产生宽度为1个机器周期的正脉冲,并由P1.0送出,如下图所示,请编程实现该功能。5.3.3
定时应用分析(1)选择工作方式
因为Tcy=12/fosc=2μs,由定时器各种工作方式的特性,可计算出:
方式0最长可定时16.384ms;方式1最长可定时131.072ms;方式2、3最长可定时512
s。
本题中定时时间t=1ms,选则T0的工作方式1来完成此任务。假设此时T1不工作,则方式控制字为TMOD=01H。(2)计算初值X X=216-1000μs/2μs=65536-500=65036=FE0CH
因此T0的初值为TH0=0FEH,TL0=0CH。5.3.3
定时应用参考程序1(采用中断工作方式)#include<reg51.h>sbit P1_0=P1^0; void main() { TMOD=0x01; TH0=0xfe; TL0=0x0c; EA=1; ET0=1; TR0=1; P1_0=0; while(1);}void timer0()interrupt1 { P1_0=1; P1_0=0; TH0=0xfe; TL0=0x0c;}5.3.3
定时应用参考程序2(采用查询工作方式)#include<reg51.h> sbit P1_0=P1^0 ; void main() { TMOD=0x01; TH0=0xfe; TL0=0x0c; TR0=1; P1_0=0; while(1) { while(!TF0); TF0=0; P1_0=1; P1_0=0; TH0=0xfe; TL0=0x0c; }}5.3.3
定时应用【例5-6】设时钟频率为12MHz,编程实现用定时器T1产生50Hz的方波,并由P1.7输出此方波。分析(1)选择工作方式
因为Tcy=12/fosc=1μs,所以方式0最长可定时8.912ms;方式1最长可定时65.536ms;方式2、3最长可定时256
s。
因为50Hz方波的周期为20ms,所以本题的定时时间为10ms,所以选择T1的工作方式1来完成此任务。假设此时T0不工作,则方式控制字为TMOD=10H。(2)计算初值XX=216-10000μs/1μs=65536-10000=55536=D8F0H
因此T1的初值为TH1=0D8H,TL1=0F0H。5.3.3
定时应用参考程序
#include<reg51.h> sbit P1_7=P1^7; void main() { TMOD=0x10; TH1=0xd8; TL1=0xf0; EA=1; ET1=1; TR1=1; while(1); }void counter1()interrupt3 { P1_7=!P1_7; TH1=0xd8; TL1=0xf0;}5.3.3
定时应用【例5-7】89C51的P2口接了8个发光二极管,要求通过定时器1实现8个发光二极管每隔1s从右向左依次循环点亮。假设系统时钟频率为12MHz。电路如下图所示。5.3.3
定时应用分析①选择工作方式本题定时时间较长,超出方式0~3的最长定时范围,所以不能直接采用方式0~3实现该定时功能。我们可以将这1s定时时间分成若干份,每份定时时间在所选工作方式的定时范围内,然后用软件进行计数来实现该功能。
本题选择T1的工作方式1,每隔50ms中断一次,中断20次为1s。假设此时T0不工作,则方式控制字为TMOD=10H。
②计算计数初值
X=216-50000/1=15536=3CB0H
因此:TH1=3CH,TL1=B0H。③20次计数的实现
采用循环程序的方法实现中断20次计数。5.3.3
定时应用参考程序#include<reg51.h>#include<intrins.h> #defineucharunsignedcharuchar num; void main() { TMOD=0x10; TH1=0x3c; TL1=0xb0; EA=1; ET1=1; TR1=1; num=0; P2=0xfe; while(1); }void timer1()interrupt3{ num++; if(num==20)
{ num=0; P2=_crol_(P2,1); } TH1=0x3c; TL1=0xb0;}5.3.3
定时应用【例5-8】利用T0确定INT0引脚出现的正脉冲的宽度,并将测量结果(以机器周期的形式)存放在30H和31H两个单元中。分析
要想测量INT0引脚出现的正脉冲的宽度,首先要设T0为方式1的定时模式,TR0置1,门控位GATE置1,初值取0。这样当INT0引脚变为高电平时采用外触发方式启动T0定时,即对机器周期计数;当外部INT0引脚变为低电平时停止T0定时,这时TH0和TL0中的值就是INT0引脚为高电平期间的所经过机器周期数。处理过程如下图所示。5.3.4
门控位的应用参考程序
#include<reg51.h> #define
ucharunsignedchardata
ucharTL_at_0x30;data
ucharTH_at_0x31;sbit P3_2=P3^2; void main() { TMOD=0x09; TH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年秋季学期中小学新学期收心启航课件:收心励志拼搏向前
- 成人职业技能培训服务协议 职业考证辅导班学员协议范本
- 2026年航拍知识(基础常识)试题及答案
- 稳定性冠心病康复治疗与护理实践中国专家共识解读
- 2026年职场技能培训(能力提升)试题及答案
- 2026年考古学(实务管理规范)试题及答案
- 2026全球贸易壁垒下齿轮润滑泵出海合规与本地化策略报告
- 2026住房城乡建设领域专业技能考试(装配式建筑构件质量检验)历年参考题库含答案详解
- 2026事业单位笔试-陕西-陕西药剂学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-广西-广西计算机信息管理(医疗招聘)历年参考题库含答案详解
- T/CIE 185-2023光时延测量通用规范
- 中国银行2025信息科技岗笔试题及答案内蒙古地区
- 淝水之战课件
- 【新教材核心素养】苏教版生物八年级上册5.12.2《消化和吸收》第1课时(教学设计)
- 中药外敷技术操作规范
- 校园贷款案例讲解
- 矿山机械 安全技术规范
- 护士人文修养(第4版)课件 第四章 护士的美学修养
- 口腔根尖片的判读
- 大件设备仓储管理制度
- 油气输送管道穿越工程施工规范
评论
0/150
提交评论