free性丰满hd毛多多,久久综合给合久久狠狠狠97色69 ,欧美成人乱码一区二区三区,国产美女久久久亚洲综合,7777久久亚洲中文字幕

0
問(wèn)答首頁(yè) 最新問(wèn)題 熱門(mén)問(wèn)題 等待回答標(biāo)簽廣場(chǎng)
我要提問(wèn)

單片機(jī)

msp430單片機(jī)實(shí)現(xiàn)常按鍵和短按鍵加去抖功能

通過(guò)P1口的中斷開(kāi)啟定時(shí)器,然后利用定時(shí)器中斷不斷掃描相應(yīng)的端口狀態(tài),判斷按鍵的

//定時(shí)器設(shè)置

void TimerA1Init()

{   

  _UINT  data = 0 ;

  TA1CTL = data ;//clear all ,diaable interrupt , claer ifg

  TA1CTL |= TASSEL__ACLK | ID_0 | TACLR  ;  // ACLK, stop mode, ,div:1 ,clear TAR  

  //TA0CTL |= MC__UP ;//啟動(dòng)定時(shí)器  

  TA1CCTL0 = CCIE ; //ccr0  比較中斷允許

  TA1CCR0 = 327 ;  //ccr0 compare mode , ie disable , ifg clear  

}

//P1端口中斷程序

#pragma vector = PORT1_VECTOR

__interrupt void Port1ADISR( void )

{

  P1IFG &= 0x0f;

  switch(P1IFG)

  {

    case Key_Sel:

      TA1CTL |= MC__UP;   //啟動(dòng)定時(shí)器

      Key_Tmp = Key_Sel;

      break;

    case Key_Menu:

      TA1CTL |= MC__UP;   //啟動(dòng)定時(shí)器

      Key_Tmp = Key_Menu;

      break;

  }

  P1IFG &= 0x00;

}

/***********************************************************

函數(shù)名稱(chēng):__interrupt void Timer_A1_Count (void)

函數(shù)功能:

入口參數(shù):無(wú)

出口參數(shù):無(wú)

備   注:

***********************************************************/

#pragma vector = TIMER1_A0_VECTOR

__interrupt void Timer_A1_Count(void)

{  

  static _UINT i = 0;

  _UBYTE P1_Value;

  P1_Value = P1IN;

  P1_Value &= 0x06;

  switch(Key_Tmp)

  {

  case Key_Menu:

    {

      if( (P1_Value & BIT2) == 0)    //按鍵按下

      {

        i++;

        if(i >= 300)   //常按鍵處理

        {

          BUZZER_ON;

          i = 0;

          //定時(shí)器停止

          TimerA1_Stop;

        }

      }

      else if((P1_Value & BIT2) != 0)//按鍵釋放

      {

        if( (i >= 5) && (i < 300) )  //短按鍵

        {

          LCD_B1_RT_ON;

          TimerA1_Stop;

          i= 0;

        }

        else

        {

          i = 0;  //否則認(rèn)為是抖動(dòng);

        }

      }

      break;

    }

  case Key_Sel:

    {

      if( (P1_Value & BIT1) == 0)       //按鍵按下

      {

        i++;

      }

      else if( (P1_Value & BIT1) != 0)  //按鍵釋放

      {

        if(i > 5)                       //短按鍵處理

        {

          LCD_B1_RT_OFF;

          TimerA1_Stop;

          i = 0;

        }

        else

        {

          i = 0;   //否則認(rèn)為是抖動(dòng);

        }

      }

      break;

    }

  }

}

提問(wèn)者:liuanzhong 地點(diǎn):- 瀏覽次數(shù):1515 提問(wèn)時(shí)間:10-26 13:55
我有更好的答案
提 交
8條回答
60user146 05-22 20:46
這還是用的延時(shí)吧
法規(guī)處發(fā) 05-24 21:01
這個(gè)按鍵還是掃描的好。
沈文強(qiáng)66 05-22 17:46
中斷可能沒(méi)有消抖會(huì)誤觸發(fā)。
tan8561 05-25 09:53
軟件實(shí)現(xiàn)確實(shí)比較簡(jiǎn)單。
60user176 05-23 20:54
這是消抖的程序看著好繁瑣。
xixunled 05-19 21:53
不是都是延時(shí)消抖嗎
學(xué)生物的程序猿 05-19 14:10
怎么還有中斷能夠去抖
pfdos 05-24 06:56
msp430的按鍵用延時(shí)都可以實(shí)現(xiàn)。
撰寫(xiě)答案
提 交
1 / 3
1 / 3
相關(guān)單片機(jī)
具有音調(diào)控制的單片機(jī)立體聲前置放大器
用于單片機(jī)與電子裝置中的開(kāi)關(guān)電源
單片機(jī)軟硬件復(fù)位的條件都有啥
電動(dòng)機(jī)的單片機(jī)控制
單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航