51单片机系列知识8--定时器、计数器(1)

几个相关的概念:

 

1、时钟与机器周期

时钟电路是计算机的心脏,它控制着计算机的工作节奏。时钟信号的频率称为振荡频率或时钟频率。振荡频率的倒数为振荡周期。

规定了每个机器周期包括6个状态周期(用s)表示,每个状态周期划分为两个节拍,分别对应着两个节拍时钟的有效期间。因此,一个机器周期有12个振荡周期,分别为S1P1、S1P2、S2P1…….S6P2

 

i. 与定时器、计数器有关的寄存器

方式寄存器TMOD

D7

GATE

D6

C/T

D5

M1

D4

M0

D3

GATE

D2

C/T

D1

M1

D0

M0

定时器方式和外部事件计数方式的差别是计数脉冲源和用途的不同,C/T的实质是选择计数脉冲源。

对外部输入脉冲计数的目的通常是为了测试脉冲的周期、频率或对输入的脉冲数进行累加。

△ 计算脉冲的周期、频率是否用到了输入捕捉方式?

GATE=1时。定时器的计数受外部引脚输入电平的控制。

GATE=0时,定时器的计数不受外部引脚输入电平的控制。

INTO控制T0的计数,INT1控制T1的计数。

控制寄存器TCON

D7

TF1

D6

TR1

D5

TF0

D4

TR0

D3

IE1

D2

IT1

D1

IE0

D0

IT0

特殊功能寄存器TCON的高4位为定时器的计数控制位和溢出标志位,低4位为外部中断的触发方式控制位和锁存外部中断请求源。

TR0:定时器T0的运行控制位。由软件置位和清“0”

GATE

TR0

INTO

T0的运行状态

0

1

X

允许T0计数

0

0

X

禁止T0计数

1

1

1

允许T0计数

1

1

1

1

0

0

0

1

0

禁止T0计数

△ 加入GATE=1时,引入INTO信号的目的是什么?

TF0:T0的溢出标志:TF0可由程序查询和清“0”。 TF0也是中断请求源,当CPU响应T0中断时由硬件清“0”TF0。

TR1、TF1类是TR0、TF0

T2的状态控制寄存器

D7

TF2

D6

EXF2

D5

RCLK

D4

TCLK

D3

EXEN2

D2

TR2

D1

C/T2

D0

CP/RL2

 

ii. 工作方式

51系列单片机定时器T0有四种工作方式:方式0、方式1、方式2、方式3

            定时器T1有三种工作方式:方式0、方式1、方式2

52系列单片机除拥定时器T0、T1外还有定时器T2

            定时器T2有三种工作方式:捕捉方式、常数自动再装入方式和串口的波特率发生器方式。

 

方式0:13位的定时器/计数器

如定时器T0,方式0为13位计数器,由TL0的低5位与TH0的8位组成,TL0低5计数溢出时向TH0进位,TH0计数溢出时置“1”溢出标志TF0。定时器T0方式0的结构框图见教材P115。

定时器初值计算公式:设计数初值为a,则T=12/fosc×(213-a)us

            

方式1:16位的定时器/计数器

基本类同方式0

 

方式2:常数自动重新装入的8位定时器/计数器

方式2为自动恢复初值的8位计数器。TL0作为8位计数器,TH0作为计数初值寄存器。当TL0计数溢出时,计数器完成两项工作。①置位“1”溢出标志TF0,向CPU请求中断②将TH0内容送TL0,使TL0从初值开始重新加1计数。

T0工作于方式2定时,有点:精度比较高;缺点:定时时间小

T=12/fosc×(28-a)

 

分析:T0工作于方式0和方式1时,定时产生误差的原因?

T0工作于方式0、方式1,初值a是由中断服务程序恢复,而CPU响应T0溢出中断的时间随程序状态的不同而不同。

(CPU执行指令不同或者在执行其他中断程序都影响响应时间)

CPU响应中断之前T0从0开始继续计数,CPU响应中断时又从初值开始计数,这样是定时产生误差。

 

△ 误差来源即是T0从0开始计数到T0再次从初值开始计数这之间少计的脉冲。

 

方式3:仅适用于T0,两个8位计数器

T1设为方式3时,停止计数。T0分为两个独立的8位计数器TL0和TH0.

TL0使用T0的所有状态控制位GATE、TR0、INT0(P3、2)、T0(P3、4)、TF0

TH0被固定为一个8位定时器方式,使用T1的窗台控制位TR1、TF1。

 

一般情况下,只有当T1用于串行口的波特率发生器时,T0才在需要时选工作方式3,一增加一个计数。

此时T1的运行由方式来控制,方式3停止计数,方式0~2允许计数,计数溢出时不置“1”标志TF1。定时器T1作为波特率发生器时,应禁止T1中断。T1工作于定时方式(C/T=0),计数脉冲为振荡器的十二分频信号。也可以选择外部T1(P3-5)上的输入脉冲作为T1计数信(C/T=1).T1的溢出率又和它的工作方式有关,一般选方式2定时。

 

△ 其实只能选择方式2作为计数器(定时方式)的工作方式,因为方式2是自动重装初值的方法。由于计数溢出时并不置位“1”标志TF1,CPU不响应中断,方式0、方式1重赋初值一般都放在中断服务程序中,所有计数器在溢出后总是从0开始计数,由此而得到波特率便不是我们所涉及要求的(为2SMOD×fosc/32×12×256)

T1的溢出率如何和波特率发生联系?


By:霜月孤鸟

2016.2.24

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
启动提示说明<br/>如何安装, 设定及使用光驱,同列出支援的硬体.<br/>如何在 Linux 的系统上使用中文?/TD> <br/>如何更加快速简便地调试刚安装好的Linux系统。<br/>如何成为一个称职的小型 DNS 管理者.<br/>防火墙和代理伺服器. <br/>如何安装GNUC编译器和程式库的方法<br/>如何在Linux系统上安装与使用第二版 GNU C Library<br/>详列了大部份被 Linux 所支援的硬件和驱动程序<br/>Linux系统上的各种业余无线电软件。<br/>包含了 Linux HOWTOs 与 mini-HOWTOs 的索引.<br/>Linux 作业系统的基本资讯<br/>从Unix、Netware、NT 以及 Windows 连接在一起。<br/>拨接 modem 连接到 ISP 网路服务接供业者的网路上。<br/>以及如何用 Java 来写 CGI 程式<br/>如何配置、编译、升级核心以及排难解纷的详细指引?/TD> <br/>一些有关使用Emacs 与 Ispell 工具的提示.<br/>一份有用资讯来源的列表<br/>针对 Linux 作业系统的网路能力提出一个概观的说明<br/>如何设定、维护在 Linux 系统下的 USENET News 伺服器<br/>如何安装及设定 Oracle 资料库伺服器之指南?/TD> <br/>安装及使用 PCMCIA 卡服务程式<br/>帮助你理解和使用 PnP 设备.<br/>如何把你的 Linux PC 连接到一台 PPP 伺服器上. <br/>如何使用 Red Hat 包装管理程式<br/>如何产生, 预览,打印及传真任何文件<br/>如何在 Linux 机器上设定串列通讯设备<br/>一种以 SGML 为基础,让你产生不同输出格式的工具.<br/>Session Message Block (SMB) protocol <br/>在Linux下的关於音效的支援. <br/>Linux上播放各式声音格式的应用程式.<br/>如何将 Linux 系统连接到不断电系统<br/>将现有产品改进并加入新价值的服务公司名单 <br/>Linux 上的 X Window System (X11R6), XFree86 3.3 版.<br/>。。。。。。。 <br/><br/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值