定时器计数器答案

  • 格式:doc
  • 大小:20.00 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,$ ;查询计数溢出