-
使用
T2
定时器实现
1
秒精确定时
使用
T2
定时器实现
1
秒精确定时
p>
2009-10-02 16:22[
小雨的成长
< br>]
中断精确定时
1S
作者
小
雨
日期
2009-4-17 8:12
:00
这一课,我们将告诉大家如何精确定时
1S
。要精确定时,就需
要用到中断方式,并工作在自动重装载方式。这里我们用
到了
T2
定时器,它具有
16
位的
自动重装载功能。
我们知道,
T0,T1
的自动重装载功能都是
8
位的,
用它们将会带来很大的
误差。
< br>T2
定时器,它有一个专门的自动重装载寄存器,当计数满了以后,它将我们预置
进
去的数自动的载入
TH2,TL2
这
样就都很好的保证精确定时。
我们用的是
12MHZ
的晶振。就算是计满也只有几十毫秒。要定时一秒,就需要一个变量来<
/p>
保存溢出的次数,积累到了多少次之后,才执行一次操作。这样就可以累加到
1
秒或者更
长的时间才做一次操作了。
T2
寄存器还有一个和其他寄存器不一样的地方,
就是它的中断标志位
TF2
要软件清零。
现在我们来计算一下,
要精确定时,
那么,
进去中断的次数是越少越好,
这样,
< br>数据更精确,
还能很好的防止对主函数的影响。
T2
定时器预装载值的计算:
设晶振为
12MHz
,每秒钟可以执行
1000000
(
12000000/12<
/p>
)个机器周期。而
T2
每次溢
出时最多经过了
65536
个机器周期。我们应该
尽量让
T2
定时器的溢出中断的次数最少。
选择每秒中断
14
次,
每次溢出
1000000/14=71428.57
个机器周期,
不为整数且超出
65536
< br>。
选择每秒中断
16
次,每次溢出
1000000/16=62500
个机器周期,小于
65536
,有效。
选择每秒中断
20
次,每次溢出<
/p>
1000000/20=50000
个机器周期,小于
65536
,有效。
其
他的就不再算了,
我们通过上面的计算,我们可以发现,我们可以选择的方式有很多,但
是最佳的是每秒中断
16
次,每次溢出
62500
个机器周期。
下面看程序:
#
i nclude
#define uchar unsigned char
#define uint unsigned int
sbit Led=P0^0;
//
定义
LED
位
void Timer2() interrupt 5
//
调用定时器
2,
自动重装载模式
{
static uchar
i=0;
//
定义静态变量
i
TF2=0;
//
定时器
2
的中断标志要软件清
0
i++;
//
计数标志自加
1
if(i==16)
//
判断是否到
1s
{
i=0;
//
将静态变量清
0
Led=~Led;
//LED
位求反
}
}
void main()
{
RCAP2H=(65536-62500)/256;
//
重装载计数器赋初值
RCAP2L=(65536-62500)%256;
ET2=1;
//
开定时器
2
中断
EA=1;
//
开总中断
TR2=1;
//
开启定时器,并设置为自动重装载模式
while(1);
}
这里我们看到我们在中断中用到了
static uchar
i
=
0;
定义
i
为静态函数。静态函数的特点:
函数值在调用结束后不消失保
留原值,
即其占用的存储单元不释放。
在下一次该函数调用时,
该变量已有值,就是上一次的函数调用结束时的值。它只赋一次初值。
< br>
也就是说,只有在第一次进入中断时
static
uchar i
=
0;
才对
i
赋初值,在以后进入中断执行
这句时,不会对<
/p>
i
赋值。
这里
重点给大家讲讲我们开发板上
STC
单片机的
< br>T2
定时器的用法。
定时器
2
是一个
16
位定时
/
计数器。
< br>通过设置特殊功能寄存器
T2CON
中的
C/T2
位,
< br>可
将其作为定时器或计数器(特殊功能寄存器
T2CON
的描述如表
1
所列)。定时器
2
有
3
种操作模式:
< br>捕获、
自动重新装载
(递增或递减计数)
和波特率发生器,
这
3
种模式由
T2CON
中的位进行选择。
这里我只将和我们递增计数自动重装载功能有关的几个寄存器,关于
T2
的其他功能,大家
可以参看官方的一些资料。
TF2
定时器
2
溢出标志。
定时器
2
溢出时置位,
必须由软件清除。
当
RCLK
或
TCLK=1
时,
TF2
将不会置位。
TR2
定时器
2
启动
/
停止控制位。置
1
时启动定时器。
C/T2
定时器
/
计数器选择。(定时器
p>
2
)
0=
内部定时器(
OSC/12 <
/p>
或
OSC/6
)
1=
外部事件计数器(下降沿触发)
CP/RL2
捕获
/
重装标志。
置位:
EXEN2=1
< br>时,
T2EX
的负跳变产生捕获。
清
零:
EXEN2=0
时,
定时器
2
溢出或
T2EX
的负跳变都可使定时
器自动重装。
当
RCLK=1
或
TCLK=1
时,
该位无效且定时器强制为溢出时自动重装。
RCAP2H,RCAP2L
是定时器
T2
一个专门存放预置数的寄存器。定时器
2
递增计数到
0FFFFH
,并在溢出后将
TF2
置位,然后将
RCAP2L
和
RCAP2H
中的
16
位值作为重新
装载值装入定时器
2
。
RC
AP2L
和
RCAP2H
的值是通过软件预设的。
p>
从表一,
表二可以看到,
因为我们复位后<
/p>
T2CON
是全
0
。
所以,
只要我们设制好预置数,
开
好中断,再将
TR2
置为
1,
就能启动
T2
的递增计数自动重载功能了。
p>
下面汇编程序是由严复平会员写,非常感谢!!
;********************************************
**********************************
;51
汇编
定时器
T2
精确
1s
定时程序
;
功能:使用<
/p>
T2
定时器实现
1
秒精确定时并闪灯
;
晶振:
12MHz
;
芯片:
AT89S52
;
作者:
Jurassic_K.M
;
日期:
2009
年
2
月
24
日
;************************
**************************************************
****
;keil
默认情况下只能认识标准的
8051
的寄存器,
T2
不
再此列,需要手动加入寄存器定义
T2CON
EQU
0C8H T2
控制寄存器
,
用以程控定时器
2
p>
和外部中断操作格式
; T2CON.7
TF2
溢出中断标志位
; T2CON.6
EXF2
外部中断标志位
; T2CON.5
RCLK
串行接口接受时钟标志位
; T2CON.4
TCLK
串行接口发送时钟标志位
; T2CON.3
EXEN2
外部允许控制位
; T2CON.2
TR2
运行控制为
; T2CON.1
C/T2
定时器
/
计数器功能选择位
; T2CON.0
CP/RL2
捕捉
/
重装载标志位
T2MOD EQU
0C9H T2
控制寄存器
,
用以定时器
2
在装入计数方式选择
; T2MOD.0
DCEN
向下计数允许位
; T2MOD.1
T2OE
T2
输出允许位
TL2
EQU
0CCH
; T2
计数寄存器低字节
TH2
EQU
0CDH
;
T2
计数寄存器高字节
TR2
EQU
0C8H.2 T2
启动位
RCAP2L EQU
0CAH
; T2
计数重栽陷阱寄存器低字节
RCAP2H EQU
0CBH T2
计数重栽陷阱寄存器高字节
TF2
EQU
0C8H.7
定时计数器
2
计满回零溢出中断请求标志位
ET2
EQU
IE.5
;
定时器
T2
中断允许
;PT2
EQU
IP.
;
定时器
T2
的中断
优先级控制位,不过我不确定这个具体是那一位,
;
因此空了下来,有知道的朋友请告诉我一声
org
0000h
sjmp main
org 002bh
sjmp timer2_isr
org
0033h
main:
clr p1.7
mov r0,#16
mov rcap2h,#0bh
mov rcap2l,#0dch
;mov
th2,#0bh
;
;mov
tl2,#0dch
这两句可要可不要
setb ea
setb et2
mov
t2con,#04h
设置
t2
定
时器的工作模式为
16
位自动重装载定时器方式
sjmp $$
timer2_isr:
clr tf2
;
定时器
t2
不同与定时器
t0
和
t1
,它需要软件清零
djnz r0,next
cpl p1.7
mov
r0,#16
每次退出前,对软件计数器重装初值
next: nop
nop
reti
end
------------------------------
高准确度时钟程序算法
2009-09-27 21:09
p>
作者:
广州增城市电力局
(
511300
)
黄沛芳
来
源:《电子技术应用》
摘要:通过对引起实时时钟计时误差因数的分析,给
出了一种提高实时时钟长期计时准
确度的实用而有效的软件方法。该方法具有成本低、易
实现、通用性强、彻底校正等优点。
关键词:实时时钟
准确度
定时器
软件校正
电子计时器通常以石英晶振为时钟源。时钟源的频率通常为几十
kHz
乃至几十
MHz
,
而学
用时钟的最小计单位一般在
0.01s
~
1s
。
高频的时钟源脉冲通过分频器后产生基本定时
脉冲。
电子计时器的计时部分就是对基本定时脉冲进行累加,
产生秒、
分、时等时间信息乃
至日、月、年等日期
信息。
-
-
-
-
-
-
-
-
-
上一篇:新概念英语第一册_19-33课1_练习题
下一篇:职业生涯规划作业和霍兰德职业分析