打印

MCU定时方法优化

[复制链接]
3304|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 | 只看该作者
是“针对”吧,不是“真对”

使用特权

评论回复
5
麻辣鸭脖子| | 2010-4-16 23:00 | 只看该作者
供学习的例程

使用特权

评论回复
6
David_ming|  楼主 | 2010-4-16 23:01 | 只看该作者
4# huamunv :lol

使用特权

评论回复
7
xiaomifan| | 2010-4-16 23:06 | 只看该作者
OS是什么

使用特权

评论回复
8
megawin| | 2010-4-16 23:10 | 只看该作者
7# xiaomifan
operating system

使用特权

评论回复
9
zhiyonghe| | 2010-4-17 11:24 | 只看该作者
加裤????
但实在是看不出哪里高明???:o

使用特权

评论回复
10
megawin| | 2010-4-17 14:13 | 只看该作者
9# zhiyonghe
为鼓励大家多发原创帖,又因为此贴有技术性贡献,特此加酷

使用特权

评论回复
11
David_ming|  楼主 | 2010-4-17 14:16 | 只看该作者
9# zhiyonghe

此贴并非多高明~只是在编程的时候比较方便而已,能提高开发效率

使用特权

评论回复
12
yidou| | 2010-4-17 21:31 | 只看该作者
看着这个帖子的风格想到了刚开始看得一本书

使用特权

评论回复
13
ershisi| | 2010-4-18 23:04 | 只看该作者
还是没理解了其中的精髓

使用特权

评论回复
14
sagetom| | 2010-4-19 09:17 | 只看该作者
想法是好的,你有多少个事件,你就得设置多少个标志位,全在中断里面去判断.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

22

主题

762

帖子

2

粉丝