MCU定时方法优化

[复制链接]
4259|13
 楼主| David_ming 发表于 2010-4-15 20:56 | 显示全部楼层 |阅读模式
本帖最后由 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中断就判断一次时间是否到达,如果到达就发消息给全局,然后全局不停的查询这个旗标完成定时,用在对响应延时不是很急切的场合,此方法精度很高,但是响应速度比较慢


转帖请注明出处,谢谢。
zwll 发表于 2010-4-15 21:13 | 显示全部楼层
楼主牛啊
淡蓝的天空 发表于 2010-4-16 17:49 | 显示全部楼层
没发现在那里做了优化
huamunv 发表于 2010-4-16 21:02 | 显示全部楼层
是“针对”吧,不是“真对”
麻辣鸭脖子 发表于 2010-4-16 23:00 | 显示全部楼层
供学习的例程
 楼主| David_ming 发表于 2010-4-16 23:01 | 显示全部楼层
4# huamunv :lol
xiaomifan 发表于 2010-4-16 23:06 | 显示全部楼层
OS是什么
megawin 发表于 2010-4-16 23:10 | 显示全部楼层
7# xiaomifan
operating system
zhiyonghe 发表于 2010-4-17 11:24 | 显示全部楼层
加裤????
但实在是看不出哪里高明???:o
megawin 发表于 2010-4-17 14:13 | 显示全部楼层
9# zhiyonghe
为鼓励大家多发原创帖,又因为此贴有技术性贡献,特此加酷
 楼主| David_ming 发表于 2010-4-17 14:16 | 显示全部楼层
9# zhiyonghe

此贴并非多高明~只是在编程的时候比较方便而已,能提高开发效率
yidou 发表于 2010-4-17 21:31 | 显示全部楼层
看着这个帖子的风格想到了刚开始看得一本书
ershisi 发表于 2010-4-18 23:04 | 显示全部楼层
还是没理解了其中的精髓
sagetom 发表于 2010-4-19 09:17 | 显示全部楼层
想法是好的,你有多少个事件,你就得设置多少个标志位,全在中断里面去判断.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名::“哥洒脱如此”

22

主题

762

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部