打印

51单片机I\O端口问题

[复制链接]
2392|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pjj5320dixm|  楼主 | 2012-8-2 08:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
lyjian| | 2012-8-2 08:17 | 只看该作者
不是
只有写0了后才需要写1,如果已经写了1就不用每次读都写1

使用特权

评论回复
板凳
ayb_ice| | 2012-8-2 08:30 | 只看该作者
如果你确定先前输出已经是1,就不必了

但为了保险起见,每次都置1,是明智的,这样的代码也有提示作用

使用特权

评论回复
地板
cjseng| | 2012-8-2 12:18 | 只看该作者
如果你确定先前输出已经是1,就不必了

但为了保险起见,每次都置1,是明智的,这样的代码也有提示作用
ayb_ice 发表于 2012-8-2 08:30

说的对!与其每次浪费脑细胞去判断做输入时是不是已经置1,不如每次都置1。

使用特权

评论回复
5
lyjian| | 2012-8-2 12:29 | 只看该作者
如果IO本来一直就当输入,就没必要每次读都写1了
浪费代码和效率

使用特权

评论回复
6
原野之狼| | 2012-8-2 12:44 | 只看该作者
如果有读也有写 那就每次读之前都写1
若只读  那就不必了

使用特权

评论回复
7
cjseng| | 2012-8-2 13:03 | 只看该作者
如果IO本来一直就当输入,就没必要每次读都写1了
浪费代码和效率
lyjian 发表于 2012-8-2 12:29

话是这么说的,但谁能保证程序没有BUG呢?指不定在不经意的地方把IO当成输出并且清零了呢?
读之前写1,浪费了效率,但提高了可靠性,算起来还是很值得的嘛。

使用特权

评论回复
8
zhaofy521| | 2012-8-2 18:11 | 只看该作者
多写个1不费什么事撒

使用特权

评论回复
9
qiujiahongde| | 2012-8-3 08:17 | 只看该作者
:o

使用特权

评论回复
10
lyjian| | 2012-8-3 08:18 | 只看该作者
话是这么说的,但谁能保证程序没有BUG呢?指不定在不经意的地方把IO当成输出并且清零了呢?
读之前写1,浪费了效率,但提高了可靠性,算起来还是很值得的嘛。 ...
cjseng 发表于 2012-8-2 13:03

这样的程序你即使写N个1,也提高不了可靠性:本来就不可靠,多少个1它还是不可靠。

使用特权

评论回复
11
lyjian| | 2012-8-3 08:19 | 只看该作者
多写个1不费什么事撒
zhaofy521 发表于 2012-8-2 18:11

多写个1可以,但没必要每次读都写

使用特权

评论回复
12
cjseng| | 2012-8-3 09:43 | 只看该作者
11# lyjian
IO口的状态发生变化有可能是程序BUG造成的,也有可能是外部干扰造成的。在绝大部分情况下,只作为输入,写一次1,以后只读,是不会发生什么问题,特别是在偶尔开一下机的产品中,问题是很难出现的,但是在长时间连续工作且无人值守的设备中,发生这种情况的概率就大大增加了。
或许,有人会说,外部干扰能造成IO状态变化是天方夜谭,如果发生变化,那就是硬件设计不过关。但我认为:没有100%可靠的硬件,也找不出不存在bug的软件,我们所要做的是防患于未然。
再说,通常读IO状态都是隔段时间循环读的,要做到有时候写1有时候不写,还不大方便呢。
所以我**读之前每次都写1,就如同我习惯于给51的P0口加上拉排阻一样,不管用不用得到,加上再说,大不了焊接的时候空着不焊就是了。

使用特权

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

本版积分规则

2

主题

15

帖子

0

粉丝