msp430f5529led灯闪烁
扫描二维码
随时随地手机看文章
#include
int run=0;
int y,i;
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; //关闭看门狗
P8DIR |= BIT1;//设置LED灯
P3DIR |= BIT7;
P7DIR |= BIT4;
P6DIR |= BIT3;
P6DIR |= BIT4;
P3DIR |= BIT5;//从第一个依次往下是六个LED灯
P8OUT &=~ BIT1;//设置LED灯初始值
P3OUT &=~ BIT7;
P7OUT &=~ BIT4;
P6OUT &=~ BIT3;
P6OUT &=~ BIT4;
P3OUT &=~ BIT5;//从第一个依次往下是六个LED灯
P1IE = BIT2; //P1.2的IE,IES,IFG,设置中断函数三连
P1IES |= BIT2;
P2IE = BIT3; //P2.3的IE,IES,IFG,设置中断函数三连
P2IES |= BIT3;
_enable_interrupts(); //开启全局中断
for(;;) //无限循环
{
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;//设置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就继续
{
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;
}