定时器原理及实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流程图
主程序:
开始 设置堆栈地址
设置TMOD方式
中断程序:
中断入口地址
重装初值
N
送定时初值
开T0中断 启动T0 计数单元赋值(20H,21H) 等待 N
(20H)-1=0? Y 20H单元赋值20 (21H)-1=0? Y 21H单元赋值60 P1.0取反 中断返回
Dian团队暑期嵌入式培训
第5讲 定时器原理及实验
周叶飞 @ Dian团队
Rereflyer@ 7/23/2011
问题回顾 波特率种类:1800、4800、9600和 19200等 之所以要用11.0592M这么变态的数字,是因 为在串口通信中需要计算出波特率。而波特 率必须是个整数,为了使波特率是个整数, 所以晶振就必须是11.0592的。
(3)根据需要开放定时器/计数器的中断——对IE位赋值; (4)启动定时器/计数器; 如:任务中的SETB TR0 指令 初值的计算方法 X=M-计数值 M是定时器的最大计数值。视工作方式不同而不同。 工作方式0: 13位定时/计数方式,因此,最多可以计到2的13 次方,也就是8192次。
工作方式1: 16位定时/计数方式,因此,最多可以计到2的16 次方,也就是65536次。
主要内容:
(1)定时器/计数器的结构及工作原理 (2)定时器基础实验
MCS-51单片机的定时器/计数器(一)
一、MCS-51单片机定时器/计数器组成:
定时器/计数器0(T0):16位的加计数器 定时器/计数器1(T1):16位的加计数器
二、定时器/计数器的功能
对外部输入信号的计数功能。定时器/计数器0(T0)的 外来脉冲输入端为P3.4;定时器/计数器1(T1)的外来 脉冲输入端为P3.5。 定时功能。定时器/计数器的定时功能也是通过计数实 现的,它的计数脉冲是由单片机的片内振荡器输出经 12分频后产生的信号,即为对机器周期计数。
工作方式2和工作方式3:都是8位的定时/计数方式,因此, 最多可以计到2的8次方,也说是256次。
预置值计算: 用最大计数量减去需要的计数次数即可。 通过上面的任务,我们掌握了计数程序的编制方法,下面 我们再看看定时程序怎样编制。 首先我们看一下下面的程序段。 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#4CH SETB TR0 以上程序是任务一中的定时程序段,它的初始化过程和计 数方式类似。
编程步骤: 1、计算TMOD的值 由于:GATE=0;M1、M0=0、1;C/T=0; 所以:(TMOD)=10H 2、计算初值(单片机的振荡频率为12MHZ) 所需要的机器周期数: n=(50000us/1us)=50000 计数器的初始值:X=65536-50000=15536 所以:(TH0)=3CH;(TL0)=0B0H
流程图
主程序: 开始 中断程序: 中断入口地址 P1.0取反
设置堆栈地址 设置TMOD方式
重新给T0赋初值
送定时器初值 中断返回
开T0中断
启动T0 等待
实例二:利用方式1定时
题目:用定时器T1,使用工作方式1,在单片机的P1.0输出一个周期为2分钟 、占空比为1:1的方波信号。
解:周期为2分钟,占空比为1:1的方波信号,只需要利用T1产生定时 ,每隔1分将P1.0取反即可。 由于定时器定时时间有限,设定T1的定时为50ms,软件计数1200次, 可以实现1分钟定时。
←T0方式字段→
GATE —— 门控位。 GATE = 0 启动不受 /INT0或 /INT1的控制;
GATE = 1 启动受 /INT0 或 /INT1 的控制。
C/T —— 外部计数器 / 定时器方式选择位 C//T = 0 定时方式; C //T = 1 计数方式。 M1M0—— 工作模式选择位(编程可决定四种工作模式)。
T1由TH1、TL1 构成,字节地址 为8DH、8BH
T0由TH0、TL0 构成,字节地址 为8CH、8AH TCON则用于控制定时计 特殊功能寄 数器T0和T1的启动和停止 存器TMOD 计数,同时管理定时器T0 控制定时计 和T1的溢出标志等。 数器的工作 MCS-51单片机定时器/计数器逻辑结构图 方式
MCS-51单片机的定时器/计数器(二)
MCS-51单片机的定时器/计数器应用举例: 利用定时器/计数器实现固定时间的定时 简易信号发生器
实例一:定时器/计数器实现固定时间的定时 题目:利用T0,使用工作方式0,在单片机的P1.0输出一个周 期为2ms,占空比为1:1的方波信号。 解:周期为2ms,占空比为1:1的方波信号,只需要利用T0产生 定时,每隔1ms将P1.0取反即可。 编程步骤: 计算TMOD的值 由于GATE=0;M1M0=00;C/T=0; 所以 (TMOD)=00H 计算初值(单片机振荡频率为12MHZ) 所需要的机器周期数: n=(1000us/1us)=1000 计数器的初始值: X=8192-1000=7192 所以:(TH0)=0E0H,(TL0)=18H
M1M0—— 工作模式选择位(编程可决定四种工作模式)
0 0 1 1 0 1 0 1 13位定时/计数器 16位定时/计数器 模式0 模式1
8 位定时/计数器(自动重装初值) 模式2 T0 8位定时/计数 模式3
1
1
T1 停止工作
模式3
1)工作方式0
T0的等效逻辑结构
在计数工作方式下,计数器的计数值范围是: 1~8192(2的13方) 当为定时工作方式时,定时时间的计算公式为: ( 8192 -计数初值)×晶振周期×12 或 ( 8192 -计数初值)×机器周期 其时间单位与晶振周期或机器周期相同。 如果单片机的晶振选为6.000MHz,则最小定时时间为: [8192—(8192—1)]×1/6×10-6×12=2×10-6(s)=2(us) 最长定时时间为: (8192—0)×1/6×10-6×12=16384×10-6(s)=16384(us)。
= 0 ——定时;
= 1 —— 对外计数。
定时:fosc / 12 = 1 /(12/fosc) = 1 / T
波形等间隔,次数已定,时间确定
即对机器周期进行计数。
T
N个方波 计数ቤተ መጻሕፍቲ ባይዱ脉冲不等间隔。
左图定时时间为 N*T
每个下降沿计数一次
确认一次负跳变需两个机器周期, 所以,计数频率最高为fosc / 24。
TCON 88H
D7 TF1 D6 TR1 D5 TF0 D4 TR0 D3 D2 D1 D0
TR0 —— 定时 / 计数器0运行控制位。
软件置位,软件复位。
TR1 —— 定时 / 计数器1运行控制位。(用法与TR0类似) TF0、TF1 分别是定时、计数器T0、T1的溢出标志位。
(1)定时/计数器的工作方式
3)工作方式2
T0的等效逻辑结构
方式2与方式0、1的区别: 工作方式0和工作方式1的最大特点就是计数溢出后,计 数器为全0,因而循环定时或循环计数应用时就存在反复设 置初值的问题,这给程序设计带来许多不便,同时也会影 响计时精度。
工作方式2就具有自动重装载功能,即自动加载计数初值, 所以也有的文献称之为自动重加载工作方式。在这种工作 方式中,16位计数器分为两部分,即以TL0为计数器,以 TH0作为预置寄存器,初始化时把计数初值分别加载至 TL0和TH0中,当计数溢出时,不再象方式0和方式1那样 需要“人工干预”,由软件重新赋值,而是由预置寄存器 TH以硬件方法自动给计数器TL0重新加载。 方式2在串口通讯时,常用作波特率发生器。
定时器/计数器的控制
定时器/计数器的控制主要是通过以下几个寄 存器实现的:
TCON---定时器/计数器控制寄存器 TMOD---定时器/计数器工作方式控制寄存器 IE ---中断允许控制寄存器
TMOD 89H
D7
GATA
D6
D5
M1
D4
M0
D3
GATA
D2
D1
M1
D0
M0
←T1方式字段→
4)工作方式3
如果定时/计数器0工作于工作方式3,那么定时/计数器1的 工作方式就因为自己的一些控制位已被定时/计数器0借用, 只能工作在方式0、方式1或方式2下,等效电路参见下图:
2.怎样编制计数程序? 首先必须对定时计数器进行初始化,然后再开启定时或 计数。简单的总结一下,定时计数器的初始化包括以下内 容。 (1)确定工作方式——对TMOD赋值; 如:任务中的MOV TMOD,#06H指令,设定T0为计数 器工作方式。 (2)预置定时计数器中计数的初值——直接写入TH和 TL; 如:任务中的MOV TH0,#00H 两条指令,设定计数初 值。 MOV TL0,#00H
2)工作方式1
T0的等效逻辑结构
在工作方式1下,计数器的计数值范围是: 1~65536(2的16方) 当为定时工作方式1时,定时时间的计算公式为: (65536—计数初值)× 晶振周期×12 或 (65536—计数初值)× 机器周期 其时间单位与晶振周期或机器周期相同。 如果单片机的晶振选为6.000MHz,则最小定时时间为: [65536—(65536—1)]×1/6×10-6×12=2×10-6(s)=2(us) 最长定时时间为: (65536—0)×1/6×10-6×12=131072×10-6(s)=131072(us)。