神奇的工作室_延迟器的延迟时间(单片机之软件延时器(一))

超级管理员 奔放内容 128

单片机之软件延时器(一)

在实际工作中,很多并行多任务在处理问题时都需神奇的工作室要进行某种等待。这种等待是一个耗时大户,通常比处理一段代码还要伤脑筋。

实现等待的可选方案并不多,延时等待便是其中一种。对延时的处理有时候会成为一个很棘手的问题。

因为有时候我们会需要很多个等待同时(通常不同步)进行,还不能相互牵制。这里就出现了矛盾。我们知道,独占性等待是最容易实现的,而要不互相牵制同步进行就不容易了。

很多并行多任务同时运行会导致很多等待同时进行,这经常会超出硬件资源的处理能力。很显然,这样的情况就造成了一个并行多任务多线程等等的应用。我们需要为每一个等待做定时或延时处理。针对这种处理我们有两种选择,一种是软件定时器,另一种是软件延时器。

软件延时器

实现程序如下:

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

#include "intrins.h"

//定义时间常数

#define ST_500ms 6000

//定义延时器

bit Delay0Open=0;

unsigned long Delay0Counter=0;

bit Delay0Over=0;

sbit LED1=P0^0; //将单片机的P0.0端口定义为LED1

void main()

{

P0=0X00; //P0口初始化

Delay0Counter=ST_500ms; //初始化

Delay0Open=1; //打开定时器

while(1)

{

if(Delay0Open)

{

if(Delay0Counter)

Delay0Counter--;

if(!Delay0Counter)

Delay0Over=1;

神奇的工作室

}

if(_testbit_(Delay0Over))

{

LED1=~LED1; //P0.0取反

Delay0Counter=ST_500ms;

}

}

}

免责声明

和平精英大哥交流群:

热门文章
随机推荐