单片机P1口电平的问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 22:08:01
1。给P1口一个数据(假如接了发光二极管),二极管会亮,那就说明P1口产生了电平比如: MOV P1,#3FH
2。书上的:要测P1口引脚电平,需要让对应的引脚先置位,比如测P1.0口
ORL P1,#01H;置位 MOV C,P1.0

这里我就迷糊了,既然给P1口数据可以产生电平的话,那先置位再测还有什么用,那不明摆着变成高电平了吗,还怎么测啊?(因为置了位)
请高手指点下,告诉我这个问题怎么理解...先谢谢啦

这是由引脚内部的结构所决定的。

在单片机的引脚输出低电平,引脚内部有一个强力下拉的电路,可使引脚稳定的输出低电平,引脚可承受的灌电流可达20mA(型号不同,也不尽相同);
在单片机的引脚输出高电平,引脚内部的上拉电路的作用很小,虽然可使引脚输出高电平,但是如果外接电路将引脚的电位拉低,读入时,将能读回0。
这就是所谓的“准双向口”。

要使用引脚输入时,应该先输出1,使引脚处于弱上拉的输入状态。

答:楼主先搞清楚
ORL P1,#01H;置位

MOV C,P1.0
这些语句的真正含义,再搞明白p1口的内部结构。
ORL P1,#01H是给p1的第0位赋1.此时1是写进p1第零位的锁存器里,把p1的第零个引脚和地断开。
MOV C,P1.0是从p1的第零个引脚读数,把结果赋给C。
要理解这个区别,就要明白p1口的内部结构。因为p1口的场效应管一端接地,一端与外部引脚相连,由p1的锁存器控制,当给锁存器写1时,它和地断开,写0时和地相连,所以写零时读到的总是低电平。
试想你现在要读p1引脚,按理说p1与外部电路相连,外部电路的是什么状态,就应该读到什么,但如果p1口的场效应管接地的话,它会把p1口电位拉低,你读到的总是低电平0,所以要先给p1写FFH,把p10的场效应管和地断开,再读数时就是真实状态了。当外部电路断开,再读时读到的就是p0端口(锁存器)的真实状态了。

可能置位后就是稳定的 吧,MOV P1,#3FH是不是只是一个瞬时呢?要么怎么有很多延时程序

2楼通俗 3楼专业 都正确

I/O口存在线与逻辑(I/O口结构为漏极弱上拉或开路),如果P1口置0,设外部设备输出逻辑为A,那么0*A=0,P1口永远为0,输入也永远为0,与期望逻辑不相符,所以P1只能置1,1*A=A,输入与外设逻辑A一致。