51单片机I\O端口问题

[复制链接]
 楼主| pjj5320dixm 发表于 2012-8-2 08:02 | 显示全部楼层 |阅读模式
51单片机I\O端口每次读数据时是不是都要置1啊?   I\O口同时用作输入输出端口,每次读数据是不是也要每次置1啊?
   各位大神帮帮忙啊,谢谢了啊!!!!
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。
lyjian 发表于 2012-8-2 12:29 | 显示全部楼层
如果IO本来一直就当输入,就没必要每次读都写1了
浪费代码和效率
原野之狼 发表于 2012-8-2 12:44 | 显示全部楼层
如果有读也有写 那就每次读之前都写1
若只读  那就不必了
cjseng 发表于 2012-8-2 13:03 | 显示全部楼层
如果IO本来一直就当输入,就没必要每次读都写1了
浪费代码和效率
lyjian 发表于 2012-8-2 12:29

话是这么说的,但谁能保证程序没有BUG呢?指不定在不经意的地方把IO当成输出并且清零了呢?
读之前写1,浪费了效率,但提高了可靠性,算起来还是很值得的嘛。
zhaofy521 发表于 2012-8-2 18:11 | 显示全部楼层
多写个1不费什么事撒
qiujiahongde 发表于 2012-8-3 08:17 | 显示全部楼层
lyjian 发表于 2012-8-3 08:18 | 显示全部楼层
话是这么说的,但谁能保证程序没有BUG呢?指不定在不经意的地方把IO当成输出并且清零了呢?
读之前写1,浪费了效率,但提高了可靠性,算起来还是很值得的嘛。 ...
cjseng 发表于 2012-8-2 13:03

这样的程序你即使写N个1,也提高不了可靠性:本来就不可靠,多少个1它还是不可靠。
lyjian 发表于 2012-8-3 08:19 | 显示全部楼层
多写个1不费什么事撒
zhaofy521 发表于 2012-8-2 18:11

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

本版积分规则

2

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部