




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章AT89C51的定时器/计数器
6.1定时器/计数器的结构两个可编程的定时器/计数器T1、T0。结构如图6-1所示
2种工作模式:(1)计数器工作模式(2)定时器工作模式4种工作方式(方式0-方式3)。TMOD:选择定时器/计数器T0、T1的工作模式和工作方式。TCON:控制T0、T1的启动和停止计数,同时包含了
T0、T1的状态。单片机复位时,两个寄存器都清0。6.1.1工作方式控制寄存器TMOD
图6-1AT89C51单片机的定时器/计数器结构框图图6-2TMOD格式8位分为两组,高4位控制T1,低4位控制T0。(1)GATE——门控位
0:仅以TRX(X=0,1)来启动定时器/计数器运行。
1:用引脚INT0*(或INT1*)上的高电平和TRX两个条件来控制定时器/计数器的运行。(2)M1、M0——工作方式选择位
表6-1M1、M0工作方式选择
M1M0工作方式
00 方式0,13位定时器/计数器。01 方式1,16位定时器/计数器。10 方式2,8位常数自动重新装载11 方式3,仅适用于T0,T0分成两个8 位计数器,T1停止计数。
(3)C/T*——计数器模式和定时器模式选择位
0:定时器模式。 1:计数器模式。6.1.2定时器/计数器控制寄存器TCON字节地址为88H,可位寻址,位地址为88H~8FH。TCON的格式如图6-3所示。
图6-3TCON格式低4位与外部中断有关,已介绍。高4位的功能如下:
(1)TF1、TF0——计数溢出标志位(2)TR1、TR0——计数运行控制位 1:启动定时器/计数器工作的必要条件。
0:停止定时器/计数器工作该位可由软件置“1”或清“0”。6.2定时器/计数器的4种工作方式
6.2.1方式0
M1、M0为00,定时器/计数器的框图:
图6-4定时器/计数器方式0逻辑结构框图定时器计数器GATE为0,A点是否计数仅取决于TRX。GATE为1,B点电位由INTX*和TRX共同决定。定时器/计数器工作在方式0时,为13位的计数器,C/T*
位决定工作模式:
0:开关打在上面,为定时器工作模式; 1:开关打在下面,为计数器工作模式,计数脉冲为P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加1。GATE位:决定定时器/计数器的运行取决于TRx一个条件还是TRx和INTx*引脚两个条件。(1)0:A点(见图6-2)是否计数,仅取决于TRx的状态。(2)1:B点电位由INTX*的输入电平和TRX的状态这两个条件来确定。是否计数是由TRx和INTx*二个条件来控制的。定时和计数应用方式0下,计数工作方式时,计数范围是1~8192。定时工作方式时,定时时间的计算公式为:(213-计数初值)×机器周期晶振频率为6MHZ
最小定时时间为:[213-(213-1)×2×10-6=2us最大定时时间为:(213-0)×2×10-6=16384×10-6(S)=16384us例:单片机晶振频率为6MHZ,使用定时器1方式0产生周期为500us的等宽正方波脉冲,并由P1.0输出,以查询完成。①计算初值(213-X)×2×10-6=256×10-6X=8067=1F83H=0001111110000011BX=1111110000011B
TH1=FCHTL1=03H(低5位)②TMOD初始化M1M0=00C/T*=0(定时)GATE=0,定/计为0不用,TMOD00H③TCONTR1TR1=1启动TR0=0停止④程序设计:MOVTMOD,#00H;设置T1工作方式0MOVTH1,#0FCH;设置计数初值MOVTL1,#03H;MOVIE,#00H;禁止中断SETBTR1;启动定时LOOP:JBCTF1,LOOP1;查询计数溢出,为1转移并清0AJMPLOOPLOOP1:MOVTH1,#0FCH;重新设置计数初值MOVTL1,#03HCLRTF1;计数溢出标志位清0CPLP1.0;输出取反AJMPLOOP
6.2.2方式1
M1、M0=01,16位的计数器。
图6-5定时器/计数器方式1逻辑结构框图方式1与方式0的差别仅在于计数器的位数不同,方式1为16位计数器,作为定时使用时,其定时时间为:
(216-T0初值)×机器周期计数范围时1~65536(216)晶振频率为6MHZ
最小定时时间为:[216-(216-1)]×2×10-6=2us最大定时时间为:(216-0)×2×10-6=131072×10-6(S)=131072us≈131ms例:题目同方式0,但以中断方式完成。晶振频率时6MHZ,使用定时器1以工作方式1产生周期为500us等宽正方波脉冲,并在P1.0端输出。①计算初值(216-X)×2×10-6=250×10-6TH0=FFHTL0=A1H②TMOD寄存器初始化TMOD=10H③程序设计:MOVTMOD,#10H;定时器1工作方式1MOVTH1,#0FFH;设置计数初值MOVTL1,#0A1HSETBEASETBET1LOOP:SETBTR1HERE:SJMP$;等待中断AJMPLOOP中断服务程序:MOVTH1,#0FFHMOVTL1,#0A1HCPLP1.0;输出取反RETI
图6-6定时器/计数器方式2逻辑结构框图6.2.3方式2
计数满后自动装入计数初值。
M1、M0=10,等效框图如下:
TLX作为常数缓冲器,当TLX计数溢出时,在置“1”溢出标志TFX的同时,还自动的将THX中的初值送至TLX,使TLX从初值开始重新计数。定时器/计数器的方式2工作过程如图6-7(X=0,1)。省去用户软件中重装初值的程序,来精确定时并简化定时初值的计算方法。。图6-7方式2工作过程省去用户软件中重装初值的程序,来精确定时并简化定时初值的计算方法。
在方式2中,16位计数器被分成两个部分:TL0用作8位计数器,TH0作预置寄存器,保存预置初值。初始化时由软件赋予TH0与TL0同样的值。当计数溢出后,便置位TF0,并将TH0的初值再装入TL0,从而进行新一轮计数,如此循环重复不止。计数值最大只能到255。TH以硬件方法自动给计数器TL重新加载。例1:使用定时器0以工作方式2产生100us定时,在P1.0输出周期为200us的连续波。fosc=6MHZ①计算初值(28-X)×2×10-6X=206D=11001110B=CEH
把CEH分别装入TH0和TL0中:TH0=CEH,TL0=CEH②TMOD寄存器初始化M1M0=10,C/T*=0GATE=0定时器/计数器1不用,有关设定位为0;TMOD=02H③程序(查询方式)
MOVIE,#00H;禁止中断
MOVTMOD,#02H;设置定时器0为方式2MOVTH0,#CEH;设置计数初值MOVTL0,#CEH;设置计数初值SETBTR0;启动定时LOOP:JBCTF0,LOOP1;查询计数溢出AJMPLOOPLOOP1:CPLP1.0;输出方波AJMPLOOP;重复循环由于方式2具有自动装载功能,计数初值只能设置一次。④程序(中断方式)
主程序:MOVTMOD,#02H;定时器0工作方式2MOVTH0,#CEH;设置计数初值MOVTL0,#CEH;保存计数初值SETBEA;开中断SETBET0;定时器0允许中断LOOP:SETBTR0;开始定时HERE:SJMP$CLRTF0;计数溢出标志位清0AJMPLOOP
中断服务程序:CPLP1.0;输出方波RETI;中断返回例2:用定时器1以工作方式2计数,每计100次进行累加器加1操作。①计算计数初值28-100=156D=9CHTH1=9CH,TL1=9CH②TMOD寄存器初始化M1M0=10C/T*=1,GATE=0TMOD=60H③程序设计
MOVIE,#00H;禁止中断MOVTMOD,#60H;设置计数器1方式2MOVTH1,#9CH;设置计数初值MOVTL1,#9CH;设置计数初值SETBTR1;启动计数DEL:JBCTF1,LOOP;查询计数溢出AJMPDELLOOP:INCA;累加器加1AJMPDEL;循环返回6.2.4方式3
增加一个附加的8位定时器/计数器,从而具有3个定时器/计数器。只适用于定时器/计数器T0。T1不能工作在方式3。T1方式3时相当于TR1=0,停止计数(此时T1可用来作串行口波特率产生器)。1.工作方式3下的T0T0分为两个独立的8位计数器:TL0和TH0。TL0使用T0的状态控制位C/T*、GATE、TR0、,而TH0被固定为一个8位定时器(不能作外部计数模式),并使用定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。
各引脚与T0的逻辑关系如图6-8所示:
(a)TL0作为8位定时器/计数器(b)TH0作为8位定时器图6-8定时器/计数器T0方式3的逻辑结构框图2.T0工作在方式3下T1的各种工作方式
当T1用作串行口的波特率发生器时,T0才工作在方式3。T0为方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。(1)T1工作在方式0
图6-9T0工作在方式3时T1为方式0的工作示意图(2)T1工作在方式1
。M1、M0=01时,工作在方式1(3)T1工作在方式2
图6-10T0工作在方式3时T1为方式1的工作示意图图6-11T0工作在方式3时T1为方式2的工作示意图M1、M0=10时,工作在方式2(4)T1工作在方式3。T1的控制字中M1、M0
=
11时,T1停止计数。在T0为方式3时,T1运行的控制条件只有两个,即C/T*和M1、M0。C/T*选择定时器模式或计数器模式,M1、M0选择T1运行的工作方式。6.3计数器模式对输入信号的要求
外部计数脉冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。输入信号的高、低电平至少要保持一个机器周期。如图6-12所示,图中Tcy为机器周期。若选用6MHz频率的晶体,允许输的脉冲频率最高为250KHz。图6-12对外部输入信号的基本要求6.4定时器/计数器的编程和应用
4种工作方式中,方式0与方式1基本相同,由于方式0是为兼容MCS-48而设,初值计算复杂,在实际应用中,一般不用方式0,而采用方式1。6.4.1方式1应用
例6-1假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图6-13所示。
图6-13在P1.0引脚上输出的波形方波的周期用T0来确定,让T0每隔1ms计数溢出1次(每1ms产生一次中断),CPU响应中断后,在中断服务程序中对P1.0取反。(1)计算初值X
设初值为X,则有: (216-X)×2×10-6=1×10-3216-X=500X=65036X化为16进制,即X=FE0CH=1111111000001100B。所以,T0的初值为:
TH0=0FEHTL0=0CH(2)初始化程序设计
机器周期=2us=2×10-6S对寄存器IP、IE、TCON、TMOD的相应位进行正确设置,将计数初值送入定时器中。(3)程序设计
中断服务程序除产生方波外,还要注意将计数初值重新装入定时器中,为下一次中断作准备。参考程序:
ORG0000HRESET:AJMPMAIN;转主程序
ORG000BH;T0的中断入口 AJMPIT0P ;转T0中断处理程序IT0P
ORG0100HMAIN:MOVSP,#60H;设堆栈指针
MOVTMOD,#01H ;设置T0为方式1
ACALLPT0M0 ;调用子程序PT0M0HERE:AJMPHERE ;自身跳转PT0M0:MOVTL0,#0CH ;T0中断服务程序,T0重新置初值
MOVTH0,#0FEHSETBTR0 ;启动T0SETBET0 ;允许T0中断
SETBEA;CPU开中断
RETITOP:MOVTL0,#0CH;T0中断服务子程序,T0置初值
MOVTH0,#0FEHCPLP1.0;P1.0的状态取反
RETI查询方式的参考程序:
MOVTMOD,#01H;设置T0为方式1
SETBTR0;接通T0LOOP:MOVTH0,#0FEH;T0置初值 MOVTL0,#0CHLOOP1:JNBTF0,LOOP1;查询TF0标志,为1说明T0溢出,下执
CLRTR0;T0溢出,关闭T0 CPLP1.0;P1.0的状态求反 SJMPLOOP例6-2
假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。(1)T0工作方式的确定定时时间较长,采用哪一种工作方式?由各种工作方式的特性,可计算出:
方式0最长可定时16.384ms;
方式1最长可定时131.072ms;方式2最长可定时512
s。选方式1,每隔100ms中断一次,中断10次为1s。(2)计算计数初值因为:(216-X)×2×10-6=10-1所以:X=15536=3CB0H因此:TH0=3CH,TL0=B0H(3)10次计数的实现采用循环程序法。(4)程序设计参考程序:
ORG0000HRESET:LJMPMAIN ;上电,转主程序入口MAIN
ORG000BH;T0的中断入口
LJMPIT0P ;转T0中断处理程序IT0P
ORG1000HMAIN:MOVSP,#60H ;设堆栈指针
MOVB,#0AH;设循环次数10次
MOVTMOD,#01H;设T0工作在方式1
MOVTL0,#0B0H;给T0设初值
MOVTH0,#3CH SETBTR0 ;启动T0SETBET0 ;允许T0中断SETBEA;CPU开放中断HERE:SJMPHERE;等待中断
ITOP:MOVTL0,#0B0H;T0中断子程序,重装初值
MOVTH0,#3CH; DJNZB,LOOPCLRTR0 ;1s定时时间到,停止T0工作LOOP:RETI6.4.2方式2的应用省去程序中重装初值的指令,并可产生相当精确的定时时间。
例6-3
当T0(P3.4)引脚上发生负跳变时,从P1.0引脚上输出一个周期为1ms的方波,如图6-13所示。(假设时钟为6MHz)(1)工作方式选择T0为方式1计数,初值0FFFFH,即外部计数输入端T0(P3.4)发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1”,发中断请求。在进入T0中断程序后,把F0标志置“1”,说明T0脚已接收了负跳变信号。图6-14T1定义为方式2定时。在T0脚发生一次负跳变后,启动T1每500
s产生一次中断,在中断服务程序中对P1.0求反,使P1.0产生周期1ms的方波。(2)计算T1初值设T1的初值为X:则(28-X)×2×10-6=5×10-4X=28-250=6=06H(3)程序设计
ORG0000H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设计公司奖金管理制度
- 设计总监统筹管理制度
- 评估公司经营管理制度
- 诊所收款票据管理制度
- 诊所进药规定管理制度
- 诚信企业登记管理制度
- 财务项目核算管理制度
- 货架仓储仓库管理制度
- 货车司机岗位管理制度
- 2025年中国工业级脱脂毛巾行业市场全景分析及前景机遇研判报告
- 2025年陕西延长石油集团矿业公司招聘笔试参考题库含答案解析
- 2024-2025学年度四川省宜宾市普通高中高一第一学期期末考试历史试题
- 云南教育强省建设规划纲要(2024-2035年)知识培训
- QC/T 1211-2024乘用车车门内开拉手总成
- 2025年江苏省建筑安全员A证考试题库及答案
- 2025版国家开放大学法学本科《知识产权法》期末纸质考试第五大题案例分析题题库
- 基于感性工学
- 人工智能导论知到智慧树章节测试课后答案2024年秋天津大学
- A型肉毒毒素在整形外科中的临床应用指南
- 【MOOC】作物育种学-四川农业大学 中国大学慕课MOOC答案
- 博士生经验分享模板
评论
0/150
提交评论