如何在8051中将单个特定的引脚设置为输入或输出?

时间:2019-03-24 10:19:41

标签: c bit-manipulation 8051

我知道如果我给P0 = 0xFE;,它将使一个引脚作为输出,其余引脚作为输入。

但是,如果我只想将一个引脚用作输出或输入怎么办?就像我们在PIC单片机中所做的一样:

TRISABITS.TRISA0 = 0; // for setting A0 as output

请澄清

2 个答案:

答案 0 :(得分:1)

8051上的引脚无法切换为输入或输出。没有方向控制。每个引脚对GND都有一个强驱动器,而对VCC有一个弱驱动器。在上升沿(电平从0 [GND]变为1 [VCC]),该引脚将在两个时钟周期内被驱动至VCC,其强度更高。那是为了获得更好的优势。

要将引脚用作输入,您必须将其设置为1并保留在那里。 8051外部的驱动源现在可以将引脚驱动为GND,读取时为0。如果外部源将引脚驱动至VCC或使其悬空,则该引脚将读为1。

要将引脚用作输出,您可以根据需要将其设置为0和1。确保从动负载的阻抗足够高。

答案 1 :(得分:0)

取决于您使用的编译器。在Keil C上,您可以使用位寻址寄存器的扩展名,像普通结构字段一样访问位

P0.1 = 1; // set P0.1 as input
P0.5 = 0; // set P0.5 as output

否则,通过按位操作设置一位

char inoutReg = P0;
inoutReg &= ~(1 << n); // clear bit n in P0, i.e. set P0.n as output
inoutReg |= 1 << m;    // set bit m in P0, i.e. set P0.m as input

请参见How do you set, clear, and toggle a single bit?