当前位置:首页 > 技术学院 > 技术前线
[导读]MSP430 F5529的按钮控制led灯亮灭程序代码——中断写法——S1 S3控制跑马灯

#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;

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭