新手对51单片机IO的疑惑

来源:百度知道 编辑:UC知道 时间:2024/06/17 00:51:34
读端口(即引脚??),读锁存器(即P0/P1/P2/P3寄存器?),有什么不同?
例子:P1=0Xff;K=P1;因为把P1端的锁存器都置1了,因而这个K值是引脚的值,对吗?

51的引脚是半通用的IO口,不知道你电路学的怎么样,你可以看IO口的原理图,里面是高端电阻上拉,低端三极管驱动的。
如果你端口本来设置的是0,你读的时候下拉的三极管也会仍然被驱动着,所以不管管脚上是1还是0,这个电平都会被内部的下拉三极管拉到0,读的数据也就不管外界是1还是0,都读的是0了。
而如果你先写1,就是把下拉的三极管断开,这样IO口内部只是被一个上拉电阻驱动,如果你外面是0,这时管脚就会被拉到0,读的值也就是0;如果外面是1,自然读的就是1了。

是的

读的时候是引脚的值.用做输出口线时要特别注意,如果输出一个高电平去控制外部器件,当外部器件把引脚拉低了,此时CPL这个引脚时就会出错.本来认为可以将输出置为0,实际上输出锁存的值会仍然是1.