msp430f5529led燈閃爍
#include
int run=0;
int y,i;
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; //關(guān)閉看門狗
P8DIR |= BIT1;//設(shè)置LED燈
P3DIR |= BIT7;
P7DIR |= BIT4;
P6DIR |= BIT3;
P6DIR |= BIT4;
P3DIR |= BIT5;//從第一個依次往下是六個LED燈
P8OUT &=~ BIT1;//設(shè)置LED燈初始值
P3OUT &=~ BIT7;
P7OUT &=~ BIT4;
P6OUT &=~ BIT3;
P6OUT &=~ BIT4;
P3OUT &=~ BIT5;//從第一個依次往下是六個LED燈
P1IE = BIT2; //P1.2的IE,IES,IFG,設(shè)置中斷函數(shù)三連
P1IES |= BIT2;
P2IE = BIT3; //P2.3的IE,IES,IFG,設(shè)置中斷函數(shù)三連
P2IES |= BIT3;
_enable_interrupts(); //開啟全局中斷
for(;;) //無限循環(huán)
{
if(run) //如果按下了S1,則程序啟動
{
for(i=1;i<6000;i++){}
P8OUT ^= BIT1; //第一盞燈
for(i=1;i<6000;i++){}
P3OUT ^= BIT7;
for(i=1;i<6000;i++){}
P7OUT ^= BIT4;
for(i=1;i<6000;i++){}
P6OUT ^= BIT3;
for(i=1;i<6000;i++){}
P6OUT ^= BIT4;
for(i=1;i<6000;i++){}
P3OUT ^= BIT5;
}
else { //如果run=0,那就是沒按S1開始或者按了S3暫停,此時跑馬燈全部置0
P8OUT &=~ BIT1;//設(shè)置LED燈初始值
P3OUT &=~ BIT7;
P7OUT &=~ BIT4;
P6OUT &=~ BIT3;
P6OUT &=~ BIT4;
P3OUT &=~ BIT5;//從第一個依次往下是六個LED燈
}
}
}
#pragma vector=PORT1_VECTOR//(PORT1_VECTOR指的是P1口中斷源)
__interrupt void p_one_duan(void)
{
if(!(P1IN&BIT2)) //P1正的,則亮,不然就滅 即按下了S1就繼續(xù)
{
for(i=1;i<1000;i++){} //防抖動,看看一會后是不是還是S1在下面
if(!(P1IN&BIT2))
{
while(!(P1IN&BIT2));
run = 1;
}
P1IFG &=~ BIT2; //如果P1.2是震動的話,那就清零離開
}
P1IFG=0;
}
#pragma vector=PORT2_VECTOR//(PORT1_VECTOR指的是P1口中斷源)
__interrupt void p_two_duan(void)
{
if(!(P2IN&BIT3)) //P2.3,按鈕S3,是正的,則亮,不然就滅
{
for(i=1;i<1000;i++){}
if(!(P2IN&BIT3))
{
while(!(P2IN&BIT3));
run = 0;
}
P2IFG &=~ BIT3; ///P2.3,按鈕S3,是震動的話,那就清零離開
}
P2IFG=0;
}