注:下述文字部分有些枯燥,可以粗略的看一下,需要时再仔细研究即可,附在后面的例子可以好好看看。
7.1 数字I/O口介绍
I/O口(英文Input,Output的缩写)是单片机与外部世界进行沟通的主要通道,通过I/O口可以输入数字信号(高、低电平)、模拟信号;可以输出数字信号(高、低电平)、PWM波、或模拟信号等。MSP430器件最多实现有8个I/O端口,P1至P8,每个端口有8个I/O管脚。每一个I/O管脚可分别设置为输入或输出方向,并且每一个I/O管脚可被单独读或写。MSP430G2553的封装有20个管脚、28个管脚和32个管脚三种情形,20个管脚的MSP430G2553只有P1和P2端口,28和32个管脚的MSP430G2553有P1、P2和P3端口。
端口P1和P2具有中断能力,P1和P2管脚的每个中断可以单独使能,并可设置为在输入信号的上升沿或下降沿产生一个中断。P1和P2端口的中断能力增加了单片机的灵活性、增强了其处理外部信号的能力。所有P1的I/O口产生一个单一的中断向量,而所有P2的I/O口产生另一个不同的单一中断向量。
数字I/O口的特点包括:
·每个I/O口可以分别单独编程
·输入和输出可以任意组合
·可分别设置P1和P2的中断
·独立的输入和输出数据寄存器
·可分别设置上拉或下拉电阻
·可分别设置管脚振荡器功能(某些MSP430器件)
7.2 数字I/O口操作
数字I/O口由用户软件来设置。跟数字I/O口相关联的寄存器有:方向寄存器PxDIR(PxDIR中的x表示端口号,可以是1、2、3等,如P1DIR,P2DIR,P3DIR等,以下有许多类似的表示方法,不再赘述)、输入寄存器PxIN、输出寄存器PxOUT、上拉/下拉电阻使能寄存器PxREN、功能选择寄存器PxSEL和PxSEL2、中断使能寄存器PxIE、中断边沿选择寄存器PxIES和中断标志寄存器PxIFG。在使用I/O口时,我们需要跟上述的各个寄存器打交道,下面逐一进行讨论。
7.2.1方向寄存器PxDIR(DIR, Direction的缩写)
I/O口的管脚可以设置为输入端也可以设置为输出端,具体由方向寄存器PxDIR确定。每个PxDIR寄存器中的每一位选择了相应I/O管脚的方向,不管该管脚被选择的功能是怎样的。对于被选择为其它功能的I/O管脚,PxDIR中的位需根据其它的功能要求去设置。
位=0 :端口管脚被切换为输入方向
位=1 :端口管脚被切换为输出方向
例如:以下的语句将P1.1设置为输入方向,将P1.3设置为输出方向:
P1DIR&=~BIT1; //将P1DIR的BIT1位清零,即将对应的P1.1口设置为输入方向
P1DIR|=BIT3; //将P1DIR的BIT3位置1,即将对应的P1.3口设置为输出方向
7.2.2 输入寄存器PxIN(IN, Input的缩写)
当管脚被设置为I/O口功能时,每个PxIN寄存器中的每一位反映的是相应I/O管脚的输入信号的值。PxIN为只读寄存器,写只读寄存器PxIN会导致电流消耗增加。
位=0 :输入为低(电平)
位=1 :输入为高(电平)