定时器工作原理.docx
- 文档编号:12161780
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:12
- 大小:54.34KB
定时器工作原理.docx
《定时器工作原理.docx》由会员分享,可在线阅读,更多相关《定时器工作原理.docx(12页珍藏版)》请在冰豆网上搜索。
定时器工作原理
定时器工作原理
通电延时型。
只要在定时的时间段内(即1分钟)定时器一直得电,则常开触电就会闭合,只要定时器不断电常开触电就会一直闭合。
定时器断电则常开触电断开
图6.1定时器/计数器结构框图
定时器/计数器1
定时器/计数器0
位序
D7
D6
D5
D4
D3
D2
D1
DO
位标志
GATE
C/
M1
MO
GATE
C/
M1
MO
M1
MO
工作方式
功能说明
0
0
1
13位计数器
0
1
2
16位计数器
1
0
3
自动再装入8位计数器
1
1
4
定时器0:
分成两个8位计数器定时器1:
停止计数
2•工作在计数方式
C/二1,13位计数器对外部输入信号进行加1计数。
利用由0变为1时,开始计数,由1变为0时,停止计数,可以测量在端出现的正脉冲的宽度。
计数值的范围是1~213=8192(个外部脉冲)。
【例6.2】假设AT89S52单片机晶振频率为12MHz,要求定时时间8ms,使用定时器T0,工作方式0,计算定时器初值X。
解:
tt=(213—)>机器周期
•••8X03=(213—)X1
X=8192-8000=192
转换成二进制数为:
11000000B
【例6.3】假设AT89S52单片机晶振频率为12MHz,所需定时时间为250卩s当T0工作在方式0时T0计数器的初值是多少?
解:
tt=(213—)>机器周期
•••250=(213-<0)X1
X0=8192-250=7942
转换成二进制数为:
1111100000110B
【例6.4】利用T0方式0产生1ms的定时,在P1.2引脚上输出周期为2ms的方波。
设单片机晶振频率fosc=12MHz。
解:
(1)解题思路
要在P1.2引脚输出周期为2ms的方波,只要使P1.2每隔1ms取反一次即可。
执行指令为CPLP1.2。
(2)确定工作方式:
方式0TMOD=00H
C/=0:
T0为定时功能;(D2位)
GATE=0,只要用软件使TR0(或TR1)置1就能启动定时器T0(或T1);
M1M0=00,工作方式0
•••TMOD的值为=00H
TMOD.4~TMOD.7可取任意值,因T1不用,这里取0值。
使用MOVTMOD,#00H即可设定T0的工作方式
(3)计算1ms定时时T0的初值
计数个数:
X=1ms/l卩s=1000
设T0的计数初值为X0,则X0=(213一X)s
=8192—1000
=7192D
转换成二进制数为:
1110000011000B
高8位低5位
将高8位11100000=0E0H装入TH0
将低5位11000=18H装入TL0
1
EA=1,CPU开放中断;
ET0=1,允许T0中断;
(4)编程
可米用中断和查询两种方式编写程序。
方法一:
中断方式
ORG0000H
AJMPMAIN
ORG000BHAJMPIT0P
ORG1000H
MAIN:
MOVSP,#60H
MOVTH0,#0E0H
MOVTMOD,#00H
MOVTL0,#18H;
MOVTH0,#0E0H
SETBEA
SETBET0
SETBTR0,
HERE:
SJMPHERE
IT0P:
MOV
MOVCPLRETI
ORG1200H
TL0,#18HTH0,P1.2
转主程序MAIN
转T0中断服务程序IT0P
;设堆栈指针
;给定时器T0送初值设置T0为方式0,定时送定时初值
CPU开中断
T0允许中断
启动T0定时
;等待中断
;T0中断入口
;重新装入计数初值
#0E0H
;输出方波
;中断返回END
方法二:
查询方式
MOVTMOD
MOVTL0,#18H
MOVTH0,#0E0HSETBTR0
LOOP:
JBCTF0,
SJMPLOOP
NEXT:
MOVTL0,MOVTH0,#0E0H
#00H;设置T0为方式0,定时
;送初值
;启动T0定时
NEXT;查询定时时间到否?
#18H;重新装入计数初值
CPLP1.2;输出方波
SJMPLOOP:
重复循
632工作方式1
工作方式寄存器TMOD中的M1M0为:
01。
定时器T0工作方式1与工作方式0类同,差别在于其中的计数器的位数。
工作方式1以16位计数器参与计数。
定时器/计数器0方式1的逻辑结构如图6.3所示。
1.工作在定时方式
C/二0,定时器对机器周期计数。
定时时间的计算公式为:
定时时间=(213廿数初值)^晶振周期X12
若晶振频率为12MHz,则最短定时时间为
[216-(216-1)]总/12)杓一6X12=1ys
(216-0)X(1/12)X10-6X12=65536卩手65.5ms
2.工作在计数方式
C/二1,16位计数器对外部输入信号进行加1计数。
计数值的范围是1~216=65536(个外部脉冲)。
【例6.5】假设AT89S52单片机晶振频率为12MHz,所需定时时间为10ms,当T0工作在方式1时T0计数器的初值是多少?
解:
tt=(216-<0)X机器周期
•••10X03=(213-<0)X
X=65536-10000=55536
转换成二进制数为:
1101100011110000B=0D8F0H
【例6.6】假设AT89S52单片机晶振频率为12MHz,定时器T0的定时初值为9800,计算T0工作在方式1时的定时时间。
解:
tt=(216-<0)X机器周期
•••t=(216£800)X1
t=65536-9800=55736ys
【例6.7】用定时器T0产生50HZ的方波。
由P1.0输出此方波(设时钟频率为12MHZ)。
采用中断方式。
解:
50HZ的方波周期T为T=1/50=20ms
时钟频率为12MHz,则机器周期=1电
1010碁(216—)X1
X=65536-10000=55536
转换为二进制数:
1101100011001100B
高8位=0D8H装入TH0,低8位=0CCH装入TL0
(2)程序
ORG0000H
;T0的中断入口地址
AJMPMAINORG000BH
;设置T0为工作方式1;装入定时器初值
;设置T0允许中断
CPU开中断
;启动T0
;等待中断
AJMPT0INTORG0100H
MAIN:
MOVTMOD,#01H
MOVTH0,#0D8H
MOVTL0,#0CCHSETBET0
SETBEA
SETBTR0SJMP$
中断服务程序;
ORG0300H
T0INT:
CPLP1.0;P1.0取反
MOVTH0,#0D8H;重新装入定时初值
MOVTL0,#0CCH
RETI
6.3.3工作方式2
定时器/计数器0方式2的逻辑结构如图6.4所示。
工作方式寄存器TMOD中的M1M0为:
10
定时器/计数器在工作方式2时,16位的计数器分成了两个独立的8位计数器TH和TL。
此时,定时器/计数器构成了一个能重复置初值的8位计数器。
其中,TL用作8位计数器,TH用来保存计数的初值。
每当TL计满溢出时,自动将TH的初值再次装入TL0
1.工作在定时方式
C/=0,定时器对机器周期计数。
定时时间的计算公式为:
或定时时间=(28-计数初值)X机器周期
若晶振频率为12MHz,则最短定时时间为
[2-(28-1)]总/12)10一6X12=1ys
最长定时时间为
(28-0)X(1/12)X10-6H2=256ys
2•工作在计数方式
C/二1,8位计数器对外部输入信号进行加1计数。
计数值的范围是1~労=256(个外部脉冲)。
【例6.8】利用T0方式2实现以下功能:
当T0(P3.4)引脚每输入一个负脉冲时,使P1.0输出一个500ys的同步脉冲。
设晶振频率为6MHz,请编程实现该功能。
其波形如图6.5所示。
图6.5例6.6波形图
首先选T0为方式2,外部事件计数方式。
当P3.4引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为500ys定时工作方式,并使P1.0输出由1变为0。
T0定时到产生溢出,使P1.0引脚恢复输出高电平。
根据题目要求方式控制字TMOD是:
计数时:
(TMOD)=00000110B=06H
定时时:
(TMOD)=00000010B=02H
(2)计算初值
机器周期T=12/fosc=12/6MHZ=2ys
计数初值=(256-X)=(256-1)=255=0FFH,(TH0)=(TL0)=0FFH
定时时:
计数个数X=T/Tm=500y42ys=250
定时初值=256-X=256-250=6,
(TH0)=(TL0)=06H
(3)编程方法
采用查询方法
START:
MOVTMOD,#06H;T0方式2,外部计数方式
MOVTH0,#0FFH;T0计数初值
MOVTL0,#0FFH
SETBTRO;启动定时500ys
L00P2:
JBCTFO,PTF02;查询溢出标志,定时到TFO=l转移,且TFO=0(第一个500卩到否?
)
SJMPL00P2
PTF02:
SETBP1;P1.0置1(到了第一个500卩s)
CLRTR0;停止计数
SJMPSTART
634工作方式3
工作方式寄存器TMOD中的M1M0为:
11。
工作方式3仅对定时器/计数器0有效,此时,将16位的计数器分为两个独立的8位计数器TH0和TL0。
当定时器/计数器0工作在方式3时,定时器/计数器1只能工作在方式0〜2,并且工作在不需要中断的场合。
在一般情况下,当定时器/计数器1用作串行口波特率发生器时,定时器/计数器0才设置为工作方式3。
此时常把定时器/计数器1设置为方式2,用作波特率发生器。
定时器/计数器0在方式3下的逻辑结构如图6.6所示。
【例6.9】设某用户系统中已使用了两个外部中断源,并置定时器T1工作在方式2,作串行口波特率发生器用。
现要求再增加一个外部中断源,并由P1.0
引脚输出一个5kHz的方波。
fosc=12MHz。
(1)确定工作方式
T0方式3下,TL0作计数用,而TH0可用作8位的定时器,定时控制P1.0引脚输出5kHz的方波信号。
T1为方式2,定时。
TMOD是:
00100111B=27H
(2)计算初值
TL0初值:
FFH,TH0初值X0计算如下:
•••P1.0的方波频率为5kHz,故周期
T=1/(5kHz)=0.2ms=200ys
•••用TH0定时100yS寸,
X0=256-100X12/12=156
(3)程序如下:
MOVTMOD,#27H;T0为方式3,计数;T1为方式2,定时
MOVTL0,#0FFH
MOVTH0,#156MOVTHl,#data
MOVTLl,#data
MOVTCON,#55H
MOVIE,#9FH
;置TL0计数初值
;置TH0计数初值
;data是根据波特率要求设置的常数(即初值)
;外中断0,外中断1边沿触发,启动T0,T1;开放全部中断
TL0溢出中断服务程序(由000BH转来)
RETI
THO溢出中断服务程序(由OO1BH转来)
TH0INT:
MOVTHO,#156;THO重新装入初值
CPLP1.O;输出波形
RETI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时器 工作 原理