




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章定时器/计数器6.189C52的定时/计数器
实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。也可以采用下面三种方法:软件定时:软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。定时器/计数器模块的基本用途常用于测量时间、速度、频率、脉宽,提供定时脉冲信号,还能为编程人员提供准确定时AT89C52中有3个定时器/计数器定时器/计数器0定时器/计数器1定时器/计数器26.1定时器/计数器的基本用途6.2定时器/计数器0和1的结构和工作原理
定时器/计数器0和1工作原理相关的特殊功能寄存器四种工作模式相关仿真实例6.2定时/计数器的结构和工作原理
一、定时/计数器的结构定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
二、定时/计数器的工作原理
加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t
。设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2s。
三、定时器/计数器结构1、工作寄存器:T0、T1为16位
T0分为:TH0(高8位),TL0(低8位)T1分为:TH1(高8位),TL1(低8位)例:向T0送0FEDHMOVTH0,#0FHMOVTL0,#0EDH
2、定时/计数器的控制
89C52单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。1)工作方式寄存器TMOD(*)
工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚也为高电平时,才能启动定时/计数器工作。即GATE表示/INT0,/INT1是否参与对T1,T0进行控制。
:定时/计数模式选择位。=0为定时模式;=1为计数模式。M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。TMOD不能进行位寻址。系统复位后为0例:设置T1为软件启动,为定时器工作方式,选择操作模式2,T0为计数方式,软件启动,选择操作模式1TMOD各位为:00100101即25HMOVTMOD,#25H或MOV89H,#25H
3、控制寄存器TCON
TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。它可进行位寻址,复位后为0。TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。TR0(TCON.4):T0运行控制位,其功能与TR1类同。
6.3定时/计数器的工作方式
一、方式0
方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
二、方式1方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。
三、方式2方式2为自动重装初值的8位计数方式。
工作方式2特别适合于用作较精确的脉冲信号发生器。
四、方式3方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。
工作方式3将T0分成为两个独立的8位计数器TL0和TH0
。
6.4T0,T1编程时应注意的问题一、初始化1、将工作方式控制字写入TMOD(确定工作方式,操作方式,启动控制方式)例:T1为16位,/INT1不参与控制,T1为定时器。控制字:00010000MOVTMOD,#10H2、将定时或计数初值写入THi,TLi中(16位计数初值须分两次写入对应的计数器)例:MOVTH1,#55HMOVTL1,#00H3、置ET1/ET0允许T1/T0申请中断
例:SETBET0;允许T0中断4、置EA,CPU对所有中断开放SETBEA5、启动T1或T0(*)
SETBTR1SETBTR0二、初值计算T0,T1选择不同的工作方式,不同的操作方式,其初值均不相同。设最大计数值为M,则各方式下的M值为:方式0:M=213=8192方式1:M=216=65536方式2:M=28=256方式3:M=256(T0分为TH0和TL0,其M均为256)设计数初值为X,则X=M-计数值1、计数工作方式
脉冲由外部引入,对外部脉冲计数,计数值根据要求确定。计数初值X=M-计数值例:某工序要求对外部脉冲信号计100次X=M-100
若为方式2,则X=256-100=1562、定时工作方式(*)
计数脉冲由内部供给(相当于对机器周期计数),计数脉冲频率fcont=晶振频率fosc/12所以:计数周期T=12/fosc,即每个脉冲的时间为12/fosc若要求的定时时间为t,则此时计数初值X=M-t/T=M-t/(12/fosc)=M-t*fosc/12例:设T0为计数器,以方式2工作,外界发生一次事件,溢出中断;T1作为定时器,以操作方式1工作,定时时间为1ms(即延时1ms后就申请中断),晶振频率为6MHZ,计算T0,T1的计数初值。解:T0:计数器,方式2,X0=256-1=255=FFHT1:定时器,方式1,1msX1=65536-1ms*6*106/12 =65536-1*103/2=65536-500=65036=FE0CH三、初始化举例(*)设T1为定时工作方式,定时50ms,选择方式1,允许中断,软启动; T0为计数工作方式,对外部脉冲计数10次,硬启动,禁止中断,选择工作方式2; fosc=6MHZ解:T0:X0=256-10=246=F6H T1:X1=65536-50ms*6M/12 =65536-25000 =40536=9E58HTMOD=00011110=1EH初始化程序如下: MOVTMOD,#1EH MOVTH0,#0F6H MOVTL0,#0F6H MOVTH1,#9EH MOVTL1,#58H MOVIE,#88H SETBTR0; 要等到/INT0=1时方可真正启动 SETBTR16.5定时器的操作方式及应用1、方式0及应用(仅用了TH和TL的低5位)(*)例:选用T0,操作方式0,用于定时,由P1.0输出周期为1ms的方波,设fosc=6MHZ解:定时时间为500μs
初始值X0=8192-t*fosc/12=8192-250 =7942=1F06H
但由于是13为定时器,TL0的高3位未用,则填入0,所以X0的实际值为F806H
ORG8000H MOVTMOD,#00H MOVTL0,#06H MOVTH0,#0F8H SETBTR0;启动T0,该程序未涉及中断,所以可以不用设置IELP1:JBCTF0,LP2;TF0只有在申请中断被响应后才会自动清0,这里不涉及中断,所以人工清0 AJMPLP1LP2:MOVTL0,#06H MOVTH0,#0F8H CPLP1.0 SJMPLP12、方式1及应用(16位)设单片机的fosc=12MHZ,要求在P1.0脚上输出周期为2ms的方波解:定时间隔为1ms,每次时间到时,P1.0取反。 机器周期为1μs,所以需计1000次
初值X=65536-1000
采用定时器0的方式1编程,采用中断方式。 #include<reg51.h> sbitp1_0=p1^0; voidtimer0(void)interrupt1using1 {p1_0=!p1_0; TH0=(65536-1000)/256; TL0=(65536-1000)%256; } voidmain(void) {TMOD=0x01;
p1_0=0;TH0=(65536-1000)/256;TL0=(65536-1000)%256; ET0=1; EA=1; TR0=1; do{}while(1);}
3、方式2及应用(如:用于外部中断扩展)
扩展方法是,将定时/计数器设置为计数器方式,计数初值设定为满程,将待扩展的外部中断源接到定时/计数器的外部计数引脚。从该引脚输入一个下降沿信号,计数器加1后便产生定时/计数器溢出中断。即实现边沿触发的外部中断请求。例如,利用T0扩展一个外部中断源。将T0设置为计数器方式,按方式2工作,TH0、TL0的初值均为0FFH,T0允许中断,CPU开放中断。其初始化程序如下:
MOVTMOD,#06H;置T0为计数器方式2MOVTL0,#0FFH;置计数初值
MOVTH0,#0FFHSETBTR0;启动T0工作
SETBET0;允许T0中断
SETBEA;CPU开中断4、方式3及应用(仅T0有此方式,T1没有)1)结构(*)T0:TH0(8位)只用作简单的内部定时器功能,使用原T1的TR1和TF1,占用了T1的中断源。TH0的启动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- WOD168肉鸡高效笼养技术
- 解析CPSM考试试题及答案
- 网站用户导航设计试题及答案
- 保安物业管理知识培训课件
- 健康教育与防控知识课件
- 2024年CPSM考试要点提炼与试题及答案
- 实战演练的重要性CPMM试题及答案
- 烫伤护理课件
- 以实践为导向的CPMM学习试题及答案
- 动物繁殖方式的试题及答案
- (二诊)成都市2022级2025届高中毕业班第二次诊断性检测生物试卷(含官方答案)
- 2025年统编版高三政治二轮复习:当代国际政治与经济 练习
- (二诊)成都市2022级2025届高中毕业班第二次诊断性检测语文试卷(含官方答案)
- 湖南省长沙市2024-2025学年九年级下学期入学考试英语试卷(含答案无听力原文及音频)
- 2025年国家会展中心上海有限责任公司招聘笔试参考题库含答案解析
- 《卓越领导力》课件
- 2024国家电投集团中国电力招聘(22人)笔试参考题库附带答案详解
- 《餐厅案例》课件
- 《大数据时代对会计行业产生的影响探究》10000字【论文】
- 2025年中国中信集团有限公司招聘笔试参考题库含答案解析
- 阜阳PLC基础知识培训课件
评论
0/150
提交评论