中断服务中断:
CPL P1.0 ;输出方波
RETI ;中断返回
例题2: 用定时器1以工作方式2实现计数,每计100次进行累加器加1操作。
⑴ 计算计数初值
28-100=156D=09CH 则
TH1=09CH,TL1=09CH
⑵ TMOD寄存器初始化
M1M0=10,C/T=1,GATE=0 因此
TMOD=60H
⑶ 程序设计
MOV IE, #00H ;禁止中断
MOV TMOD, #60H ;设置计数器1为方式2
MOV TH1, #9CH ;保存计数初值
MOV TL1, #9CH ;设置计数初值
SETB TR1 ;启动计数
DEL:
JBC TF1, LOOP ;查询计数溢出
AJMP DEL
LOOP:
INC A ;累加器加1
AJMP DEL ;循环返回
工作方式3
2个8位方式。工作方式3只适用于定时器0。如果使定时器1为工作方式3,则定时器1将处于关闭状态。
当T0为工作方式3时,THo和TL0分成2个独立的8位计数器。其中,TL0既可用作定时器,又可用作计数器,并使用原T0的所有控制位及其定时器回零标志和中断源。TH0只能用作定时器,并使用T1的控制位TRl、回零标志TFl和中断源,见下图。
通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器(见1.4),TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使 单片机 有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。
下才可能使用。这时,T1往往用作串行口波特率发生器,TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使 单片机 有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。
理解内容
定时器/计数器的应用
例1、设fosc = 6MHz,利用 单片机 内定时/计数器及P10口线输出1000个脉冲,脉冲周期为2ms,试编程。
解:
T = 12×1/fosc = 2us
选取T0定时;T1计数。
设T0采用中断方式产生周期为2ms方波,T1对该方波计数,当输出至第1000个脉冲时,使TF1置1。
在主程序中用查询方法,检测到TF1变1时,关掉T0,停止输出方波。
T0、T1参数的确定:
T0模式0、定时:脉宽为脉冲周期的一半
所以,X = 213-1ms / 2us = 0001 1110 0000 1100B
TH0 = 0F0H
TL0 = 0CH
T1模式1、计数:N = 1000
则 X = 65536-1000 = 64536 = 0FC18H
(若选模式0也可以,此时X = 7192=1C18H)
程序:
MAIN:
WAIT:
TOS:
例2、脉冲参数测量——GATE功能的使用。
电路连接如下图所示。
脉冲高电平(计数)长度值存于21H、20H中,
脉冲低电平长度存于23H、22H中。
解: 复习GATE的用法:
GATE = 0时,TRi = 1,即可启动Ti定时 / 计数
GATE = 1时,TRi = 1,且/INTi =1,才启动定时 / 计数。
MAIN :
TEST0:
TEST1:
TEST2:
TEST3: