I/O操作
对4个寄存器的描述分别如下:
PxSEL寄存器中的每一个位用于选择该引脚是使用外设功能还是GPIO功能.
Bit = 0:选择IO功能;Bit = 1:选择外设功能
例如:
P4SEL |= 0x0080; //P4.7选择外设功能,0000 00001000 0000(b) P4.0~P4.7对应1~8bit
PxIN寄存器反应了该端口选择IO功能(PxSELx = 0)时每一个位的输入状态:
Bit = 0:输入的是低电平; Bit = 1:输入的是高电平
PxIN是只读存储器,通过读取这些寄存器可以获得对应引脚的状态。
PxOUT寄存器中的值是配置为IO功能时引脚的输出状态。
Bit = 0:输出低电平; Bit= 1:输出高电平
例如:
P4OUT |= 0x0080; //P4.7引脚输出高电平
在使用PxIN和PxOUT时,我们要注意一下,IO口的方向配置,只有当IO配置为输入时PxIN才有效,当IO口配置为输出时PxOUT才有效。这里使用PxDIR对IO口的输入输出方向进行配置。
Bit = 0:IO口被配置成为输入; Bit = 1:IO口被配置成为输出。
例如:
P4DIR |= 0x0080; //P4.7被配置成为输出引脚
LED引脚相关电路
当P4.7输出低电平时,LED灯亮。
程序代码
通过上面的讲解,料定大家都知道了IO口的输入输出配置是怎样的了,下面写个程序来小试牛刀:
#include <msp430x16x.h>
int main( void )
{
//Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P4SEL &= ~0x0080; //P4.7 select IO funciton
P4DIR |= 0x0080; //P4.7 set as output
P4OUT &= ~0x0080; //P4.7 output low level
while(1)
{
}
}
运行结果
灯亮了