MSP430F1612 第一个程序,点亮一个LED灯

I/O操作

MSP430有6组IO端口,其中P1和P2具有中断功能,其他端口不具备中断功能。而点亮一个LED灯只需要控制一个引脚的高低电平即可。这里不需要用到中断功能。那在这里,我们编码涉及的寄存器只有4个,分别是PxINPxOUTPxDIRPxSEL。而且MSP430F1612的IO功能并不需要配置时钟,所以整个程序只需要配置4个IO端口的寄存器和看门狗寄存器。
对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)
  {
   
  }
}

运行结果

灯亮了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章