#include <msp430x14x.h>
#include "BoardConfig.h"
void DelayMs(unsigned int ms)
{
unsigned char i;
while(--ms)
{
for(i=110;i>0;--i);
}
}
void main(void)
{
BoardConfig(0xF7);
// BoardConfig(0xb8);
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
//P3DIR |= BIT3; // Set P3.4 to output direction
P2DIR |= 0xff;
unsigned char i;
for (;;)
{
for(i=0x01;i<0x80;i<<=1)
{
P2OUT = ~i;
//WDTCTL = WDTPW + 0x0d;
DelayMs(100);
}
for(i=0x80;i>0x00;i>>=1)
{
P2OUT = ~i;
//WDTCTL = WDTPW + 0x0d;
DelayMs(100);
}
}
}
/////////////////////////////////////////////////////////////////
//用軟件定時使發光二級管閃爍。
#include <msp430x14x.h>
void main (void)
{
unsigned int i;
WDTCTL=WDTPW+WDTHOLD; // 關看門狗
P3DIR |= 0X10; // P3.4作輸出
while(1)
{
i=50000;
P3OUT ^= 0X10;//低電平燈亮
while(i--); // 軟件定時
}
}
/////////////////////////////////////////////////////////////////////////////////////////
//按一次按鍵,對應的發光二極管狀態改變一次。
#include <msp430x14x.h>
#include "BoardConfig.h"
void main(void)
{
BoardConfig(0xf7);
WDTCTL=WDTPW+WDTHOLD;
P2DIR = 0XfF;
P2OUT = 0Xff;
P1OUT = 0xff;
P1DIR = 0xf0 ; // All pins but button to output
P1IES = 0x0f; // Button int on falling edge
P1IFG = 0;
P1IE = 0x0f; // enable P1.0--P1_3 interrupt
_EINT(); // 開總中斷
while(1)
_BIS_SR(LPM4_bits); // 進入低功耗模式4
}
#pragma vector = PORT1_VECTOR
__interrupt void PORT1_ISR(void) // 鍵盤中斷
{
unsigned int i;
unsigned char temp;
temp = P1IFG;
for(i=0;i<0x1fff;i++); // 消抖
if((P1IN&temp)==(!temp))
{
switch(temp)
{
case 1: P2OUT ^=0X01;break; //P4.4狀態改變,即LED1狀態改變
case 2: P2OUT ^=0X02;break; //P4.4狀態改變,即LED2狀態改變
case 4: P2OUT ^=0X04;break; //P4.4狀態改變,即LED2狀態改變
case 8: P2OUT ^=0X08;break; //P4.4狀態改變,即LED2狀態改變
}
}
P1IFG = 0; // 清除中斷請求位
}