本帖最后由 David_ming 于 2010-4-15 20:59 编辑
发一个MCU定时和延时方法,真对原来浪费CPU时间的缺陷,这个code是我在原来开发方案的时候想到的,原来用feeling的IC,因为只有一个Timer,所以想到了OS,本程序有些类似OS的思想,供大家一起学习研究,代码如下:
ulong Counter = 0,DelayTime;
sbit TimeFlag = 0;
void Timer0(void) interrupt 1
{
Counter++;
if(Counter == DelayTime)TimeFlag = 1;
if()...//这里还可以加别的延时,时间到也可以建立一个消息
}
delay(ulong i)//初始化延时
{
EA = 0;
TimeFlag = 0;
DelayTime = Counter+i+1;
EA = 1;
}
void main(void)
{
delay(10);//掉用初始化延时函数
while(1)
{
..............
..............
if(TimeFlag)break;//判断延时是否完成
}
}
稍微解释一下基本细想:中断函数有些类似SysTick,每进一次Tick中断就判断一次时间是否到达,如果到达就发消息给全局,然后全局不停的查询这个旗标完成定时,用在对响应延时不是很急切的场合,此方法精度很高,但是响应速度比较慢
转帖请注明出处,谢谢。 |