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)
  {
   
  }
}

運行結果

燈亮了


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