第四章 MCS—51定时计数器及其应用
MCS-51单片机的基本应用(显示,AD转换,定时计数
第4节编程应用范例[学习要求]掌握MCS-51单片机的基本应用。
[重点与难点]重点:动态扫描LED显示电路编程范例;定时/计数器软件编程范例;A/D接口电路;矩阵式键盘接口技术及编程。
难点:动态扫描LED显示电路编程范例;定时/计数器软件编程范例。
[理论内容]一、并行I/O口编程范例单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路,下面从常用的LED显示原理开始,详尽讲解利用单片机驱动LED数码管的电路及编程原理,目的在于通过这一编程范例,让初学者了解I/O口的编程原理,意在起举一反三,抛砖引玉的作用。
LED的发光原理,稍有电子技术基础的人士都很清楚,这里不想作过多的介绍,7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。
LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
图1是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
图1 段数码管将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED 的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。
而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。
其它字符的显示原理类同,读者自行分析即可。
MCS-51单片机的定时器计数器
1. 定时器T0/T1 中断申请过程
(1)在已经开放T0/T1中断允许且已被启动的前提下, T0/T1加1计满溢出时 TF0/TF1标志位自动置“1” ;
(2)CPU 检测到TCON中TF0/TF1变“1”后,将产生指 令:LCALL 000BH/LCALL 001BH 执行中断服务程序;
(3)TF0/TF1标志位由硬件自动清“0”,以备下次中断申
郑州大学
docin/sundae_meng
(3)工作方式寄存器TMOD
T1
T2
GATE C / T M1 M0 GATE C / T M1 M0
M1,M0:工作方式选择位 。
=00:13位定时器/计数器; =01:16位定时器/计数器(常用); =10:可自动重装的8位定时器/计数器(常用); =11:T0 分为2个8位定时器/计数器;仅适用于T0。 C/T :定时方式/计数方式选择位。 = 1:选择计数器工作方式,对T0/T1引脚输入的外部事件 的负脉冲计数; = 0 :选择定时器工作方式,对机器周期脉冲计数定时。 如下页图所示。
CPL P1.0 MOV TH0,#15H MOV TL0,#0A0H
START:MOV SP,#60H MOV P1,#0FFH
SETB TR0 POP PSW
MOV TMOD,#01H MOV TH0,#15H MOV TL0,#0A0H
POP ACC RETI END
SETB EA
Байду номын сангаас
SETB ET0
定时器/计数器0采用工作方式1,其初值为:
21650ms/1s=6553650000=15536=3CB0H
电路图如下:
郑州大学
docin/sundae_meng
MCS-51单片机的定时器-计数器
MCS-51的定时器/计数器共有四种工作方式。工作在方式0、方 式1和方式2时,定时器/计数器0和定时器/计数器1的工作原理完全 一样,现以定时器/计数器0为例介绍前三种工作方式。
1. 方式0(M1M0=00) (1)电路逻辑结构
方式0是13位计数结构的工作方式,其计数器由TH0全部8位 和TL0的低5位构成。TL0高三位弃之不用。图6.4 是定时器/计数 器0工作在方式0的逻辑结构。
分析:题目的要求可用下图来表示。
。
P1.0
8051 250 s 250 s
由上图可以看出只要使 的电位每隔250 取一次反即可。所 以定时时间应取250 。
1)计算计数初值 设计数初值为x,由定时计算公式知:
2)专用寄存器的初始化
D7
D6 D5 D4
D3
D2 D1
D0
GATE
GATE
所以,TMOD应设置为:10H 开放定时器/计数器1中断,所以IE应设置为:88H
当GATE=1时,只有TR0和 同时为高电平,定时器/计数 器 才工作,否则,定时器/计数器不工作。
(2)定时和计数的应用 计数范围:1~213 计数计算公式:计数值=213-计数初值 定时范围:1机器周期~213机器周期 定时计算公式:定时时间=(213-定时初值)×机器周期 如果晶振频率为6MHz ,则最大定时时间为: 213×1/6MHz×12=214( )
单片机原理及应用
MCS-5单片机内部共有两个16位可编程的定时器/计数器,即 定时器T0和定时器T1它们既有定时功能又有计数功能。
1.1 结构
定时器/计数器的基本结构如图6.3所示。基本部件是两个8位计 数器(其中TH1和TL1是T1的计数器,TH0和TL0是T0的计数器)。
第四章MCS-51定时计数器及其应用
4 --- 5
第四章 第二节 定时/计数器的控制与工作方式
4 --- 6
2、定时器控制寄存器TCON 1) TF1 定时器1溢出标志 2) TR1 定时器1运行控制位 3) TF0 定时器0溢出标志 4) TR0 定时器0运行控制位 5) IE1 外部中断1请求标志 6) IT1 外中断1触发方式选择位 7) IE0 外部中断0请求标志 8) IT0 外部断0触发方式选择位。 应用时可通过中断和查询的方式获得 溢出信息-----TF0=1/0 例:启动T0工作,用指令
第四章 第三节 定时/计数器的应用
(2)计数器初值的计算 1)计数器模式时的计数初值 TC=2M-N (M为计数器位数,N为要求的计数值)
M osc
4 --- 12
方式0:M=13,计数器的最大计数值213=8192。方式1:M=16,计数 f t 2 器的最大计数值 216=65536;方式 212 :M=8 ,计数器的最大计数值 28= 256;方式3同方式2。
定时工作方式1时,定时时间为:
定时时间=(216-计数初值TC)×机器周期 用于计数器工作方式时, 最大计数值为216=65536。
第四章
1-----9
第二节 定时/计数器的控制与工作方式
3. 方式2
定时 / 计数器工作于方式 2时,将两 个 8 位计数器 THx 、 TLx 分成独立的 两部分,组成一个可自动重装载的 8 位定时/ 计数器。其逻辑结构如图 所示。
应用编程
并行I/O口
串行I/O口
中断系统
P0 P1 P2 P3
TXD RXD
INT0 INT1
图2—1 MCS—51单片机的功能模块框图
MCS-51单片机内部定时器计数器
二、 方式1
方式 1(16位计数器)
•MCS-51单片机内部定时器计数器
方式1和方式0的工作原理基本相同,唯一 不同是T0和T1工作在方式1时是16位的计数/定 时器。
方式1时的计数长度M是2的16次方。16位 的初值直接拆成高低字节,分别送入TH和TL 即可。
•MCS-51单片机内部定时器计数器
M1 M0:四种工作方式的选择位 工作方式选择表
M1 M0 方式
说明
0 0 0 13 位定时器(TH的 8 位和TL的低 5 位)
0 1 1 16 位定时器/计数器
1 0 2 自动重装入初值的 8 位计数器 T0 分成两个独立的 8 位计数器,
1 1 3 T1 在方式 3 时停止工作
定时 1 ms的初值:
因为 机器周期=12÷6 MHz= 2 μs
所以 1 ms内T0 需要计数N次:
•MCS-51单片机内部定时器计数器
N= 1 ms÷2 μs = 500
由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为 X=M-N=8 192-500=7 692=1E0CH 但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其 余码均计入高 8 位TH0 的初值, 则 T0
0。TF产生的中断申请是否被接受, 还需要由中断计数器T1、 T0 的运行控制位,
通过软件置 1 后, 定时器 /计数器才开始工作, 在系统复位时
被清 0。
•MCS-51单片机内部定时器计数器
定时器的工作方式
一、 方式 0
方式 0(13位计数器)
•MCS-51单片机内部定时器计数器
•MCS-51单片机内部定时器计数器
第4章 MCS51单片机定时_计数器.ppt.Convertor
第4章定时/计数器本章要点定时/计数器的工作原理定时/计数器的控制寄存器和方式寄存器定时/计数器的工作方式、计数初值的设置以及各种工作方式下的应用编程4.1 定时/计数器的结构及工作原理MCS-51单片机内部由两个16位可编程的定时/计数器,即定时器T0和定时器T1,52系列单片机提供3个定时器,第三个定时器为T2。
它们既可以用作定时器,又可用作计数器。
我们主要讲51系列单片机的定时/计数器。
4.1.1 定时/计数器的结构定时/计数器的基本结构如图所示。
基本部件是两个8位的计数器。
由TH0和TL0组成T0,由TH1和TL1组成T1,它们都是以加1的方式完成计数。
特殊功能寄存器TMOD控制定时/计数器的工作方式,TCON控制定时/计数器的启动运行并记录T0、T1的溢出标志。
通过初始化编程,可以预置计数初值、指定其工作方式及控制其运行1.定时器的工作原理在作定时器使用时,输入的计数脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器也可以看作对机器周期计数的计数器。
故其计数速率为晶体振荡频率的1/12。
如果晶振频率为12 MHz,则定时器每接收一个输入脉冲的时间为1us。
4.1.2 定时/计数器的工作原理2.计数器的工作原理当它用作计数器时,它对接到相应的外部引脚T0(P3.4) 或T1(P3.5)上的外部事件计数。
在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1。
计数器在每个机器周期采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,则计数器加1。
因此计数器需要两个机器周期来识别一个从高到低的跳变,故最高计数速率为晶振的1/24。
不管是定时还是计数工作方式,定时器在运行时不占用CPU的时间,除非产生溢出才可能中止CPU的当前操作。
可见,定时/计数器是单片机内部效率高且工作灵活的部件。
这里要强调一点,MCS-51系列单片机的定时/计数器采用的是加1计数方式。
即单片机内部的计数器从初值开始一直加1,直到产生溢出为止。
MCS_51单片机定时_计数器及应用(基于Proteus仿真)
MCS-51单片机定时/计数器及应用基于Proteus仿真前言:本文对MCS-51单片机的定时/计数器进行了简明扼要的总结和归纳,并在后面举了三个简单的例子,这样有助于更好地理解与掌握。
1、MCS-51单片机有T0和T1两个16位可编程定时/计数器。
其中T0由两个特殊功能寄存器TH0和TL0组成,T1由两个特殊功能寄存器TH1和TL1组成。
受MCS-51单片机内部工作机制的限制,最高的外部计数脉冲的频率不能超过时钟频率的1/24,并且要求外部脉冲的高电平和低电平的持续时间不能小于一个机器周期。
单片机中的定时/计数器不管是用于定时还是计数,本质上都是通过对脉冲的计数实现的,只不过定时功能是对内部固定频率的脉冲信号进行计数,而计数功能是对来自单片机外部引脚T0或T1上的脉冲信号进行计数。
定时/计数器的控制主要是通过两个特殊功能寄存器TCON和TMOD 实现的。
2、定时/计数器T0,T1控制寄存器TCON:中断请求标志都是当CPU检测到有相应中断发生后,由硬件将相应的标志置1,当CPU响应该中断转向相应的中断处理程序时,由硬件自动将相应的标志位清0.系统复位时,TCON每一位都清零。
在查询方式时,TF0,TF1可以由程序查询和清“0”。
IT0/IT1:外部中断0/1的触发类型控制位,IT0/IT1=1表示下降沿触发,IT0/IT1=0表示低电平触发,可以由软件来设置或清除。
IE0/IE1:外部中断0/1的中断请求标志位,当检测到INT0/INT1引脚上出现外部中断信号的下降沿时,由硬件置位,申请中断。
进入中断服务程序后被硬件自动清除。
TR0/TR1:T0/T1运行控制位,靠软件置位或清零,置位时T0/T1开始工作,清零时停止工作。
TF0/TF1:T0/T1中断请求标志位,当T0/T1计数溢出归零时,由内部硬件置1,当CPU 响应中断并进入中断服务程序后,TF0/TF1自动清零。
3、定时/计数器工作方式寄存器TMOD:TMOD用于确定定时/计数器的工作方式及功能,其中高四位用于控制T1,低四位用于控制T0,4、工作方式0及应用当TMOD中的M1M0=00时,定时/计数器工作在方式0,构成13位的定时/计数器,它由THi的8位和TLi的低5位组成。
MCS51单片机的定时器计数器
脉冲宽度测量应用
简介:脉冲宽度测量是定时器计数器在MCS51单片机中的一个重要应用, 通过定时器计数器可以精确测量脉冲信号的宽度。
工作原理:利用定时器计数器对输入的脉冲信号进行定时计数,根据计数 值和定时器计数器的时钟频率,可以计算出脉冲信号的宽度。
应用场景:在电机控制、通信、测量等领域中,需要精确测量脉冲信号的 宽度,例如在电机控制中,需要测量电机的占空比,以实现精确控制。
MCS51单片机的应用领域
工业控制 智能仪表 家电产品 通讯设备
MCS51单片机的定时器计数器功能
定时器/计数器:用于时间延迟和计数 工作模式:四种模式可选,包括模式0、模式1、模式2和模式3 计数范围:16位计数,可计数0-65535 定时器溢出标志:当定时器溢出时,会设置溢出标志位,可产生中断或溢出处理
定时器计数器在 串行通信中的工 作原理:通过定 时器和计数器来 控制数据传输的 速率和同步
定时器计数于产生精确的时间延迟或定时,实现定时器计数器的最基本功能。
计数功能:用于对外部事件进行计数,例如计数脉冲信号的个数。
事件触发:可以用于产生中断,用于处理特定事件,如时间到达或计数达到预设值。
THANK YOU
汇报人:
停止方式:通过编程设置定时器计数器的停止方式,如手动停止或自动停 止
启动条件:定时器计数器在满足一定条件时自动启动,如达到预设时间或 外部事件触发
停止条件:定时器计数器在满足一定条件时自动停止,如达到预设时间或 外部事件触发
定时器计数器的读写操作
读取当前计数值:通过读取相应的寄存器,可以获取定时器/计数器的当前计数值。
优势:使用定时器计数器进行脉冲宽度测量具有精度高、可靠性好等优点, 可以满足各种应用需求。
MCS-51单片机的定时、计数器
M1 0 0
M0 0 1
工作方式 0 1
方式说明 13位定时器/计数器 16位定时器/计数器 具有自动重装初值的8位定时器 /计数器
1
1
0
1
2
3
3.定时器/计数器控制寄存器TCON TCON控制寄存器各位定义如下:
D7
TCON
TF1
D6
TR1
D5
TF0
D4
TR0
D3
IE1
D2
IT1
D1
IE0
D0
IT0 字节 地址 88H
计数器的高8位和低8位。
作计数器用时,加法计数器对芯片引脚T0(P3.4)或T1(P3.5)
上的输入脉冲计数。每输入一个脉冲,加法计数器增加1。加法
计数溢出时可向CPU发出中断请求信号。
作定时器用时,加法计数器对内部机器周期脉冲Tcy计数。 由于机器周期是定值,所以对Tcy的计数就是定时,如Tcy=1 μs,计数值100,相当于定时100 μs。 加法计数器的初值可以由程序设定,设置的初值不同,计 数值或定时时间就不同。在定时器/计数器的工作过程中,加 法计数器的内容可用程序读回CPU。
≥1 S TH1 (8 位 ) TF 1
1
图 2 .1 6 定 时 器 / 计 数 器 方 式 3 的 逻 辑 结 构
图2.16 定时器/计数器方式3的逻辑结构
ELSE:
;此处可写定时1分钟到后的处理程序
AJMP REPEAT ORG 001BH SETB F0 RETI ;定时器/计数器T1的中断服务程序入口地址 ;建立定时1分钟到的用户标志
用定时器控制信号灯
问题的提出 ① “MOV TMOD,#01H”指令是将01H送 给寄存器TMOD,为什么是01H?
MCS51的片内接口及定时器计数器
参考程序如下:
ORG 0000H LJMP MAIN
ORG 0100H MAIN:
MOV TMOD,#09H MOV TH0,#00H MOV TL0,#00H BACK1: JB P3.2,BACK1 SETB TR0
BACK2: JNB P3.2,BACK2
BACK3: JB P3.2,BACK3 CLR TR0 MOV 70H,TL0 MOV 71H,TH0 SJMP $
P1=~K;} Return; }
5.2 MCS-51定时/计数器及其应用
51系列内部有2个16位的定时/计数器T0、T1
52系列内部有3个16位的定时/计数器T0、T1、T2
功能:
定时 计数
可编程 串行口的波特率发生器
定时/计数器的可编程特性:
⑴ 确定其工作方式是定时还是计数
⑵ 预置定时或计数初值
回目录 上页 下页
计数初值X的计算方法: 计数方式:
N= 2n-X(X即为要求计数的次数)
定时方式: (2n - X)×T = 定时值
∴ X = 2n -定时值 / T 其中T为机器周期,时钟的12分频, 若晶振为6MHz,则T = 2µs, 若晶振为12MHz,则T = 1µs
回目录 上页 下页
BACK:
MOV A,P0 ;读P0口开关状态,并送入累加器A
CPL A
;对累加器A求反
MOV P1,A
;从P1口输出
SJMP BACK ;循环执行
C51参考程序如下: Sfr P0=0x80; Sfr P1=0x90; Void main(){ Volatile unsigned char k; P0=0xff; P1=0; While(1) { K=P0;
定时计数器及其应用
80C51定时/计数初值计算公式:
其中: N与工作方式有关: 方式0时,N=13; 方式1时,N=16; 方式2、3时,N=8。
机周时间与主振频率有关:机周时间=12/fosc fosc=12MHZ时,1机周=1S; fosc=6MHZ 时,1机周=2S。
【例】 已知晶振6MHz,要求定时0.5ms,试分别 求出T0工作于方式0、方式1、方式2、方式3时的 定时初值。
M1M0=10, C/T =0, GATE=0 所以: TMOD=10H
(3)程序清单: ORG 0000H AJMP MAIN ORG 001BH AJMP TIMER1 ORG 1000H
MAIN: MOV TMOD,#10H MOV TH1,#0FFH MOV TL1, #A1H SETB EA
因此, 定时器/计数器是一种可编程部件。
编程:在定时器/计数器开始工作之前,CPU必须将一些命令 (称为控制字)写入定时器/计数器,决定T0、T1的工作方 式。
将控制字写入定时器/计数器的过程叫定时器/计数 器的初始化。
初始化内容: 规定T0、T1的工作方式; 将工作方式控制字写入方式寄存器 规定T0、T1的工作状态; 将工作状态控制字写入控制寄存器 赋定时/计数初值。
M——计数器的模值; T0——定时器需要预置的初值。 若设初值T0=0,则定时器定时时间为最大。若设单片机系 统主频为12MHz,则各种工作方式定时器的最大定时时间为: 工作方式0: Tmax=213×1s=8.192ms 工作方式1: Tmax=216×1s=65.536ms 工作方式2和3:Tmax=28×1s=0.256ms
定时器计数器的功能:定时和计数。 1.计数功能
计数:对外部事件进行计数。 外部事件的发生以输入脉冲表示,因此计数功能的实质 就是对外来脉冲进行计数。 计数输入端:T0(P3.4)和T1(P3.5)。 外部输入的脉冲在负跳变时有效,进行计数器加1(加法 计数)。
第4章 定时计数器
流程图
主程序:
开始 设置堆栈地址
设置TMOD方式
中断程序:
中断入口地址
重装初值
N
送定时初值
开T0中断 启动T0 计数单元赋值(20H,21H) 等待 N
(20H)-1=0? Y 20H单元赋值20 (21H)-1=0? Y 21H单元赋值60 P1.0取反 中断返回
主 程 序
程序清单 ORG 4000H LJMP MAIN ORG 401BH LJMP SER MAIN:MOV SP,#50H MOV TMOD,#10H MOV TH1,#3CH MOV TL1,#0B0H SETB EA SETB ET1 SETB TR1 MOV 20H,#20 MOV 21H,#60 HERE:SJMP $
4)工作方式3
如果定时/计数器0工作于工作方式3,那么定时/计数器1的 工作方式就因为自己的一些控制位已被定时/计数器0借用, 只能工作在方式0、方式1或方式2下,等效电路参见下图:
怎样编制计数程序?
首先必须对定时计数器进行初始化,然后再开启定时或 计数。简单的总结一下,定时计数器的初始化包括以下内 容。 (1)确定工作方式——对TMOD赋值; 如:任务中的MOV TMOD,#06H指令,设定T0为计数 器工 作方式。 (2)预置定时计数器中计数的初值—直接写入TH和TL; 如:任务中的MOV TH0,#00H 两条指令,设定计数初 值。
T1由TH1、TL1 构成,字节地址 为8DH、8BH
T0由TH0、TL0 构成,字节地址 为8CH、8AH
TCON则用于控制定时计 特殊功能寄 数器T0和T1的启动和停止 存器TMOD 计数,同时管理定时器T0 控制定时计 和T1的溢出标志等。 数器的工作 MCS-51单片机定时器/计数器逻辑结构图 方式
MCS51单片机中的定时器
7
1.3
定时器/计数器的功能
定时器/计数器具有定时和计数两种功能,应用范围如下。 1. 定时与延时控制方面 可产生定时中断信号,以设计出各种不同频率的信号源; 产生定时扫描信号,对键盘进行扫描以获得控制信号,对 显示器进行扫描以不间断地显示数据。 2. 测量外部脉冲方面 对外部脉冲信号进行计数可测量脉冲信号的宽度、周期, 也可实现自动计数。 3. 监控系统工作方面 对系统进行定时扫描,当系统工作异常时,使系统自动复 位,重新启动以恢复正常工作。
振荡器 12 分频
TC/ =0 C/T TC/ =1 C/T
&
TH0 (8 位)
TL0 (5 位)
TF0
中断
T0(P3.4) TR0 GATE INT0(P3.2)
1
≥1
定时器/计数器0方式0逻辑结构
17
3.1 定时器/计数器的初始化
【例1】 用定时器0方式0,定时5ms,以中断方式工作,进行 程序初始化设计,晶振频率为6MHz。 解:用定时器0方式0时,定时器/计数器方式寄存器TMOD低4 位中的M1M0应取00;可设定为软件启动定时器,故 GATE取0;因用定时功能,C/T取0;定时器方式寄存器 TMOD高4位为无关位,一般都取0,所以TMOD应为00H。 晶振频率为6MHz,T机=12/fosc=12/(6106)=2s 定时初值X=213-T/T机=213-51000/2=8192-2500=5692 =163CH=1011000111100B 因TL0的高3位未用,对计算出的定时初值X要进行修正, 即在低5位前插入3个0,修正后的定时初值 X=1011000100011100B=B11CH
005DH
0060H 0062H 0065H 0068H
第4章 2_MCS-51的定时计数器
4.2.4 定时/计数器程序设计举例
图4.9
50Hz方波示意图
4.2.4 定时/计数器程序设计举例
【解题步骤】 (1) 确定定时器初值N: 由于晶振为12 MHz,所以1个机器周期。所以: 计数值 M t / Tcy 10 103 /1106 10000
即应将D8H送入TH0中,F0H送入TL0中 (2) 求T0的方式控制字TMOD: GATE=0,C/=0,M1M0=01可取方式控制字为 TMOD=01H,即T0的方式1;
4.2.3 定时/计数器的工作方式
计数个数M与计数初值N的关系为M=28-N。 用于定时功能时,定时时间t的计算公式为 t=M×机器周期=(28-N )×机器周期 若晶振频率为12MHz,机器周期=1,初值N=0~255范 围时,则可定时范围为1~256。 用于计数功能时,初值N=0~255范围时,计数范围为 1~256。 由于工作方式2省去了重装常数的程序,特别适合于用 作波特率发生器。
4.2 MCS-51的定时/计数器
在工业检测、控制中,许多场合都要用到计数或定时 功能。例如,对某个外部事件进行计数、定时巡回检 测物理参数、按一定的时间间隔进行现场控制等。 单片机片内集成有两个16位可编程的定时/计数器: T0和T1,通过对它们的特殊功能寄存器(SFR)的编程, 可以用作定时或计数器,此外,T1还可以用作为串行 口的波特率发生器。
2. 控制寄存器TCON (88H) TCON的低4位用于控制外部中断,TCON的高4位 用于控制定时/计数器的启动和中断申请。其格式如 下:
D7 TF1 D6 TR1 D5 TF0 D4 TR0 88H D3 D2 D1 D0 字节地址
位 TCON
位地址
MCS-51定时计数器的应用.
方案选择: (1)怎样实现较长时间的定时?
上一个实验已经讨论了单片机定时器的最大时间间 隔,采用定时器与计数器相结合的方法解决了较长时 间定时的问题
这里还可用另一种方法解决:用T1作定时器,用软件 对定时时间到计数,这样可节省一个定时器作其它用
如果设T1为定时方式0,定时间隔选为10ms,那么要想 达到2秒的定时,软件计数的次数应该是200次。
第四章 MCS-51定时/计数器的应用 定时/计数器是单片机应用中的重要部件,
其工作方式的灵活应用对提高编程技巧, 减轻CPU的负担和简化外围电路有很大益 处。本章通过两个实验说明定时/计数器的 基本用法,通过应用实例,使读者掌握定 时/计数器的软件设计技巧。
1
一、定时/计数器的基本用法
【实验1】利用T0定时,T1计数 二者复合的方法,实现较长 时间的定时间隔。 实验要求:如图所示,在 P1.7 端 接 有 一 个 发 光 二 极 管 , 要 利 用 定 时 控 制 使 LED 亮一秒停一秒,周而复始。
注意:T0与T1都是加1计数器,所以初值应按补码 计算。实际计算方法是:假定初值为X,若定时间隔 100ms,应该有
(216-X) ·2μ S=100ms ∴x=15536=3CB0H 3CH装入TH0,B0H装入TL0 T1 计 数 器 在 方 式 2 下 是 8 位 的 , 计 数 5 次 的 初 值 的 是 (256-5)=251=FBH,同时装入TH1与TL1。
=216·2μ S=131.07ms 3
而实验要求定时间隔为1秒,这三种方式都不能 满足。对于较长的定时间隔应采取复合的办法。 例如,可将T0设成定时间隔为100ms(只能用方式1), 当定时时间到,将P1.0的输出反相,再加到T1端作 计数脉冲,需要定时两次才构成一个完整的计数脉 冲,因此设T1计数5次,就能完成1秒的定时:
MCS_51定时器_计数器在出租车计价器中的应用
现代测量与实验室管理2005年第1期 文章编号:1005-3387(2005)01-0024-25MCS -51定时器/计数器在出租车计价器中的应用曾若渊(北京中计新艺电子技术有限公司,北京 100013)摘 要:本文对定时器/计数器的原理及应用方法进行了探讨,介绍了计价器利用这一特性实现计价器的计时收费。
关键词:定时器/计数器;计价器;重车中图分类号:TH71418 文献标识码:A 在单片机的应用中,经常会遇到计时或测速等问题。
例如,对汽车计时、测速,充当汽车“黑盒子”的设备,以检测发生事故原因及记录当时车速。
本文通过对计价器计时收费程序的分析,描述MCS -51单片机定时器/计数器的原理和实现方法。
1 计价器的工作原理通常计价器采用MCS -51芯片,在EEPROM中预先已写入了有关程序和数据的信息,如基本距离、续程距离、候时时间的规定值,与收费标准规定相应的收费价格值,不同出租条件下收费的变化比率,附加车费值计费方式等数据和与收费办法相应的车费计算与控制程序等,并且在计价器安装前已根据不同车型选定好K 值。
计价器的原理结构如图1所示。
在工作过程中其主要的功能都是由MCS -51芯片中的定时器/计数器来实现。
2 定时器/计数器的基本原理作为基本组成内容,MCS -51单片机共有两个可编程的定时器/计数器,分别称定时器/计数器0和定时器/计数器1。
它们都是十六位加法计数结构,分别由TH0和TL0及TH1和TL1两个8位计数器组成。
211 计数功能所谓计数是指对外部事件进行计数。
外部事件的发生以输入脉冲表示,因此计数功能的实质就是对外来脉冲进行计数。
MCS -51芯片有T0(P3.4)和T1(P3.5)两个信号引脚,分别是这两个计数器的计数输入端。
外部输入的脉冲在负跳变时有效,进行计数器加1(加法计数)。
212 定时功能定时功能也是通过计数器的计数来实现的,不过这时的计数脉冲来自单片机的内部,既每个机器周期产生一个计数脉冲。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1)方式控制字送TMOD • • • • MOV MOV MOV TMOD,#—— 2)计数器的初值送TH、TL(0/1) TH0,#—— TL0,#——
3)根据需要开放中断和设定优先级 即对IE和IP赋初值。 SETB TR0/1
4) 启动T0/T1开始工作---置位TR0/1
方式2的控制运行与方式0、方式1相同。
用于定时工作方式时,定时时间t为:t=(28—计数初值X)×机器周期
方式2用于计数工作方式时,最大计数值(初值=0时)是28。方式2特别适合 于用作较精确的定时和脉冲信号发生器。还常用作串行口波特率发生器 。
第四章
1-----10
第二节 定时/计数器的控制与工作方式
MOV
MOV SETB
TL0,#156
IE,#10000010B ;开放T0、 CPU中断 TR0 ;启动T0工作
第三节 定时/计数器的应用
二、定时/计数器计数应用举例
第四章
1-----17
在应用定时/计数器时,溢出标志TFx置位后既可由硬件向CPU申请 中断,也可通过用户程序查询TFx的状态,因此对计数溢出信息的处理 有以下两种方法。
第四章
1---18
注意问题:
1)方式0、1、3溢出后要重装初值, 方式2可自动重装初值。 2)方式 0时TH为8位,TL为5位。
采用中断方式时的一般编程模式: ORG 0000H SJMP MAIN ORG 000BH (001BH) LJMP T0S ORG 0030H MAIN: MOV TMOD,#—— MOV TH0,#—— MOV TL0,#—— SETB ET0; SETB EA; ------------------;置其他初值 SETB TR0; SJMP $ T0S: ------------- ; 重装初值 -------------- ;处理程序 RETI
第四章
1-----6
第二节 定时/计数器的控制与工作方式
2、定时器控制寄存器TCON 1) TF1 定时器1溢出标志 2) TR1 定时器1运行控制位 3) TF0 定时器0溢出标志 4) TR0 定时器0运行控制位 5) IE1 外部中断1请求标志 6) IT1 外中断1触发方式选择位 7) IE0 外部中断0请求标志 8) IT0 外部断0触发方式选择位。 应用时可通过中断和查询的方式获得 溢出信息-----TF0=1/0 例:启动T0工作,用指令
12
T1初始化程序段如下: MOV MOV MOV SETB SETB SETB ┋ TMOD,#10H TH1,#9EH TL1,#58H ET1 EA TR1 ;开放T1中断 ;开放CPU中断 ;启动T1工作 ;写入工作方式字 ;写入计数初值
第四章
1---16
第三节 定时/计数器的应用
例4-2: 要求利用定时/计数器T0对T0引脚(P3.4)出现的脉冲计数,每 计数100个脉冲向CPU申请中断,设由由软件启动。编写初始化程序段。 解 : 1 ) 经 分 析 , 可 设 定 时 器 T0 工 作 于 方 式 2 计 数 , 方 式 控 制 字 为 00000110B=06H 2)要求的计数值N=100,则计数初值为 28-100=156 初始化程序段如下: MOV MOV TMOD,#06H TH0,#156 ;写入工作方式字 ;写入计数初值
4.方式3 方式3只适用于定时器T0。在方式3下,T0被分成两个相互独立的8位 计数器TL0和TH0,如图所示 。 1)TH0和TL0变成2个分开的计数器。 2)TL0占用了全部的定时器控制位。 (C/T,GATE,TR0,TF0) 3)TH0只能用于定时方式,运行控 制位和溢出标志位则借用定时器1的 TR1和TF1。此时的定时器1用于串行 口波特率发生器。 在T0设置为方式3工作时,一般是将 定时器T1作为串行口波特率发生器, 或用于不需要中断的场合。
中断法:在定时器初始化时要开放对应的源允许(ET0或ET1)和总允许, 在启动后等待中断。当计数器溢出中断,CPU将程序转到中断服务程序 入口,因此应在中断服务程序中安排相应的处理程序。 查询法:既在定时器初始化并启动后,在程序中安排指令查询TFx的状 态。
LP:JBCTF0,NEXT;TF0为1,转后面的处理程序,并将TF0复位
SJMP NEXT:┋ LP ;TF0为0,继续查询
第三节 定时/计数器的应用
采用查询方式时的一般编程模式: ORG 0030H MAIN: MOV TMOD,#—— MOV TH0,#—— MOV TL0,#—— -------------SETB TR0 WAIT: JBC TF0,NEXT; SJMP WAIT; NEXT:MOV TH0,#——;重装 MOV TL0,#—— ;初值 - --------- ;处理程序 SLMP WAIT
应用编程
并行I/O口
串行I/O口
中断系统
P0 P1 P2 P3
TXD RXD
INT0 INT1
图2—1 MCS—51单片机的功能模块框图
第四章 1----2
第一节 定时/计数器的结构与工作原理
一、定时/计数器的逻辑结构
定时/计数器的结构如图所示。16位的定时器/计数器 分别由两个8位专用寄存器组成:定时器T0由TH0和TL0构成; 定时器T1由THl和TL1构成。其内部还有2个8位的专用寄存 器TMOD和TCON。其中TMOD是定时器的工作方式寄存器, TCON是控制寄存器,主要用于定时/计数器管理与控制。
第四章
1---3
第一节 定时/计数器的结构与工作原理
二、定时/计数器的工作原理
它的核心部件是加1计数器,其输入的计数脉冲有两个来源。当加到计数 器为全“1”时,再输入一个脉冲,就使计数器回零,同时产生溢出脉冲 使TCON中溢出中断标志TF0或TF1置1,并可向CPU申请中断。 1.当设置为定时工作方式时,对机器周期TM计数。这时计数器的计数脉冲 由振荡器的12分频信号产生,即每经过一个机器周期,计数值加1,直至 计满溢出。在机器周期固定的情况下,定时时间的长短与计数器事先装入 的初值有关,装入的初值越大,定时越短。 2.当设置为计数工作方 式时,通过引脚T0(P3.4) 和T1(P3.5)对外部脉冲信 号计数。当T0或T1脚上输 人的脉冲信号出现由1到0 的负跳变时,计数器值加 1。
SETB TR0 注意:复位后TMOD、TCON各位均清零。
第四章
1-----7
第二节 定时/计数器的控制与工作方式
二、定时/计数器的工作方式
通过控制TMOD中的M1,M0位选择定时器4种工作方式。这4种工作方式 的实质是对T0(或T1)的两个8位计数器TH0、TL0(或TH1、TL1)的计 数操作方式而言。 1.方式0
第四章
1---12
方式0:M=13,计数器的最大计数值213=8192。方式1:M=16,计数 器的最大计数值216=65536;方式2:M=8,计数器的最大计数值28= f t 256;方式3同方式2。 2
M osc
12
例如,设T0工作在计数器方式2,求计数10个脉冲的计数初值, TC=28 -10=246=(11110101)B=0F5H 2)定时器模式时的计数初值
第三节 定时/计数器的应用
1.定时/计数器定时模式的应用
D7
TMOD
GATE
D6
C/
D5
M1
D4
M0
D3
GATE
D2
C/
D1
M1
D0
M0
控 制 T1
控 制 T0
第四章
1---5
第二节 定时/计数器的控制与工作方式
1)用于设置定时/计数器的工作方式 (0~3); M1 M0 2)选择定时/计数——C/T* ; C/T=0---定时,C/T=1---计数 3)启动控制方式选择---内/外; GATE:门控位,启动方式设定 GATE=0--允许软件位TR0或TR1启动; GATE = 1-- 允 许 外 部 引 脚 信 号 INT0/INT1启动。
方式2:M=8,定时器的最大定时值为28*机器周期=256µ S;方式3同方式 2。
例如,若fOSC=6MHz,定时时间为10ms,使用定时器T0工作于方式1,
16 TC0= 2
6000000 0.01 = 60536=0EC78H 12
第四章
1---14
1计数器为13位TL0=5位,TH0=8位 (2)(GATE+INT1)•TR1为真启动定时器。 (3)C/T=1为计数工作方式,计数脉冲由T1引 脚输入。计数个数 N=( 213—初值) (4) C/T=0为定时工作方式,时钟频率为
fosc/12。 定时时间t=(213—初值)*时钟周期*12
(5)计数器溢出,TF1置1。由硬件申请中
断。能否被CPU响应?
第四章
1---8
第二节 定时/计数器的控制与工作方式
2.方式1
定时/计数器工作于方式1时为一个16位的计数器。其逻辑结构、操作及 运行控制几乎与方式0完全—样,差别仅在于计数器的位数不同。在方 式1中TL0和TH0均为8位,TL0和TH0一起构成了l6位计数据。
定时工作方式1时,定时时间为:
定时时间=(216-计数初值TC)×机器周期 用于计数器工作方式时, 最大计数值为216=65536。
第四章
1-----9
第二节 定时/计数器的控制与工作方式
3. 方式2 定时/计数器工作于方式2时,将两 个8位计数器THx、TLx分成独立的 两部分,组成一个可自动重装载的 8位定时/计数器。其逻辑结构如图 所示。
第四章
1---4
第二节 定时/计数器的控制与工作方式
问题 1、定时/计数如何设定? 2、定时/计数器如何启动? 3、定时/计数的值如何设定?