8051单片机复位的时候各个I/O管脚都是1,那这个1………………

来源:百度知道 编辑:UC知道 时间:2024/06/28 10:34:34
如果我的外部开关闭合则为1,打开则为0,我要是将其接到单片机的P0.0上,采用查询的方式来检测外部开关是否闭合,如果闭合则往下执行,没有闭合则转移到LOOP继续检测
LOOP:JNB P0.0,LOOP(该指令是P0.0为0则转移,P0.0为1,则继续执行)
…………
根据单片机复位时候I/O全部为1的特性,这条指令能不能达到我要求的目的?复位的时候P0.0已经为1了,采用这样的查询我总觉得会发生这样的情况:那就是外部的开关及时没有闭合程序也会执行下面的“…………”

8051的I/O都是准双向口,在由输出转为输入时相应的端口要先置"1"
你可以在LOOP语句前加一句
ANL P0.0 , #01H

其实不用P0口,这种写法是对的,原因是内部没有上接电阻,导致高电平不稳定,只要加一个上拉电阻就可以了.

应该是先读吧,在不做输出的时候内部是高阻状态,该脚电平完全由外部信号控制

有两种方式可以解决你所说的问题:
一、在P0.0口上加一个反相器,其实挺简单的,用一个三极管,用其饱和导通的特性就可以了,程序运行过程中要有看门狗功能,运行过程中就不会出现复位的现象了
二、更改一下电路,使P0.0为0时代表外部开关闭合,为1时代表外部开关断开