打印

编程思路请教.

[复制链接]
1384|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ihafd|  楼主 | 2007-12-22 17:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近觉得我的单片机系统效率很低.
看到匠人的"编程漫谈"有些地方不在明白.请指教一下.谢谢.
匠人提到:
    "比如说在LED数码管动态扫描显示方面,假如要定期扫描多个LED数码管,并且每个LED点亮后,需要延时1毫秒。这个1毫秒如果直接用延时子程序去实现,就浪费了系统的时间资源。我们可以把这个显示程序当作一个进程,分多个阶段来执行。每个阶段切换显示一个LED管。
而在当中的1毫秒延时期间,可以将系统控制权交还给调度程序,去执行其它程序。
     在作按键检测时,需要消抖延时;或在写外部E2PROM(如24C01芯片)时,需要写动作延时。这些时间都可以让系统去执行其它程序,提高整个系统的实时性。"

问题1.怎样在延时1毫秒期间,让系统控制权还给调度程序,去执行其它程序?

问题2.在按键消抖延时期间,可以让系统去执行其它程序.意思是不是说用执行一些模块来作为延时?
如果我的按键要等到放开后才执行下上面的程序,怎在这个等按键放开的期间去执行调度程序去调度其它程序的执行?

相关帖子

沙发
happystar| | 2007-12-22 18:12 | 只看该作者

re

问题1.怎样在延时1毫秒期间,让系统控制权还给调度程序,去执行其它程序?
在用定时器定时1ms,在定时中断服务程序中扫描数码管,扫描完(这段程序可能只执行几us),就回到主程序中执行了。所以剩下的时间里(t=1ms - 几us) 就执行主程序。也就是你说的“让系统控制权还给调度程序,去执行其它程序”

问题2.这个问题已经讨论好多次了。你去hotpower菜地里找程序来看,大概叫什么零耗时裸奔的。

使用特权

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

本版积分规则

290

主题

844

帖子

3

粉丝