第05章单片机定时计数器习题集解答
第05章单片机定时计数器习题解答
一、填空题
1.MCS-51单片机中有 2 个16 位的定时器/计数
器。
2.定时器/计数器T0可以工作于方式0、1、2、3 。
3.方式0为 13 位定时器/计数器。
4.若系统晶振频率为12MHz,则T0工作于定时方式1时最多可以定
时65536 μs。
5.欲对300个外部事件计数,可以选用定时器/计数器T1的模式0 或模
式 1 。
6.TMOD中的M1M0= 11时,定时器工作于方式 3 。
7.若系统晶振频率为6MHz,则定时器可以实现的最小定时时间为 2 μs。
8.MCS-51单片机工作于定时状态时,计数脉冲来自单片机部的机器周期。
9.MCS-51单片机工作于计数状态时,计数脉冲来自单片机外部事件。
10.当GATE=0时,则当软件控制位TR0=1时启动T0开始工作。
二、简答题
1.定时器/计数器T0和T1各有几种工作方式?简述每种工作方式的特点。如何控制定时器/计数器的工作方式?
答:T0可以工作于方式0,1,2,3;T1可以工作于方式0,1,2
方式0:是13位定时/计数器,由TLX的低5位(TLX的高3位未用)和THX高8位组成。
方式1:TLX和THX组成16位定时/计数器。
方式2:方式2为自动重装初值的8位定时/计数器。
方式3只适用于定时/计数器T0,当T0工作在方式3时,TH0和TL0被分为两个独立的8位计数器。
TMOD用来控制定时计数器的工作方式,位结构如下:
D7 D6 D5 D4 D3 D2 D1 D0
GAT
M1 M0 GATE M1 M0
A
C/T:定时或计数功能选择位。1为计数方式, 0为定时方式。
GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的影响。
GATE=0,软件控制位TR0(TR1)=1启动定时/计数器开始计数。
GATE=1,软件控制位TR0(TR1)=1,INT0(INT1)引脚为高电平时启动定时/计数器开始计数。
2.设MCS-51单片机的晶振频率f
=6MHz,分别讨论定时器/计数器0在各种工作方式下的最
OSC
长定时时间。
答:由fosc =6MHz可知,一个机器周期T=2us,由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。
方式0:(213–0)×2us= 214us=16384us=16.384ms
方式1:(216–0)×2us= 217us=131.072ms
方式2、3:(28–0)×2us= 29us=0.512ms当 fosc =6MHz,即T=2us时各种方式下的定时时间,若fosc =12MHz,则最长定时时间将缩短一半。
3.编写程序从P1.0 引脚输出频率为1KHz的方波。设晶振频率为6MHz。
答:利用T1定时中断。fosc= 6MHz。1机器周期 =2 uS。1KHz方波周期 =1mS,半个方波周期=500uS。 500uS÷2uS =250
若选择方式2 工作,计算初值:256-250=6
ORG 0000H
AJMP MAIN
ORG 001BH ;T1的中断矢量
LJMP T1INT
MAIN: MOV TMOD,#20H
MOV TH0, #6
MOV TL0, #6
SETB ET1
SETB EA
SETB TR1
HERE: AJMP HERE ;原地等待中断
T1INT:CPL P1.0 ;中断服务:P1.0取非
RETI ;中断返回
END
4.利用定时器/计数器1定时中断控制P1.7驱动LED发光二极管亮1秒灭1秒地闪烁,设时
钟频率为12MHz。
答:时钟频率为12MHz,1个机器周期1 us,1秒闪烁一次,0.5秒P1.7求反1次。
0.5S=500ms=500000 us,方式1最大计数65536,让T1工作于方式1,计数50000次中断一次,初值=65536-50000=15536=3CB0H
用R7记录中断次数,计满10个中断为500ms秒。
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP PT1INT
ORG 0030H
START:MOV R7,#00H
MOV TMOD,#10H
MOV TL1,#0B0H
MOV TH1,#3CH
SETB EA
SETB ET1
SETB TR1
HERE: SJMP HERE
PT1INT: MOV TL1,#0B0H
MOV TH1,#03CH
INC R7
CJNE R7,#10, PEND
MOV R7, #00H
CPL P1.7
PEND: RETI
END
5.利用MCS-51单片机定时器/计数器设计一个数字秒表。定时围:00-99秒;两位LED数码管显示。设时钟频率为6MHz。基本原理:利用定时器方式2产生0.5毫秒时间基准,循环2000次,定时 1秒。
答:电路如图所示
把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。
把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。
把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上;
开始时,显示“00”,第1次按下SP1后就开始计时。
第2次按SP1后,计时停止。
第3次按SP1后,计时归零
选择定时工作方式2;工作方式2就具有自动重装载功能,即自动加载计数初值,在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初
始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,由预置寄存器TH0以硬件方法自动给计数器TL0重新加载。
汇编源程序
TCNTA EQU 30H ;时间计数
TCNTB EQU 31H
SEC EQU 32H
KEYCNT EQU 33H ;按键计数
SP1 BIT P3.5
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV KEYCNT,#00H
MOV SEC,#00H
MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,A+DPTR
MOV P2,A
MOV TMOD,#02H ;
SETB ET0
SETB EA
WT: JB SP1,WT ;直接寻址位为1转移(按键按下时SP1为0)
LCALL DELY10MS
JB SP1,WT ;接着SP1变为1
INC KEYCNT
MOV A,KEYCNT
CJNE A,#01H,KN1
SETB TR0 ;TR0置1,启动定时器T0 ,允许定时/计数器计数 MOV TH0,#06H ;用于自动恢复定时初值
MOV TL0,#06H ;置T0定时初值250us
MOV TCNTA,#00H
MOV TCNTB,#00H
LJMP DKN
KN1: CJNE A,#02H,KN2
CLR TR0
LJMP DKN
KN2: CJNE A,#03H,DKN ;可以不要
MOV SEC,#00H
MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE ;可以不要
MOVC A,A+DPTR
MOV P2,A
MOV KEYCNT,#00H
DKN: JNB SP1,$ ;直接寻址为0转移
LJMP WT
DELY10MS: