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,這可以解除事件發生的狀態,不然事件可能會被辨識為一直發生
沒有留言:
張貼留言