当前位置:文档之家› 计算机硬件基础——第7章(定时器计数器)

计算机硬件基础——第7章(定时器计数器)


13
4.方式3
三个8位定时器计数器
方式3只适用于T0
• TL0 作为8位定时器计数器,使用T0的C/T 、GATE 、TR0 、 TF0 ,可定时亦可计数,外部计数脉冲从T0引脚输入,TR0置1启动。
• TH0 可单独用作8位定时器,不能用作外部计数。置1 TR1即可 启动,溢出中断时将TF1置1,即它占用了T1的启动位和中断源。 • TH1 TL1 当定时器T0定义为工作方式3时,定时器T1常用作串 行口的波特率发生器,T1仍可选择方式0、1、2,用TL1、TH1分 别作为13、16、8位计数器,可以改变不同的波特率范围。此时的 T1不能使用中断源。
则有
(213 - X)×(12/f)=1ms 设f=6MHZ (213-X)×(12/6×106)=1×10-3 X=8192 - 500=7692
7692=1E0CH
00011110 00001100B
11110000 TH0=F0H
00001100 TL0=0CH
即共加500次,每次耗费2μ s,共耗费时间1ms
17
振荡器
÷12
T1端 控制 TR1 与门 GATE
TH TL
TF1
中断
或门 INT1
18
2.初始常数X的计算公式:
定时:
(2n – X) ×(12/ f )= 定时间隔 计数: 2n – X = 计数次数 式中的 n,当分别选择工作方式0、1、2、3时,
n =13、16、8、8
19
3.定时间隔和计数的范围:以6MHZ晶振为例
8000 = 1F40H = 0001111101000000B TH0 = FAH TL0 = 00H
T1定时初始常数 (216 – X) ×(12/f) = 50 ×10 –3 X = 65536 - 25 × 10 3 = 40536 = 9E58H
TH1 = 9EH TL1 = 58H
15
程序段如下:
MOV SP, #60H
MOV TMOD, #14H MOV TL0, #00H MOV TH0, #0FAH
;建立堆栈
;T0方式0计数,T1方式1定时 ;T0计数192次初始常数
MOMOV TL1, #58H
;T1定时50ms时间常数
MOV TH1, #9EH
SETB TR0 SETB TR1 SETB EA SETB ET0 ;启动T0开始计数 ;启动T1开始定时 ;以下3条指令与中断有关下章介绍
MOV R0 , #0
;10秒已到,清中断计数
LCALL CYPID
RETN: RETI
;调温度控制程序
23
P78页例3: 测量正脉冲宽度
分析:
首先计数器清零,在正脉冲开始时, 准确启动计数器开始定时,则
在正脉冲结束的下降
沿关闭计数器,此时,
计数器每隔一个机器周期加1。
计数器中的数为正脉
冲的机器周期数。
1
2.计数功能:对外界发生的事件计数,当达到程序规定的计数值时, 输出一脉冲信号,申请中断。 例如一啤酒生产线,如下图所示
光电信号
计 数 24瓶
24瓶装完申请中断
转入中断服务程序装箱
输送带
2
二.8031单片机的定时器计数器控制
8031片内有两个16位定时器计数器,称为T0,T1,与其有关的特 殊功能寄存器SFR有:
TL0高3位无用
①讨论定时方式
选择T0方式0定时,TMOD的低4位为: 0000
6
例如:要求从P1.0脚发出周期为2ms的方波只要选T0定时间隔1ms 求反P1.0即可满足。 定时工作方式中令计数器加1的周期是每个机器周期加1, 即每隔12/f 加1
1
高电平1ms
0
低电平1ms
7
设定时器时间常数为X
;中断次数计数单元清零
;启动T0 ;允许CPU中断 ;允许T0中断 ;以下CPU可执行主程序
22
. . . . . .
T0中断服务程序:
IT0P:
MOV TH0 , #3CH
MOV TL0 , #0B0H INC CJNE R0 ;重装100mS时间常数 ;中断次数计数加1 ;到10秒了吗?
R0 , #100, RETN
即TH1=FFH,TL0=E8H
程序中的TMOD赋值相应改为方式1
12
3.方式2
8位计数器 ,能自动重装时间常数,定时准确
• TL0作为8位计数器,当TL0计数溢出中断时,在置1溢出中断标 志TF0的同时,自动将TH0中所装的原初始常数送TL0,使TL0从 原初始常数开始重新计数。
• 初始化时在TL0、TH0中装入同样的初始常数,TH0即记忆了该 初始常数,因此在中断服务程序中不必重装时间常数,省去了重装 时间常数的时间,因此定时准确。 • 时间常数计算公式为:定时 计数 28 –X = 计数次数 (28 –X)×12/f =定时间隔
IT1P: 略
11
2.方式1
16位计数器
方式1与方式0唯一的区别是计数器是16位,即TL 8位,TH 8位,因此, 计算时间常数的公式中 213 应改为216,上述程序如改用方式1,则常数 计算为:
定时 (216-X)×(12/f)=1×10-3 TH0=FEH ,TL0=0CH 计数 216-X =24 解之 X=FFE8H 解 之 X =FE0CH 即
编程使GATE=1,则启动T0需要INT0=1和TR0=1两个条件,将待 测正脉冲接在INT0引脚,在INT0低电平时用SETB TR0指令使 TR0=1,则在INT0引脚上的正脉冲变高时T0立刻启动开始定时,在 INT0引脚上的正脉冲变低时T0立刻关闭停止定时,此时,计数器 中的数为正脉冲的机器周期数,正脉冲宽度可测。
门控位为0
T1方式0
定时功能
T0方式2
计数功能
只要用 SETB TR0 ,SETB TR1 即可启动T0 T1 开始工作。
4
3.控制定时器计数器长度的寄存器 TL0 TH0 TL1 TH1
用于存放计数初值,它是加1计数器,溢出中断。它们的字节地址 是:
TH1(8位) TL1(8位) TH0(8位) TL0(8位)
24
方式0 13位计数器
最大定时间隔为 :当X=0000H时
213×2×10-6 = 16.384ms 最小定时间隔为 :当13位计数器全1,即X = FF1FH或 FFFFH时 计数范围 : 2μs 1~8192
方式1 16位计数器
最大定时间隔为: 当X=0000H时
216 ×2×10-6 =65536 ×2×10-6 =131.072 ms 最小定时间隔为: 当X=FFFFH 时 计数范围 : 1~65536 方式2和方式3 8位计数器 2μs
MOV TL1, #08H
;T1计数24次初始常数
10
SETB TR0
;启动T0开始定时
SETB TR1
SETB EA SETB ET0 SETB ET1 HERE:AJMP HERE
;启动T1开始 计数
;允许CPU中断 ;允许T0中断 ;允许T1中断 ;等待
IT0P: MOV TH0, #0F0H ;重装时间常数 MOV TL0, #0CH CPL P1.0 RETI ;P1.0求反,输出方波
8DH
8BH
8CH
8AH
控制定时器计数器时,计数长度可分别选择8位,16位,13位, 与工作方式有关。
注意它是加1计数器,例如选择8位计数器,最大可存255,如果 置入初值250,则计数6次即溢出中断。
5
三.8031单片机定时器计数器的四种工作方式:以T0为例
1.方式0
13位计数器
TH0高8位
TL0低5位
8
②讨论计数方式:
例如前述的啤酒生产线,计数24瓶中断转入装箱程序。
选T1方式0计数,TMOD的高4位为: 0 1 0 0 初始常数X的计算: 213 - X =24 X=8192 - 24=8168
8168=1FE8H
00011111 11101000B
11111111 TH1=FFH
00001000 TL1=08H
第五章
定时器 计数器
一、定时器计数器的功能:
1.定时器的功能:定时发出脉冲信号,向CPU申请中断,其定时 间隔的长短及起始控制的时间均可由程序控制。
例如某机械零件的热处理工艺曲线为:
温度
保温5分钟 淬火 开始定时 清洗 空冷 开始定时
回火3小时
实际控制可以由单片机定时发出信号控制自动完成整个工艺过程。
SETB ET1
16
四.关于定时器的小结与补充:
1.关于定时计数两种功能:
8031单片机具有T1、T0两个定时器计数器,并分别具有定时 和计数两种功能。
C/T = 0选择定时功能,此时令计数器加1的脉冲信号是由机内 提供的等间隔的信号,每隔一个机器周期加1,即每隔12/f 秒加1。
C/T = 1选择计数功能,此时令计数器加1的脉冲信号由外部输 入,即从8031的T0和T1(8031的14脚和15脚)输入,当被计数的 外部事件发生一次,则产生一个脉冲信号从T0或T1引脚输入,令 计数器加1,该脉冲信号的速率决定与外部事件的发生速率,不一 定等间隔。 定时和计数的主要区别是令计数器加1的脉冲信号来源不同。
加24次即溢出中断。程序如下:
9
ORG 0000H
AJMP MAIN
ORG 000BH AJMP IT0P ORG 001BH AJMP IT1P
MAIN: MOV SP, #60H
MOV TMOD, #40H MOV TH0, #0F0H MOV TL0, #0CH MOV TH1, #0FFH ;T0定时1ms时间常数 ;T0方式0定时,T1方式0计数
相关主题