×
单片机 > 单片机程序设计 > 详情

msp430实现按键一次加一,这里实现的是按一次顺序灯亮

发布时间:2020-08-27 发布时间:
|

使用msp430f5529a,,seed公司开发的开发板。如果你的也是直接下载程序即可。只贴程序。


#include

int sum=0,num=0;

void main(void)

{


  WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT

  P1DIR=0XFF;

  P1OUT=0X00;

  P2OUT|=BIT2;

  P2REN|=BIT2;

  P2IES|=BIT2;

  P2IE|=BIT2;

  P2IFG=0X00;

  P8DIR|=BIT1;

  __enable_interrupt();//开总中断

  while(1){

      num=sum%5;

      switch(num){

      case 0:P1OUT=BIT1;break;

      case 1:P1OUT=BIT2;break;

      case 2:P1OUT=BIT3;break;

      case 3:P1OUT=BIT4;break;

      case 4:P1OUT=BIT5;break;

      }


  }


}

#pragma vector=PORT2_VECTOR

  __interrupt void PORT2_ISR(void){

     volatile unsigned long int i;//volatile关键字是必须使用的,如果不加会被编译器优化而不能执行

           if((P2IN&0xff)!=0xff){

               for(i=10000;i>0;i--);//如果i太大会显得不灵敏,自己可以调节一下

               if((P2IN&0xff)!=0xff){//if再次判断

                   if(P2IFG&BIT2){//如果是按键按下则sum++,并软件清楚中断标志

                            sum++;

                            P2IFG=0X00;

                        }

               }

              while(!(P2IN&BIT2));//等待被按下的过程

               for(i=12000;i>0;i--);//松开按键去抖动

           }

  }



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式