标题: 51单片机IO口作为输入时,有的程序没有置1? [打印本页]

作者: 亢亢    时间: 2020-2-26 19:59
标题: 51单片机IO口作为输入时,有的程序没有置1?
      在写一个51程序的时候,忽然想到书上的一句话,说是51单片机IO口作为输入时,需要先向该为置1,但是大部分程序都没有这样做,这是为什么呢?不是太理解。
作者: wulin    时间: 2020-2-26 21:08
因为51单片机上电复位后所有I/O口默认高电平,如果程序没有操作相关IO口,其状态始终为1,所以可省略。
作者: huitata    时间: 2020-2-26 21:17
没有吧,没印象
作者: csmyldl    时间: 2020-2-26 21:42
因为单片机开机或复位后默认输出1,也就是端口场效应管默认是截止的,外接按键时只改变了端口的状态,并没有改变端口场效应管的导通和截止状态
作者: haierzaifei11    时间: 2020-2-27 08:59
51单片机上电复位后所有I/O口默认高电平
作者: 123321hh    时间: 2020-2-27 10:22
因为IO口作为输入时初始被置1, 这样就可以被外部器件拉低, 检测IO口的电平高低就可以知道有没有被外部器件拉低了
如果IO口置0的话, 那么外部器件无论是高电平还是低电平, IO口都是0, 就没法检测了
作者: lizi_868    时间: 2020-2-27 11:12
所谓的准双向口就是这样。上电使能弱上拉了,默认已经是1了,就不用写1了。如果之前操作过,写0了,就没法直接读了。
作者: 莫三文    时间: 2020-2-27 17:56
具体要看是什么单片机,一般默认是配置为输出的 ,如果要做为输入,需要程序配置。但不排除有些单片机可以不用配置直接可以读取IO口电平状态。
作者: 亢亢    时间: 2020-2-27 22:25
wulin 发表于 2020-2-26 21:08
因为51单片机上电复位后所有I/O口默认高电平,如果程序没有操作相关IO口,其状态始终为1,所以可省略。

谢谢你,我明白了
作者: 亢亢    时间: 2020-2-27 22:25
csmyldl 发表于 2020-2-26 21:42
因为单片机开机或复位后默认输出1,也就是端口场效应管默认是截止的,外接按键时只改变了端口的状态,并没有改 ...

谢谢你的回复,我明白了
作者: 亢亢    时间: 2020-2-27 22:26
huitata 发表于 2020-2-26 21:17
没有吧,没印象

确实是有的
作者: 亢亢    时间: 2020-2-27 22:26
huitata 发表于 2020-2-26 21:17
没有吧,没印象

确实是有的
作者: 亢亢    时间: 2020-2-27 22:27
莫三文 发表于 2020-2-27 17:56
具体要看是什么单片机,一般默认是配置为输出的 ,如果要做为输入,需要程序配置。但不排除有些单片机可以 ...

我说的是51单片机,确实如上所说,我已经明白了,谢谢你的回复
作者: 亢亢    时间: 2020-2-27 22:27
lizi_868 发表于 2020-2-27 11:12
所谓的准双向口就是这样。上电使能弱上拉了,默认已经是1了,就不用写1了。如果之前操作过,写0了,就没法 ...

明白了,谢谢你
作者: 亢亢    时间: 2020-2-27 22:28
123321hh 发表于 2020-2-27 10:22
因为IO口作为输入时初始被置1, 这样就可以被外部器件拉低, 检测IO口的电平高低就可以知道有没有被外部器件 ...

谢谢你
作者: 亢亢    时间: 2020-2-27 22:28
haierzaifei11 发表于 2020-2-27 08:59
51单片机上电复位后所有I/O口默认高电平

是的,谢谢你奥
作者: tianyu5658    时间: 2020-2-28 09:39
有些单片机会有这个问题,最好是先置1.




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1