打印

单片机编程中常遇到的一个问题,求解高手们是怎么处理的

[复制链接]
1672|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
java0735|  楼主 | 2012-6-29 21:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如说写液晶屏模块程序中,往液晶数据端口写数据或命令之前需要先判断端口是否忙
代码中我一般这么写:
while ( (LED_BF||LED_RES) == 1 )  //LED_BF忙标志引脚位 LED_RES复位信号引脚位
    {
     delay(2);
}
但我担心一个问题,如果条件一直不成立呢,那程序不就死在这个位置了,那我的系统就不能正常工作了,请问大家都是怎么处理的?
其实这种情况在很多编程中都有遇到,比如说can通讯编程中 IFx Command Request Registers 中也有个busy位需要判断

相关帖子

沙发
sfesdm| | 2012-6-29 21:10 | 只看该作者
while((LED_BF||LED_RES)  && (count--));
count 是一个变量,时间长度根据实际设置,一般不会执行那个delay(2)的。

使用特权

评论回复
板凳
airwill| | 2012-6-29 22:09 | 只看该作者
是的, 如2楼, 软件做个超时限制就是了.

使用特权

评论回复
地板
java0735|  楼主 | 2012-6-29 22:23 | 只看该作者
2# sfesdm
很好 谢谢啦

使用特权

评论回复
5
ayb_ice| | 2012-6-30 08:26 | 只看该作者
最好直接返回,由上一级决定怎么做,

有可能这样,程序是不断循环的,这个循环忙,就不发了,下一个循环基本就不忙了,可以发了。。。

使用特权

评论回复
6
wukunshan| | 2012-6-30 09:07 | 只看该作者
如果条件不成立,说明LCD 模块和或者连线有问题,在这种情况下还要让程序运行下去,LCD显示的不正确信息不是误导人吗?这个问题也要考虑哦。

使用特权

评论回复
7
qq65411253| | 2012-6-30 12:48 | 只看该作者
死掉最好,因为这个已经是非常严重的故障了。可以考虑验证几次后用蜂鸣器提示错误。LCD不刷新,显示的总是过时的信息(不一定是错误信息)。按照过时的信息来操作岂不是自找麻烦?

使用特权

评论回复
8
ayb_ice| | 2012-6-30 13:57 | 只看该作者
操作是需要时间的,死等影响全局,不死等程序难写,有RTOS最好了

使用特权

评论回复
9
sedatefire| | 2012-6-30 17:47 | 只看该作者
操作是需要时间的,死等影响全局,不死等程序难写,有RTOS最好了
ayb_ice 发表于 2012-6-30 13:57

同意

使用特权

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

本版积分规则

32

主题

294

帖子

2

粉丝