用C语言怎么在单片机AT89C51上编写一个延时10秒的程序

用C语言怎么在单片机AT89C51上编写一个延时10秒的程序,第1张

1、十秒对于单片机来说是很长很长的时间了,单片机十秒的时间什么事都不能做,只在跑这延时程序,那是什么概念,用中断的话,单片机正常运行其他程序,只是时间到了才过来处理延时以后的程序,效率不知道高了多少 。

2、例程:

//假设晶振12MHZ

#include "reg51h"

unsigned int YSJS=0;

void main(void)

{

    TMOD |= 0X10;                            //定时器1工作于方式1,16位定时器

    TH1 = 0XFF;                              //定时器1定时时间=500uS

    TL1 = 0X06;

    ET1 = 1;                                 //使能定时器1中断

    EA =1;                                   //开总中断

    while(1)

    {

    }

}

void TIMER1(void) interrupt 3                //定时器1中断函数使用默认寄存器组

{

    TH1 = 0XFF;                              //定时器1定时时间=500us

    TL1 = 0X06;

    YSJS++;

    if(YSJS==20000)                           //500uS20000=10000000us=10s

    {

    P1 = P1 ^ 0X01;                            //P10十秒钟翻转一次

    YSJS = 0

    }

}

编码程序的一种变式。

CPU在执行语句的时候也是需要耗时的,只是CPU运行速度太快,我们没办法看清楚,所以如果CPU执行语句越多,所需要的时间就越多,根据这个原理,就可以通过让CPU随便执行语句,起到延时的效果,这被称为“软件延时”,CPU执行一条指令耗时近似1us,就可以通过这种办法加上循环就可以实现延时效果。

程序在不同主频下延时不一样,但这里面一定是个比例关系。打个比方,你的代码是在主频为1GHz下的延时,这个参数你延时是5S。但换到2GHZ下,程序不改动的话,延时是25秒。

在汇编代码中获取到当前的主频,那么就可以做成自适应的效果,自动按比例改变延时程序内部的计数量。

若是高级语言,比如VS,就能用GetTickCount()来精确延时5s了。其实只要能读出当前时间的精确值,比如直接读BIOS时间,那么就能实现比较精确的5s延时了。不同的CPU在读精确时间的函数上是一样的。

IF STARTPV==1 THEN

zhufengjiPV=1;

a = a + 1;

if a>=5 then

7chuchenjiPV=1;

endif

if a >=10 then 6chuchenjiPV=1;endif

if a >=15 then 5chuchenjiPV=1;endif

ENDIF

实现延时启动,通过对电脑的开机项进行设置即可,一般不需要辅助的软件。

对开机项的 *** 作:

1、 设为开机启动:设置后启动项将在电脑启动时自动加载;

2、设为延迟启动:即在开机时不自动加载,而在电脑完全启动后对这些启动项进行加载,从而达到开机迅速,同时不影响使用的地步。适用于大多数启动项;

3、禁止开机启动:设置后启动项将不再开机自动加载;

4、 删除启动项:删除后的启动项将不能再进行恢复。

扩展资料:

电脑非正常延时启动的原因:

1、许多软件都会在安装的时候默认地添加启动项,甚至有一些恶劣一些的,会捆绑一些其他的软件,这些软件在您不知道的情况下就添加了启动项。电脑在开机的时候加载的启动项都是需要时间的,久而久之开机速度自然就变得非常慢。

2、有些服务和启动项在开机的时候不必要启动,将其放入延迟启动中,在开机后一段时间内启动,这样既不影响开机速度又不影响正常的服务或者程序的使用。增加此计划任务也是为了能够更好的配合延迟启动的功能。360安全卫士和金山卫士安全软件等都能设置延迟启动。

参考资料来源:百度百科-延时启动

以上就是关于用C语言怎么在单片机AT89C51上编写一个延时10秒的程序全部的内容,包括:用C语言怎么在单片机AT89C51上编写一个延时10秒的程序、汇编语言延时程序怎么解释、力控组态软件延时程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10625610.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存