您的位置 首页 新品

51单片机系列连载6—定时器初始化弥补

在上一节中提到定时器很重要,而对于定时器来说,就是简单的一个初始化,只要把这个弄明白了,后面的编程操作也就水到渠成了,今天再简单地

在上一节中说到守时器很重要,而关于守时器来说,便是简略的一个初始化,只要把这个弄理解了,后边的编程操作也就瓜熟蒂落了,今日再简略地对守时器初始化做个弥补。

首要,再说一下T/C(守时器/计数器)的根本结构,它们根本部件是2个8位的计数器,其间TH1和TL1是T1的计数器,TH0和TL0是T0的计数器,记住这两个计数器,后边的操作都是环绕这两个打开的,要有这种认识。

在作为守时器运用时,是对单片机内部机器周期的计数,因其内部频率为晶振频率的1/12,假如晶振频率为12MHz,则守时器每承受一个输入脉冲的时刻为1us,后边许多守时都用到这个根本常识。

当它用刁难外部事情计数时,接相应的外部引脚T0(P3.4)或T1(P3.5)。在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1。

再强化一下初始化的过程:

在运用T/C前,要对它进行初始化编程,主要是对TCON和TMOD编程,还需求核算很装载T/C的计数初值。包含以下几点:

1、确认T/C的作业方法——编程TMOD寄存器;

2、核算T/C的计数初值,并装载到TH和TL;

3、T/C在中止方法作业时,需求cpu中止和源中止——编程IE寄存器;

4、发动T/C——编程TCON中的TR1或TR0位。

接下来,要点讲一下计数初值的核算。

首要,计数器初值的核算。一般方法一与方法二是最常见的,在方法1中,16位计数器的最大计数值为216=65536,计数初值在寄存器中为TH=X/256,TL=X%6;在方法二中,8位计数器的最大计数值为28=256,计数初值在寄存器中为TH=TL=X。

其次,守时器初值的核算。这时,T/C是对机器周期脉冲计数的,前面说到,若晶振频率为12MHz,则机器周期是1us,后边的与计数器的相同,仅仅这儿的最大计数值是最大守时刻隔。

t=(2n-X)*T,其间,t为守时时刻,X为计数初值,T为机器周期。

看一个实例,单片机外接晶振频率为12MHz,T/C0作业于守时方法,且答应中止,守时时刻为20ms,令其作业在方法1.用C言语进行初始化编程。

T/C0作业于守时方法,然后C/T=0,GATE=0.守时器0作业于方法1,,所以M1M0=01.守时器1不必,TMOD=00000001=01H.计数寄存器初值分别为:TH0=(65536-20000)/256,TL0=(65536-20000)%6,因而初始化程序如下:

TMOD=0X01;//设置守时器作业方法

TH0=(65536-20000)/256;//加1计数器高8位TH0赋初值

TL0=(65536-20000)%6;//加1计数器低8位TL0赋初值

TR0=1;//发动计数器

ET0=1;//开计数器中止

EA=1;

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/257450.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部