当前位置:文档之家› 定时计数器(B)

定时计数器(B)

18
5.5 定时器/计数器的综合应用
ORG 0000H LJMP MAIN;转主程序 ORG 000BH;T0中断服务程序入口地址 LJMP T0 ;转T0中断服务程序 ORG 0030H ;主程序 MAIN:MOV SP,#60H;设置堆栈指针 MOV TMOD,#02H;T0工作于定时、方式2 MOV TL0,#06H ;置定时器初值 MOV TH0,#06H ;置定时器重装初值 SETB EA ;CPU允许中断 SETB ET0 ;允许T0中断 SETB TR0 ;启动T0运行 SJMP $ ;实际应用中,这里应是其他程序
4
5.2 定时器/计数器的工作原理
计数器的初值与计数值
可预置初值 的加计数器 初值X
FFFFH FFFEH
计数值m
1 2
.....
0001H 0000H
...
65535 65536(216)
计数值 m=216-X
5
5.2 定时器/计数器的工作原理
工作模式 计数:对输入引脚T0(P3.4)、T1(P3.5)的脉冲 进行计数。 计数次数m=216-X 定时:将时钟脉冲经12分频后的脉冲(即机器周期 脉冲)作为计数的脉冲源。 定时时间t=mTM=(216-X) 12/fosc 即对机器周期脉冲TM进行计数。 二者的主要区别在于计数脉冲的来源不同。
23
5.5 定时器/计数器的综合应用
SETB EA ;中断总允许 SETB ET0 ;允许T0中断 SETB TR0 ;启动T0工作 LOOP: LCALL CZ ;调用拆字子程序 LCALL DISP ;调用显示子程序 SJMP LOOP ;反复循环主流程
24
5.5 定时器/计数器的综合应用
ORG 0100H ;T0 500微秒中断服务程序 T0 :PUSH ACC PUSH PSW ;保护现场 INC 38H ;每500微秒加1 MOV A,38H CJNE A,#200,DONE ;满0.1秒? MOV 38H,#0 INC 39H ;每0.1秒加1 MOV A,39H CJNE A,#10,DONE 满1S MOV 39H,#0
工作计数器
溢出的同时,将 初值重新装入。 存放初值
14
5.4 定时器/计数器的工作方式
工作于方式2时 计数: 计数次数m=28-X 定时: 定时时间t=mTM=(28-X) 12/fosc
15
5.4 定时器/计数器的工作方式
工作方式3--仅T0可用
使用T0的控制寄存器资源
占用T1资源:TR1、TF1,只 能作为8位定时器使用
5 定时器/计数器
在测量控制系统中,常需要有实时时钟和计 数器,以实现定时(或延时)控制以及对外 界事件进行计数。 常用的定时(或延时)方法有: 软件延时 硬件定时 可可编程定时器/计数器T0、T1。
2
5.2 定时器/计数器的工作原理
定时器/计数器的结构(以T0工作于方式1为例)
定时器和计数器是同一个部件,其核心是 一个可预置初值的16位加计数器(特殊功 能寄存器TH0、TL0),对输入的脉冲进行 计数。 脉冲源
TF0:溢出标志,当计数器计 到全1时(FFFFH),此时, 再来一个计数脉冲,计数器 清0,产生溢出,TF0(TF1) 由0变为1。
6
5.2 定时器/计数器的工作原理
定时器/计数器的运行控制
运行控制位
门控位 GATE=0 “控制”=TR0 GATE=1 “控制”=TR0INT0
7
5.2 定时器/计数器的工作原理
定时器/计数器的控制寄存器 定时器控制寄存器TCON
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
运行控制电路
3
5.2 定时器/计数器的工作原理
工作原理 单片机中的定时器和计数器是同一个部件,其核心 是一个可预置初值的16位加计数器,对输入的脉冲 进行计数。 计数器的容量 计数器由两个8位特殊功能寄存器TLi、THi(i=0、1) 组成。最大计数值为216=65536。 计数器的溢出 当计数器计到全1时(FFFFH),此时,再来一个计 数脉冲,计数器清0,产生溢出,TF0(TF1)由0变 为1。
16
5.4 定时器/计数器的工作方式
T0方式3下的T1工作方式:
用作串行口 波特率发生器
设置好工作方式 就开始运行
17
5.5 定时器/计数器的综合应用
工作方式2的应用 例:利用定时器T0定时,在P1.0引脚输出周期为 1ms(频率为1KHz)的方波信号。(fosc=6MHz) 分析: 选择T0工作于定时、方式2、定时时间为500s。 TMOD=0000 0010B=02H 计算初值 fosc=6MHz 机器周期TM=2 s 要定时500 s 即要计数250个机器周期脉冲 初值X=28-250=6=06H
定时器/计数器T0溢出标 志,计数器溢出时,TF0 置“1”,可用于软件查询 或向CPU申请中断。
定时器/计数器T0的运行控 制位,当GATE=0时,只 要TR0=1,T0就开始工作。
TCON可位寻址!
8
5.2 定时器/计数器的工作原理
定时器工作方式寄存器TMOD
用于T1 用于T0 GATE C/T M1 M0 GATE C/T M1 M0
在P3.2低电平时 将TR0置“1”
当P3.2变为高 电平时T0开始 运行
当P3.2变为低电平 时T0停止,令 TR0=0,此时,T0 计数值TM即为被测 脉冲宽度。 31
29
5.5 定时器/计数器的综合应用
;T1中断服务程序,从001BH转来 T1:SETB P1.7 CLR P1.7 ;输出正脉冲 RETI ;中断返回
30
5.5 定时器/计数器的综合应用
门控位的应用 例:利用T0门控位检测出现在INT0引脚上的正脉 冲宽度。 解:先初始化T0工作于定时器方式1,初值为0, GATE设为1,测试过程如下: 机器周期脉冲TM
28
5.5 定时器/计数器的综合应用
ORG 0000H LJMP MAIN;转主程序 ORG 001BH;T1中断服务程序入口地址 LJMP T1 ;转T1中断服务程序 ORG 0030H ;主程序 MAIN:MOV SP,#60H;设置堆栈指针 MOV TMOD,#60H;T1工作于计数、方式2 MOV TL1,#0F4H ;置定时器初值 MOV TH1,#0F4H ;置定时器重装初值 SETB EA ;CPU允许中断 SETB ET1 ;允许T1中断 SETB TR1 ;启动T1运行 CLR P1.7 ;P1.7输出低电平 SJMP $ ;实际应用中,这里应是其他程序
21
5.5 定时器/计数器的综合应用
例:电子钟程序。 利用定时器T0定时,模拟24小时走时的电子钟,时、 分、秒以BCD码形式依次存放在3CH、3BH、3AH; 38H、39H作为软件计数器。 选择T0工作于定时、方式2、定时时间为500s。 TMOD=0000 0010B=02H 计算初值 fosc=6MHz 机器周期TM=2 s 要定时500 s 即要计数250个机器周期脉冲 初值X=28-250=6=06H
26
5.5 定时器/计数器的综合应用
MOV A,3CH ;小时单元(按BCD码)加1 ADD A,#1 DA A MOV 3CH,A CJNE A,#24H,DONE ;满24小时? MOV 3CH,#0 ;小时单元清零 DONE:POP PSW POP ACC ;恢复现场 RETI ;中断返回
27
25
5.5 定时器/计数器的综合应用
MOV A,3AH ;秒单元(按BCD码)加1 ADD A,#1 DA A MOV 3AH,A CJNE A,#60H,DONE ;满1分钟? MOV 3AH,#0 ;秒单元清零 MOV A,3BH ;分钟单元(按BCD码)加1 ADD A,#1 DA A MOV 3BH,A CJNE A,#60H,DONE ;满1小时? MOV 3BH,#0 ;分钟单元清零
19
5.5 定时器/计数器的综合应用
;中断服务程序,从000BH跳转过来 T0:CPL P1.0 ;输出取反 RETI ;中断返回
使用方式2的好处就是它可以自动重新装入初 值,定时时间比较精确。但是,定时时间短。
20
5.5 定时器/计数器的综合应用
如何延长定时时间? 定时器最大定时时间: 方式1:tmax=216TM 方式2: tmax=28TM 为了实现长时间的定时(如1S),我们引进软件计 数器的概念,思路是这样的,先用定时器/计数器做 一个500微秒的定时器,再设置一个2000次的软件 计数器,每次定时时间到了以后将软件计数器中的 值加1,如果软件计数器未计满2000次就直接返回, 若计满2000次(中断了2000次),定时时间就延长 成了 500 s 2000=1S
11
5.3 定时器/计数器的应用
ORG 0000H LJMP MAIN;转主程序 ORG 000BH;T0中断服务程序入口地址 LJMP T0 ;转T0中断服务程序 ORG 0030H ;主程序 MAIN:MOV SP,#60H;设置堆栈指针 MOV TMOD,#01H;T0工作于定时、方式1 MOV TH0,#0FFH MOV TL0,#06H ;置定时器初值 SETB EA ;中断总允许 SETB ET0 ;允许T0中断 SETB TR0 ;启动T0运行 SJMP $ ;实际应用中,这里应是其他程序
5.5 定时器/计数器的综合应用
计数器的应用 注意:由于单片机检测一个脉冲需要2个机器周期, 故外部事件的最高计数频率为振荡频率的1/24 ( fosc/24)。 应用 例:利用T1计数,每计满12次,在P1.7输出一个正 脉冲信号。 选择T1工作于计数、方式2、计数值为12。 TMOD=0110 0000B=60H 计算初值 初值X=28-12=244=F4H
相关主题