2012年3月22日 星期四

MSP430初探 (2)

MSP430有多種規格,以launch pad而言只有20個pin,但是有的卻多達40個以上,有的可憐到只有14個,不管如何,大多可以分為下面幾種,這些pin為IO接口,大致上可以分為幾種,且每一種都是可以作為他用(或者說重複使用,只要沒人用就可以用作其他用途)
PxIN: input register,x表示第幾個register
PxOUT: output register
PxDIR : register方向
PxSEL : 第二功能選項
PxIE : interrupt功能 enable
PxIES : interrupt edge trigger
PxIFG : interrupt flag

一般可以先用PxOUT規定pin的輸入輸出,如之前介紹,下面談談PxIE跟PxIFG如何使用來處理中斷

P1DIR=~BIT3; //讓PIN3為輸入
P1SEL=BIT3;  //讓該pin為interrupt,不是作為一般的IO pin
P1IE=BIT3;  //enable該pin的interrupt功能
_EINT();  //啟動interrupt

//下面一行是表示該函數為處理P1的所有pin的interrupt sub-routine
#pragma vector=PORT1_VECTOR
__interrupt void P1_ISR(void){
//前面有__intterupt告訴compiler將他編譯為ISR
  //...process
  P1IFG=0;
}
在launchpad中,BIT3為按鈕的pin。因為一個ISR function不只處理一個pin,所以有可能事件會同時發生,利用P1IFG可以看到哪些事件發生了,另外最後把P1IFG=0,這可以解除事件發生的狀態,不然事件可能會被辨識為一直發生

沒有留言:

張貼留言