Keil C51 8051端口0 I / O.

问题描述 投票:-1回答:1

在Keil C51中检查这两种情况,并在两种情况下在调试器中观察P0外设选项。结果在两种情况下有所不同。为什么P0 = 0xFF;指令不会产生相同的结果?

情况1)

main()
{P0=0x00;
 P0=0xFF;
 while(1);
}

案例2)

main()
{
 P0=0xFF;
 while(1);
}

case 1 program case 1 peripheral window while debugging

case 2 program

case 2 peripheral window while debugging

目标设备89S52 - 8051基于微控制器

keil 8051 c51
1个回答
1
投票

在写入0xFF之前,我检查了P0的不同值而不是0x00。在所有情况下,在最后阶段读取先前的值。

P0=0x10;
P0=0xFF;

结果:P0引脚= 0x10,P0寄存器= 0xFF

由于P0没有用于I / O操作的上拉电阻,当我们写入0xFF时,引脚处于高阻态。因此,在软件调试器中,对应于P0引脚值的变量包含前一个值。它不会改变。但在硬件中,具有同步锁存值1的引脚将浮动。

检查了不同的案例

P0=0x07;
P0=0xF1;

结果:P0引脚= 0x01,P0寄存器= 0xF1(寄存器中对应1s的位保持相同)

P0=0x13;
P0=0xC3;

结果:P0引脚= 0x03,P0寄存器= 0xC3

© www.soinside.com 2019 - 2024. All rights reserved.