您的位置 首页 FPGA

单片机中关于守时中止1和3

一、定时器的结构以及工作原理MCS-51单片机内部有两个16位可编程定时器计数器,即定时器T0和定时器T1。他们既可以用作定时器的方式,又可

一、守时器的结构以及作业原理

MCS-51单片机内部有两个16位可编程守时器/计数器,即守时器T0和守时器T1。他们既能够用作守时器的办法,又能够用作计数器的办法,共4种不同的作业办法

寄存器TMOD用于操控T0和T1的作业办法,可经过编程设置TMOD来决议作业办法。

CATE C/T M1 M0 GATE C/T M1 M0

M1M0为作业办法操控位,咱们常用作业办法1,若要设置T0以“办法1”作业,可运用TMOD=0X01;来设置。

守时/计数器的中心是16位加法计数器,T0的加法计数器由两个8位寄存器TH0,TL0构成,TH0表明加法计数器的高八位。TL0表明加法计数器的低八位,TH1、TL1则表明守时/计数器T1的假发计数器的高八位和低八位。

当16位加法计数器的输入端每输入一个脉冲,16位加法计数器的值主动加1,当计数器的计数值超越加法计数器字长所能表明的规模而溢出时,CPU请求中止,若答应中止,则CPU停下当时履行的程序,转去履行中止程序,中止程序履行完后,持续履行本来的程序。

二、守时器运用的一般过程

1、设置作业办法TMOD=0X01;

2、核算初值,而且将初值装入TL0、TH0

TH0=(65535-50000)/256;TL0=(65535-50000)%6;

3、设置EA=1;开总中止答应开关

4、设置ET0=1,开守时器0中止答应

5、设置TR0=1,发动守时

6、编写中止程序

三、初值的核算

在作业办法1的前提下,计数的规模从0到65535,经过六万屡次的计数后,才会发生溢出。可咱们在实践运用的时分,常常不需要那么多的计数,那么该怎么办呢?

单片机的16位计数器,就像一只空的水桶,向其间滴65535滴水后,就会发生溢出,假如咱们期望在滴100滴水后,就让它溢出,咱们能够一次性的相这只水桶中先放入65535-100即65435滴水,然后再一滴一滴地计数,这样,就达到了调用100滴水就溢出的意图了。

当守时器、计数器作业于守时状况的时分,对机器周期进行计数,若守时时刻为t,则对应的计时次数N=t/机器周期

例如:运用守时器0,在作业办法1下,操控发光二极管每50MS闪耀一次

#include

sbit D=P1^0;

void main()

{

TMOD=0X01;

TH0=(65535-50000)/256;

TL0=(65535-50000)%6;

EA=1;

ET0=1;

TR0=1;

while(1);

}

void T0_PRG interrupt 1

{

TH0=(65535-50000)/256;

TL0=(65535-50000)%6;

D=~D;

}

四、长计时

51单片机守时、计数器的最大计数容量是65535,换算成时刻,也就65ms左右。

在实践出产、日子中,守时的长度往往是秒级的,乃至是分钟、小时,以至于更长时刻,MCS-51 的守时、计数器最长守时只要65MS左右,这明显实用性不强,为了处理这个问题,一般有两种途径,即“硬件法”和“软件法”,“硬件法”是经过运用专用的芯片来完生长守时。而“软件法”只需要在程序里运用一些小技巧就能够,虽然这种办法完成守时的精度没有硬件办法高,但由于简略并不添加本钱,所以精度要求不很高的情况下,是十分合适的。

已然MCS-51的守时、计数器最长守时只要65ms左右,那么咱们就先让它守时50ms,在守时、计数器发生溢出时并不去履行咱们要做的动作,而是给一个变量加1,这样重复做守时,当变量值为20时,也就是说守时、计数器溢出20次的时分,才履行咱们要做的作业,50msX20=1000ms 即1秒。那么 2秒、10秒,更长的守时,只需要更改重复溢出的次数,就能够轻松处理。改善后的程序如下:

#include

sbit D=P1^0;

unsigned char n;

void main()

{

TMOD=0X01;

TH0=(65535-50000)/256;

TL0=(65535-50000)%6;

EA=1;

ET0=1;

TR0=1;

while(1);

}

void T0_PRG interrupt 1

{

TH0=(65535-50000)/256;

TL0=(65535-50000)%6;

n++;

if(n==20)

{

n=0;

D=~D;

}

}

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部