请教玩51的朋友们:C语言如何区分读锁存器和读引脚?

2020-02-01 16:22发布

请教玩51的朋友们:C语言如何区分读锁存器和读引脚?

一直困惑这个问题。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
mcu_lover
1楼-- · 2020-02-03 01:45
prince2010 发表于 2013-1-7 17:54
谢谢,能不能举个例子说明?

sbit testport = P1^0;


CY &= testport;

CY里面存放的就是P1^0端口的锁存器值。
prince2010
2楼-- · 2020-02-03 05:36
mcu_lover 发表于 2013-1-7 18:20
sbit testport = P1^0;

呵呵,谢谢您,我试了一下,好像还是读引脚。

另外,如果单片机让某IO口输出1,但外部电路将引脚拉低,那么对应的SFR状态是保持1,还是变为0?锁存器状态又会如何?
mcu_lover
3楼-- · 2020-02-03 07:27
有些概念要清楚。就是51单片机的端口结构。
51单片机上电复位之后,端口锁存器值为1,这个时候是可以直接读取外部引脚状态的。

如果某个既存在输入又存在输出,即端口复用的情况。如很多人在扫描数码管时候,还用来读取按键值。在这种情况下就有必要分清楚读引脚还是锁存器。
在复用的情况下,如果要知道上次输出的值(即端口锁存器的值),需要用逻辑指令去读取端口状态。如果要知道当前IO口的值,则先将端口锁存器的值保存起来。然后将端口锁存器置1,再读引脚,此时读到的就是外部真实值。

一周热门 更多>