定时器计数器答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时器/计数器
6·1 80C51单片机内部有几个定时器/计数器?它们就是由哪些专用寄存器组成? 答:80C51单片机内部设有两个16位的可编程定时器/计数器,简称为定时器0(T0)与定时器l(Tl)。在定时器/计数器中的两个16位的计数器就是由两个8位专用寄存器TH0、TL0, THl、TLl组成。
6·2 80C51单片机的定时器/计数器有哪几种工作方式?各有什么特点?
答:80C51单片机的定时器/计数器有4种工作方式。下面介绍4种工作方式的特点。
方式0就是一个13位的定时器/计数器。当TL0的低5位溢出时向TH0进位,而TH0溢
出时向中断标志TF0进位(称硬件置位TF0),并申请中断。定时器0计数溢出与否,可通过查询TF0就是否置位或产生定时器0中断。
在方式1中,定时器/计数器的结构与操作几乎与方式0完全相同,惟一的差别就是:定时器就是以全16位二进制数参与操作。
方式2就是能重置初值的8位定时器/计数器。其具有自动恢复初值(初值自动再装人)功;
能,非常适合用做较精确的定时脉冲信号发生器。
方式3 只适用于定时器T0。定时器T0在方式3T被拆成两个独立的8位计数器TL0: 与TH0。其中TL0用原T0的控制位、引脚与中断源,即:C/T、GATE、TR0、TF0与T0 (P3、4)引脚、INTO(P3、2)引脚。除了仅用8位寄存器TL0外,其功能与操作与方式0、方式1
完全相同,可定时亦可计数。此时TH0只可用做简单的内部定时功能。它占用原定时器Tl 的控制位TRl与TFl,同时占用Tl的中断源,其启动与关闭仅受TRl置1与清0控制。
6·3 定时器/计数器用做定时方式时,其定时时间与哪些因素有关?作计数时,对外界计数频率有何限制?
答: 定时器/计数器用做定时方式时,其定时时间与时钟周期、计数器的长度(如8位、13位、16位等)、定时初值等因素有关。作计数时,外部事件的最高计数频率为振荡频率(即时钟周期)的1/24。
6·4 当定时器T0用做方式3时,由于TR1位已被T0占用,如何控制定时器T1的开启与关闭?
答:定时器T0用做方式3时,由于TRl位己被T0占用,此时通过控制位C/T切换其定时器
或计数器工作方式。当设置好工作方式时,定时器1自动开始运行;若要停止操作,只需送入一个设置定时器1为方式3的方式字。
6.5 己知80C51单片机系统时钟频率为6 MHz,请利用定时器T0与Pl。2输出矩形脉冲,
其波形如下:
答:设置T0为方式2定时,定时50us,初值X 为:
X=28-(6×106×50×10-8 )÷12= 231D= E7H
TH0= TL0=E7H ,TMOD= 2H
源程序如下:
MOV TMOD,#02H ;设置T0为方式2定时
MOV TH0,#E7H ;赋初值
MOV TL0,#E7H
SETB TR0 ;启动T0工作
LI: SETB Pl、2
MOV R0,#7 低电平延时计数器致初值
DEL:JBC TF0,REP
AJMP DEL
REP:CLR Pl、2
DJNZ R0,DEL
AJMP L1
6.6 在80C51单片机中,己知时钟频率为12MHz,请偏程使Pl·0与Pl·1分别输出周期为
2ms与500us的方波。
答:方法1:选用定时器0定时,工作方式设为3,用TL0作为8位定时器,产生250us的定时,定时初值X为:
X=28-(12×106×250×10-6)÷12=6
TH0=TL0=6H,TMOD=3H
源程序为:
MOV TMOD,#3H ;设置T0为方式3定时
MOV TL0,#6H ;赋初值
SETB TR0 ;启动T0工作
LP: MOV R0,#4 ;Pl·0延时计数器置初值
DEL:JBC TF0,REP ;查询计数溢出
AJMP DEL
REP: MOV TL0,#6H ;重新赋初值
CPL Pl、1
LI: DJNZ R0,DEL
CPL Pl、0
AJMP LP
方法2:选用定时器1定时250us,工作方式设为2,用TLl作为8位定时器,产生250us的定时,定时初值x为:
X=28-(12×106×250×10-6)-12=6
TH1=TL1=6H,TMOD=20H
MOV TMOD,#20H ;设定时器1为方式2
MOV THl,#06H ;赋250us初值
MOV TLl,#06H
SETB TR1
EX6_RPTA
MOV R2,#04H
EX6_RPTB,
JNB TFl,$
CLR TF1
CPL Pl、1 ;每250usPl、1反转一次
DJNZ R2,EX6_RPTB
CPL Pl、0 ;Pl、1反转4次,Pl、0反转一次
LJMP EX6_RPTA ;循环
6·7设系统时钟频率为6MHz,请试用定时器T0作外部计数器,编程实现每计到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,这样反复循环不止。
答:按题目要求编程如下:
MOV TMOD,#15H ;设定时器1为定时方式1
;定时器0为外部计数方式1
EX7、RPT:
MOV TH0,#0FCH ;定时器0赋1000的计数初值
MOV TL0,#018H
SETB TR0 ;启动定时器。
JNB TF0,$ ;查询计数溢出
CLR TR0 ;关定时器。
CLR TF0 ;清溢出标志
MOV THl,#0FCH ;定时器1赋2mS初值
MOV TLl,#018H
SETB TRl ;启动定时器1
JNB TFl,$ ;查询计数溢出