单片机定时计数器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算得到的初值为负值,说明当fosc=6MHz时, 不能采用方式2(即常数自动装入)来产生1ms的定 时,除非把单片机的时钟频率降得很低。
8051单片机的定时/计数器
8051单片机有2个16位的定时/计数器:定 时器0(T0)和定时器1(T1)。它们都有定 时器或事件计数的功能,可用于定时控制、 延时、对外部事件计数和检测等场合。 T0由2个特殊功能寄存器TH0和TL0构成, T1则由TH1和TL1构成。作计数器时,通过 引脚T0(P3.4)和T1(P3.5)对外部脉冲 信号计数,当输入脉冲信号从1到0的负跳变 时,计数器就自动加1。计数的最高频率一般 为振荡频率的1/24。
TL0 TH0 T0 TR0 GATE INT0
计数脉冲输入
TF0
C/T=1
1 & ≥1 计数 器
低5位 8位
13位计数器
2. 方式1—16位方式
振荡器 T0 TR0 GATE INT0 1
1/12
C/T=0
C/T=1
&
≥1
TL0 TH0 TF0 8位 8位
16位计数器
3. 方式2—8位自动装入时间常数方式
五、应用举例
可编程器件在使用前需要进行初始化:
①确定TMOD控制字:编程时将控制字送TMOD; ②计算计数器的计数初值: 编程时将计数初值送TH、 TL; ③ 如果使用中断方式,则要开中断, 如果使用查询方式,则不要开中断。
④ TRi位置位控制定时器的启动和停止。
例1:设晶振频率fOSC=6MHz,使用定时器1以方式 1产生周期为500μs的方波脉冲,并由P1.0 输出。
程序如下: MOV TMOD, #10H ;设置T0工作方式 MOV TH1, #0FFH ;装入定时初值 MOV TL1, #83H SETB TR0 ;启动T0 LOOP: JBC TF0, NEXT ;查询定时时间到否? SJMP LOOP NEXT: MOV TH1, #0F0H ;重新装入定时初值 MOV TL1, #0CH CPL P1.0 ;P1.0输出方波 SJMP LOOP
1.计数器初值的计算 设计数器的最大计数值为M(根据不同工作方 式,M可以是213、216或28),则计算初值X的 公式如下: X=M-要求的计数值
2.定时器初值的计算 在定时器模式下,计数器由单片机主脉冲 fosc经12分频后计数。因此,定时器定时初 值计算公式: X=M-(要求的定时值)/(12/fosc) 式中,M为定时器模值(根据不同工作方式, M可以是213、216或28)
D7 TF1 D6 TR1 D5 TF0 D4 TR0 D3 IE1 D2 IT1 D1 IE0 D0 IT0
中断请求标志
启动定时/计数器 触发方式选择
0 停止 1 启动 0 低电平 1 下降沿
三、定时器/计数器的工作方式
定时器/计数器共有四种工作方式
1. 方式0—13位方式
振荡器 1/12
C/T=0 定时 器
(216–X)×2×10 -6 =250×10 -6 即216–X=125 X=216-125=10000H-7DH =0FF83H 所以,初值为: TH1=0FFH,TL1=83H ③ 如果采用中断方式,编程时要打开全局和局 部中断,本例采用查询方式,不用中断。 ④ 由定时器控制寄存器TCON中的TR1位控制定 时器的启动和停止。 TR1=1,启动; TR1=0,停止。
振荡器 1/12
C/T=0 TL0 TF0
C/T=1
T0 TR0
GATE INT0
1
&
≥1
TH0
4. 方式3—双8位方式 仅T0可以工作在方式3—此时T0分成2个独立的 计数器—TL0和TH0 ,前者用原来T0的控制信 号(TR0、TF0),后者用原来T1的控制信号 (TR1、TF1)。
四、定时/计数器常数的计算
8051
P1.0
500μs
① TMOD确定 T1控制 GATE C/T 0 0 M1 0 M0 1
T0控制 GATE C/T X X M1 X M0 X
控制字10H
② 计算定时器的初值;
要产生500μs 的方波脉冲,只需在P1.0端 以250μs为间隔,交替输出高低电平即可实现。 为此,定时间应为250μs 。使用6MHz晶振, 则一个机器周期为2μs,设待求定时器初值为X, 则:
例2:假设单片机的振荡频率fosc=6MHz,现要 求产生1ms的定时,试分别计算定时器T1在方 式0、方式1和方式2时的初值。 方式0:最大计数值为M=213,因此定时器的初值应为 X = 213-(1×10-3)/(12/(6×10-6) = 7692D
= 1111000001100B 其中高8位为TH1的初值,即F0H,低5位为 TL1的初值, 注意,这里TL1的初值应为00001100B即0CH,而不是 60H,因为在方式0时,TL1的高3位是不用的,应都 设为0。
方式1:最大计数值为M=216,因此定时器的 初值应为 X = 216-(1×10-3)/(2×10-6) = 65036D = 1111111000001100B = FE0CH 此时高8位TH1的初值为FEH,低8位TL1的 初值为0CH。
方式2:最大计数值为M=28,因此定时器的初值 应为 X = 28-(1×10-3)/(2×10-6) = 256-500= -254
二、定时器/计数器的特殊功能寄存器 与定时器/计数器有关的特殊功能寄存器有: 1.工作方式控制寄存器TMOD D7 D6 GATE C/T D5 M1 D4 M0 D3 D2 GATE C/T D1 M1 D0 M0
T1控制
T0控制
GATE—门控位 C/T—计数/定时选择
M1 M0—工作方式选择
2.定时器控制寄存器TCON
一、定时/计数器的功能 定时/计数器的核心部件是二进制加1计数 器(TH0、TL0或TH1、TL1) 。 1. 定时功能----计数输入信号是内部时钟脉 冲,每个机器周期使技数器的值加1。
2. 计数功能---பைடு நூலகம்计数脉冲来自相应的外部输入 引脚,T0为P3.4,T1为P3.5。
在特殊功能寄存器TMOD中,有一个控制位(C/ T),分别用于控制定时/计数器工作在定时器方 式还是计数器方式。
8051单片机的定时/计数器
8051单片机有2个16位的定时/计数器:定 时器0(T0)和定时器1(T1)。它们都有定 时器或事件计数的功能,可用于定时控制、 延时、对外部事件计数和检测等场合。 T0由2个特殊功能寄存器TH0和TL0构成, T1则由TH1和TL1构成。作计数器时,通过 引脚T0(P3.4)和T1(P3.5)对外部脉冲 信号计数,当输入脉冲信号从1到0的负跳变 时,计数器就自动加1。计数的最高频率一般 为振荡频率的1/24。
TL0 TH0 T0 TR0 GATE INT0
计数脉冲输入
TF0
C/T=1
1 & ≥1 计数 器
低5位 8位
13位计数器
2. 方式1—16位方式
振荡器 T0 TR0 GATE INT0 1
1/12
C/T=0
C/T=1
&
≥1
TL0 TH0 TF0 8位 8位
16位计数器
3. 方式2—8位自动装入时间常数方式
五、应用举例
可编程器件在使用前需要进行初始化:
①确定TMOD控制字:编程时将控制字送TMOD; ②计算计数器的计数初值: 编程时将计数初值送TH、 TL; ③ 如果使用中断方式,则要开中断, 如果使用查询方式,则不要开中断。
④ TRi位置位控制定时器的启动和停止。
例1:设晶振频率fOSC=6MHz,使用定时器1以方式 1产生周期为500μs的方波脉冲,并由P1.0 输出。
程序如下: MOV TMOD, #10H ;设置T0工作方式 MOV TH1, #0FFH ;装入定时初值 MOV TL1, #83H SETB TR0 ;启动T0 LOOP: JBC TF0, NEXT ;查询定时时间到否? SJMP LOOP NEXT: MOV TH1, #0F0H ;重新装入定时初值 MOV TL1, #0CH CPL P1.0 ;P1.0输出方波 SJMP LOOP
1.计数器初值的计算 设计数器的最大计数值为M(根据不同工作方 式,M可以是213、216或28),则计算初值X的 公式如下: X=M-要求的计数值
2.定时器初值的计算 在定时器模式下,计数器由单片机主脉冲 fosc经12分频后计数。因此,定时器定时初 值计算公式: X=M-(要求的定时值)/(12/fosc) 式中,M为定时器模值(根据不同工作方式, M可以是213、216或28)
D7 TF1 D6 TR1 D5 TF0 D4 TR0 D3 IE1 D2 IT1 D1 IE0 D0 IT0
中断请求标志
启动定时/计数器 触发方式选择
0 停止 1 启动 0 低电平 1 下降沿
三、定时器/计数器的工作方式
定时器/计数器共有四种工作方式
1. 方式0—13位方式
振荡器 1/12
C/T=0 定时 器
(216–X)×2×10 -6 =250×10 -6 即216–X=125 X=216-125=10000H-7DH =0FF83H 所以,初值为: TH1=0FFH,TL1=83H ③ 如果采用中断方式,编程时要打开全局和局 部中断,本例采用查询方式,不用中断。 ④ 由定时器控制寄存器TCON中的TR1位控制定 时器的启动和停止。 TR1=1,启动; TR1=0,停止。
振荡器 1/12
C/T=0 TL0 TF0
C/T=1
T0 TR0
GATE INT0
1
&
≥1
TH0
4. 方式3—双8位方式 仅T0可以工作在方式3—此时T0分成2个独立的 计数器—TL0和TH0 ,前者用原来T0的控制信 号(TR0、TF0),后者用原来T1的控制信号 (TR1、TF1)。
四、定时/计数器常数的计算
8051
P1.0
500μs
① TMOD确定 T1控制 GATE C/T 0 0 M1 0 M0 1
T0控制 GATE C/T X X M1 X M0 X
控制字10H
② 计算定时器的初值;
要产生500μs 的方波脉冲,只需在P1.0端 以250μs为间隔,交替输出高低电平即可实现。 为此,定时间应为250μs 。使用6MHz晶振, 则一个机器周期为2μs,设待求定时器初值为X, 则:
例2:假设单片机的振荡频率fosc=6MHz,现要 求产生1ms的定时,试分别计算定时器T1在方 式0、方式1和方式2时的初值。 方式0:最大计数值为M=213,因此定时器的初值应为 X = 213-(1×10-3)/(12/(6×10-6) = 7692D
= 1111000001100B 其中高8位为TH1的初值,即F0H,低5位为 TL1的初值, 注意,这里TL1的初值应为00001100B即0CH,而不是 60H,因为在方式0时,TL1的高3位是不用的,应都 设为0。
方式1:最大计数值为M=216,因此定时器的 初值应为 X = 216-(1×10-3)/(2×10-6) = 65036D = 1111111000001100B = FE0CH 此时高8位TH1的初值为FEH,低8位TL1的 初值为0CH。
方式2:最大计数值为M=28,因此定时器的初值 应为 X = 28-(1×10-3)/(2×10-6) = 256-500= -254
二、定时器/计数器的特殊功能寄存器 与定时器/计数器有关的特殊功能寄存器有: 1.工作方式控制寄存器TMOD D7 D6 GATE C/T D5 M1 D4 M0 D3 D2 GATE C/T D1 M1 D0 M0
T1控制
T0控制
GATE—门控位 C/T—计数/定时选择
M1 M0—工作方式选择
2.定时器控制寄存器TCON
一、定时/计数器的功能 定时/计数器的核心部件是二进制加1计数 器(TH0、TL0或TH1、TL1) 。 1. 定时功能----计数输入信号是内部时钟脉 冲,每个机器周期使技数器的值加1。
2. 计数功能---பைடு நூலகம்计数脉冲来自相应的外部输入 引脚,T0为P3.4,T1为P3.5。
在特殊功能寄存器TMOD中,有一个控制位(C/ T),分别用于控制定时/计数器工作在定时器方 式还是计数器方式。