|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 沉思的牛 于 2014-5-10 20:04 编辑
如果你有一定的单片机的基础;
并且想上升一个台阶,那么我劝你认真学学这本资料(见附件);
相信大家都看到过类似的代码:
注: 其他函数和宏以及管脚都已经定义
- void main(void)
- {
- LedInit() ;
- While(1)
- {
- LED = ON ; //点亮LED
- DelayMs(500) ; //延时500ms
- LED = OFF ; //关闭LED
- DelayMs(500) ; //延时500ms
- }
- }
复制代码 程序很简单对吧?是让LED以1HZ的频率闪烁;
但是众鱼油发现问题所在没有:
1:在延时的时候CPU全部时间花在上面等待,白白浪费500ms的时间;
2:如果你的程序里面还有其他任务,你怎么办?
带着疑问去看资料吧,教你如何解放CPU;
谈谈按键识别程序吧:
- if(0 == io_KeyEnter) //如果有键按下了
- {
- Delayms(20) ; //先延时20ms避开抖动时间
- if(0 == io_KeyEnter) //然后再检测,如果还是检测到有键按下
- {
- return KeyValue ; //是真的按下了,返回键值
- }
- else
- {
- return KEY_NULL //是抖动,返回空的键值
- }
- while(0 == io_KeyEnter) ; //等待按键释放
- }
- //乍看上去,确实挺不错
复制代码 其实这样的代码是伪代码~~~;
出现抖动意味着什么? 当然是按键已经按下了;
大家觉得那个延时有没有必要呢?
等待按键释放其他的程序怎么执行呢?
按键的长按功能怎么实现呢?
带着疑问去看资料吧,基于状态转移的按键识别程序,讲得非常详细;
所以此类代码只适合在演示,或简单实验用;
写程序要想到工程性;
资料里面谈到如何模块化编程,我相信只要认真学过甲鱼的C/C++的朋友应该做的比较好;
新手写出来的程序:
老手写出来的程序:
资料里面讲到操作系统的基本知识,多任务程序的基本思想;
所以我推荐大家学习;
附件:
|
评分
-
参与人数 2 | 荣誉 +10 |
鱼币 +10 |
贡献 +8 |
收起
理由
|
灭·世
| + 5 |
+ 5 |
+ 3 |
谢谢 |
大黑鱼
| + 5 |
+ 5 |
+ 5 |
支持楼主! |
查看全部评分
|