久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: MSP430F5438A單片機的獨立鍵盤 [打印本頁]

作者: 吳曉京123    時間: 2017-8-12 18:22
標題: MSP430F5438A單片機的獨立鍵盤
本帖最后由 吳曉京123 于 2017-8-14 21:44 編輯

本程序是用獨立鍵盤切換流水燈樣式,


用到中斷來控制按鍵,源代碼如下:
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
  unsigned temp1;
  delay(20);
  if((P1IN&0x0f)!=0x0f)    //P1IN的值先跟0x0f與,
                                //再判斷是不是等于0X0f如果不等就執行下一步

  {
    temp1 = P1IFG;          //  P1IFG=0X00;
    if(temp1==0x01)
    {
      LED_State = 1;
    }
     else if(temp1==0x02)
    {
      LED_State = 2;
    }
     else if(temp1==0x04)
    {
      LED_State = 3;
    }
   else
   {
      LED_State = 0;
   }
  }
  P1IFG = 0x00;
}

這里只有這樣寫1中斷只能控制按鍵1,后面的按鍵都控制不了,所以我又加了一個while(1);循環,代碼如下:
while(1)
{
   if(LED_State == 1)
     lamp1();
   else if (LED_State == 2)
     lamp2();
   else if (LED_State == 3)
     lamp3();
    else
    {
          P2OUT=0x00;
          _NOP();
    }
}加這個循環的原因,我也不太清楚,我也是個初學者,

主要的部分就這樣了,接下來就是寫按鍵要切換的流水燈花樣了,


這里要說明一下,這個獨立按鍵是單片機上面自帶有的按鍵,不是像3x3,4x4矩陣鍵盤的按鍵,
下面是我的完整代碼:
#include<MSP430F5438A.h>
void delay();
void lamp1();
void lamp2();
void lamp3();
unsigned int  LED_State,a,b,j,k;
char LCD_a[]={0xFF,0x7E,0x3E,0x3C,0x0E,0x18,0x08};
void main()
{
        WDTCTL=WDTPW+WDTHOLD;
        P1DIR=0xf0;
        P1IE=0X0F;    //中斷使能寄存器
        P1IES=0X0F;    //中斷觸發邊沿選擇寄存器
        P1IFG=0X00;    //中斷標志寄存器
        _EINT();
while(1)
{
   if(LED_State == 1)
     lamp1();
   else if (LED_State == 2)
     lamp2();
   else if (LED_State == 3)
     lamp3();
    else
    {
          P2OUT=0x00;
          _NOP();
    }
}
}
void delay(int xms)

{
         unsigned int i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}


void lamp1()//按鍵1控制的流水燈
{
        
      unsigned char lcd;
        P2DIR=0XFF;
        lcd=0xfe;
        P2OUT=lcd;
        
        for(a=0;a<23;a++)
        {
                lcd<<=1;
                lcd|=1;
                P2OUT=lcd;
                if(P2OUT==0xff)       //判斷LCD是否移動到最左端
                {
                        lcd=0x7e;
                        P2OUT=lcd;
                }
                delay(500);
         }
}

void lamp2()     // 按鍵2控制的流水燈
{
        P2DIR=0XFF;
         for(b=0;b<23;b++)
        {
                P2OUT=0x55;     //10101010
                delay(500);
                P2OUT=0xAA;     //01010101
                delay(700);
        }
}
void lamp3()            // 按鍵2控制的流水燈
{
          P2DIR=0XFF;
        for(k=0;k<7;k++)
        {
                P2OUT=LCD_a[k];
                delay(500);
         }
}

#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
  unsigned temp1;
  delay(20);
  if((P1IN&0x0f)!=0x0f)    //P1IN的值先跟0x0f與,
                                //再判斷是不是等于0X0f如果不等就執行下一步

  {
    temp1 = P1IFG;          //  P1IFG=0X00;
    if(temp1==0x01)
    {
      LED_State = 1;
    }
     else if(temp1==0x02)
    {
      LED_State = 2;
    }
     else if(temp1==0x04)
    {
      LED_State = 3;
    }
   else
   {
      LED_State = 0;
   }
  }
  P1IFG = 0x00;
}











歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美激情久久久 | 99tv | 国产精品久久久久久久午夜片 | 欧美极品视频在线观看 | 天天av综合 | 91社区视频 | 国产精品毛片久久久久久 | 成人精品视频免费 | 久草福利 | 亚洲一区二区三区在线 | 国产精品乱码一二三区的特点 | 国产97视频在线观看 | 热99精品视频 | 91在线视频免费观看 | 天天综合网天天综合 | 日日骚网 | 欧美国产精品一区二区 | 玖玖视频 | 超碰av人人 | 看片国产| 久久久久久久久久久久久九 | 91视频一区二区 | 一区二区影视 | 在线观看国产视频 | 日本淫视频 | 一级片免费网站 | 久久久精品影院 | 日本电影网站 | 欧美日韩精品免费观看 | 亚洲一区二区三区桃乃木香奈 | 一区二区三区回区在观看免费视频 | 女同久久另类99精品国产 | 成人亚洲一区 | 午夜丁香视频在线观看 | 一区欧美 | 日韩视频在线观看中文字幕 | 精品欧美色视频网站在线观看 | 日韩三区| 亚洲精品www久久久 www.蜜桃av | 欧美 日韩 中文 | 亚洲一区国产精品 |