51单片机IO读高电平

来源:百度知道 编辑:UC知道 时间:2024/07/04 21:01:22
我的P1.2 要读外部信号(高)
我把P1.2初始化为0,
接外部信号
接上后,外部信号就变成低了
可是我吧P1.2直接接在5V正极就能读出高电平来了
这是为什么呢

小弟弟,初始化为0是不可以作为输入用的,就等同于,里面有个三极管拉低了此脚的电位,要置位,才可以把那个三极管开路,外面直接接5v可以读得出,是因为全部压降都加在了三极管的两脚,两脚间存在一定的电位!所以读得高电平出来!所以说p口要作为输入的时候一定要置位setb端口(mov p2,#ffh)!而不是CLR!(

加一个上拉电阻看看
4.7K就可以了

这是51系列单片机端口特性决定的,高电平输出电流只有80微安,而低电平输出可达20毫安。

因为单片机的I/O口在读信号时只能读低电平(你看看书上介绍IO口的部分就会明白,他们是集电极开路方式)所以当把某个IO设为低电平时,内部三极管导通相当于直接把外部信号接地了,所以出现你的这个现象,要是外部信号是高电平的话应该加个反向器使起要动作时发低电平,而IO应该设为高电平读取,另外把IO直接接在电源上是很危险的,很容易烧坏那个IO所以一般是不允许的~