對於剛接觸MSP430的人, 最簡單的操作就是控制IO, 所以這篇就來介紹如何利用利用MSP430的IO來控制LaunchPad上面的LED.
範例程式如下:
首先, 我們看到的是WDTCTL的暫存器, 這是用來控制Watchdog的功能. Watchdog的功能可以看成一個計時器(timer), 當今天計時器倒數完後, 系統就會重新啟動(reboot), 所以在嵌入式系統中, 必須在Watchdog倒數結束前, 恢復倒數的時間, 否則系統將會重新啟動. 這個功能主要是用來避免系統因當機而停擺. 當系統當機時, Watchdog將不會被恢復倒數時間, 所以系統會重新啟動. 然而在我們範例中並不需要使用到這個功能, 所以我們把Watchdog的功能給關閉.
WDTCTL = WDTPW + WDTHOLD;
接著我們要設定Port1的每個腳位是輸出還是輸入, 這時候我們必須透過P1DIR這個暫存器來做設定(1則是輸出, 如果是0則是輸入). 0x41換成2進位則是 0100 0001, 表示P1.0跟P1.6為MSP430的輸出. 這樣我們就可以透過這兩個腳位來控制LED.
P1DIR |= 0x41;
再來則是輸出P1.0和P1.6的訊號, 利用P1OUT這個暫存器來做設定. 這邊利用XOR的特性, 讓每次程式跑到這行, P1.0和P1.6的輸出值會與上次相反, 達成燈亮或燈暗的情況.
P1OUT ^= 0x41;
最後, 因為程式執行的速度很快, 我們將無法分辨出燈的亮暗變化, 所以我們加入了一個do while迴圈來造成時間上的延遲. 當設定完輸出時, 必須要等待變數i從5000遞減到0, 因此達成延遲的效果.
volatile unsigned int i;
按照上面這些步驟, 如果你看到LaunchPad上面的兩顆LED燈在不斷的閃爍, 恭喜你! 已經成功完成學習LaunchPad的第一步了!
請先 登入 以發表留言。