定时器计数器答案
定时器计数器答案 定时器/计数器 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