单片机I/O口问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:59:50
比如我现在P1.0接一个5v电压。程序里写:
CLR p1.0
则P1.0为1还是0,即接口以软件为先还是硬件为先?
我的单片机是51系列的。

首先要看你用的是什么型号的单片机,比如ARM里面你读不通的寄存器会有不同的答案,我用的C8051单片机试过,有一定是随机性。像你这种情况,如果的开漏的引脚单片机,比如说89S51就是高电平,其他推挽方式的就是不确定的,要看你单片机里面的驱动能力了,可能高也可能是低

如果你置1却接地的话,一般就读到0了

51单片机,那你接5V却写0,那你读的还是不确定。不过多数可能还是你接什么就读到什么。不过不建议这么做,容易烧单片机。一般只有上拉接法,没有直接这样接的。
如果你什么都不接,把两个引脚短接,其中一个写0另一个写1,那么你读这两个引脚就都是0了。我觉得你提问的目的还是这个吧?

“接口以软件为先还是硬件为先?”只回答这句的话,肯定是硬件为先,就算你软件起了作用还不是立马会被硬件给改了,是吧
MCS-51的话,p1口是个准双向口,必须要先置1才能正确读出引脚上的高低电平,你这里CLR P1.0清零了端口锁存器,场效应管导通了,就算你引脚上接的是高电平也会被下拉成低电平,但是如果没接电阻直接把5V的电源接到引脚上的话应该读出的是高电平吧,5V电压全加在了导通的场效应管上,电流应该挺大的
用MOV读引脚的话读出来应该是1,ANL 这些指令修改的时候应该以原来是0为准
若说的不对,还望指正啊

呵呵,P1.0,竟敢直接连接到5V电源?

那么无论输出1、0,该端,肯定是5V!

这个引脚,毫无疑问,也就烧坏了。

接口以硬件为先的,所以P1.0是1