51单片机如何读回端口状态?

2025-02-27 06:40:19
推荐回答(5个)
回答1:

原因:51单片机的准双向端口输出1时如果外接负载偏重(例如几毫安),其端口电压可能低到2~3V甚至更低,但这时往往外接电路还能工作,但直接读回端口状态就有可能是0.
比较好的解决办法:输出要回读的话,最好额外定义一个输出端口镜像存储单元,每次输出先对该镜像单元操作,然后把镜像单元的值送到端口。回读就读取镜像单元的值。

回答2:

这个具体要看 继电器 驱动电路与 IO 口的连接状态,
如果 IO 口直接连接 三极管 b ,这样不管 继电器 动作与不动作 读取的结果 都是 0 ,
这样的话 只有设置一个 标志位 如 P1.1=1 标志位=1 / P1.1=0 标志位=0,
结果 只要 读取 标志位 就可以了,具体怎么 定义 就可以了。

回答3:

原因:51单片机的准双向端口输出1时如果外接负载偏重(例如几毫安),其端口电压可能低到2~3V甚至更低,但这时往往外接电路还能工作,但直接读回端口状态就有可能是0.
比较好的解决办法:输出要回读的话,最好额外定义一个输出端口镜像存储单元,每次输出先对该镜像单元操作,然后把镜像单元的值送到端口。回读就读取镜像单元的值。
这个具体要看 继电器 驱动电路与 IO 口的连接状态,
如果 IO 口直接连接 三极管 b ,这样不管 继电器 动作与不动作 读取的结果 都是 0 ,
这样的话 只有设置一个 标志位 如 P1.1=1 标志位=1 / P1.1=0 标志位=0,
结果 只要 读取 标志位 就可以了,具体怎么 定义 就可以了。

回答4:

可以试试a=P1&0xff;
这个是读引脚和读寄存器的区别,百度一下吧。

回答5:

不操作全是1,具体端口的值是多少看你的程序给的是多少(在作为输出的情况下),根据一个意思,读没有意义。