MCU定时方法优化

[复制链接]
2323|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

粉丝