51单片机,书上说P1口作为输入,需要写1。实验发现不写一也可以,求解释。 代码如下。

2024-12-01 00:24:14
推荐回答(4个)
回答1:

你能产生这样的疑问是很好的,说明你动脑筋了.
为什么不用写1也行呢?为什么书本上说要写1呢?
有以下两种情况:
1 你是用软件仿真的,不管是Protues还是Keil软件仿真的,都和硬件是不一样的,所以,你完全不用写
1,经常见学生画的Proteus电路,只能仿真,不能做成实物,因为电路其实是不对的,但是能仿真,也就是
说仿真与实际是不一样的.

2 你没有仿真,确实的用单片机实验了一把,那一般也不用写1,因为现在的单片机,在内部的电路结构
上已经和你书本上学到的不一样了,书本上的8051单片机是指很古老的,那个时候,P1口还是准双向
口,为了保险起见,需要先写成高电平,给P1一个稳定的状态.
这也是我们大学的悲哀,我记得07年我大三的时候,讲的单片机居然还有8031....
言归正传,现在的单片机,虽然也是准双向口,但是在上电复位后,会自动给P1---P3口一个准确的电
位,即高电平,就是说,相当于自动写1了,另外,现在的单片机,很多的51单片机,IO口是可选择的了,可以
设定为上拉,推挽.浮空输入,准双向,而且一复位的时候是浮空准入状态,这种情况的单片机,更不用写1了.

总结:就是,你被过期的教材忽悠了一下,这是我们教育的悲哀.

回答2:

你去看他电路会发现,你写1的时候IO口为上拉,写0的时候为接地,当IO口接地的时候不管你输入什么都为0,所有说需要写1,但是单片机启动的时候默认为所有IO口都为1,我觉得学51的时候IO口的电路应该去看下的

回答3:

一般而言,一个IO口仅仅作为输入口是不需要写1再读入的,但如果既做输入又做输出时,读入时就需要先写1再读入,比如一个IO一方面作为LCD的数据口读入,另一方面又作为键盘接口(既有输出又有输入),此时就需要做先写1再读。

回答4:

你去了解一下,程序在执行main()之前都干了些什么,你的疑问就会得到解答了。
提示你一个关键字:startup