我知道如果我给P0 = 0xFE;
,它将使一个引脚作为输出,其余引脚作为输入。
但是,如果我只想将一个引脚用作输出或输入怎么办?就像我们在PIC单片机中所做的一样:
TRISABITS.TRISA0 = 0; // for setting A0 as output
请澄清
答案 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