⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyh.txt

📁 基于msp430单片机波形发生器(正弦波)
💻 TXT
字号:


unsigned char nP10,nP11,nP12,nP13;
unsigned char key_Flag;
unsigned char key_val;
void init_Port(void)
{
   //将P1所有的管脚设置输入方式
  P1DIR=0x00;
  P1SEL=0x00;
  P1DIR |=BIT0;
  P1DIR |=BIT1;
  P1DIR |=BIT2;
  P1DIR |=BIT3;
  //输出低电平
  P1OUT=0X00; 
  //将中断寄存器清零
  P1IE=0;
  P1IES=0;
  P1IFG=0x00;
  //中断使能 下降沿
  P1IE|=BIT4;
  P1IES|=BIT4;
  P1IE|=BIT5;
  P1IES|=BIT5;
  P1IE|=BIT6;
  P1IES|=BIT6;
  P1IE|=BIT7;
  P1IES|=BIT7;
  _EINT();//打开中断
  
}
void Delay(void)
{
   int i;
   for (i=1200;i>0;i--);
}
int KeyProcess(void)
{
  
    //key_val=0;
   // key_Flag=0;
   //P1.4输出低
   P1OUT&=~(BIT0);
   P1OUT|=BIT1;
   P1OUT|=BIT2;
   P1OUT|=BIT3;
   nP10=P1IN & BIT4;
   if (nP10==0) key_val=0;
   nP11=(P1IN &BIT5)>>1;
    if (nP11==0)key_val=1;
   nP12=(P1IN &BIT6)>>2;
    if (nP12==0) key_val=2;
   nP13=(P1IN &BIT7)>>3;
    if (nP13==0) key_val=3;
     
    
    //P1.5输出低电平
   P1OUT|=(BIT0);
   P1OUT&=~BIT1;
   P1OUT|=BIT2;
   P1OUT|=BIT3;
    nP10=P1IN & BIT4;
   if (nP10==0) key_val=4;
   nP11=(P1IN &BIT5)>>1;
    if (nP11==0) key_val=5;
   nP12=(P1IN &BIT6)>>2;
    if (nP12==0) key_val=6;
   nP13=(P1IN &BIT7)>>3;
    if (nP13==0) key_val=7;
    
    
    
    //P1.6输出低电平
    P1OUT&=~(BIT2);
   P1OUT|=BIT0;
   P1OUT|=BIT1;
   P1OUT|=BIT3;
    nP10=P1IN & BIT4;
   if (nP10==0) key_val=8;
   nP11=(P1IN &BIT5)>>1;
    if (nP11==0) key_val=9;
   nP12=(P1IN &BIT6)>>2;
    if (nP12==0) key_val=10;
   nP13=(P1IN &BIT7)>>3;
    if (nP13==0) key_val=11;
    
    
    //P1.7输出低电平
    P1OUT&=~(BIT3);
   P1OUT|=BIT0;
   P1OUT|=BIT1;
   P1OUT|=BIT2;
    nP10=P1IN & BIT4;
   if (nP10==0) key_val=12;
   nP11=(P1IN &BIT5)>>1;
    if (nP11==0) key_val=13;
   nP12=(P1IN &BIT6)>>2;
    if (nP12==0) key_val=14;
   nP13=(P1IN &BIT7)>>3;
    if (nP13==0) key_val=15;
    
    P1OUT =0X00;//恢复以前值
    //读取个管脚状态
    nP10=P1IN& BIT4;
    nP11=(P1IN& BIT5)>>1;
    nP12=(P1IN& BIT6)>>2;
    nP13=(P1IN& BIT7)>>3;
       while (nP10==1 && nP11==1 && nP12==1 && nP13==1&&key_Flag == 0)
       {
          //等待松开按键
        key_Flag =1;
       }
    
  return key_val;
}


/*int keyScan(void)
{
   for(;;)
   {
      //读取各管角状态
     nP10=P1IN&BIT0;
     nP11=(P1IN&BIT1)>>1;
     nP12=(P1IN&BIT2)>>2;
     nP13=(P1IN&BIT3)>>3;
     //是否有键按下
     if(nP10==0||nP11==0||nP12==0||nP13==0)
     {
         //有键按下,进行键盘处理
         key_val=KeyProcess();
     }
     else return -1;//没输入
     
     return  key_val;
   }
}*/

#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR()
{
   //P1IFG=0x00;
   //Delay();
  // KeyProcess();
   if(P1IFG&BIT4)
   {
      P1IFG&=~(BIT4);
      Delay();
     KeyProcess();
      
   }
      if(P1IFG&BIT5)
   {
      P1IFG&=~(BIT5);
            Delay();
       KeyProcess();
      
   }
      if(P1IFG&BIT6)
   {
      P1IFG&=~(BIT6);
      Delay();
      //if(key_Flag == 1)
     // {
         KeyProcess();
     // }
   }
      if(P1IFG&BIT7)
   {
      P1IFG&=~(BIT7);
      Delay();
      KeyProcess();
      //if(key_Flag == 1)
      //{
        // key_val=KeyProcess();
      //}
   }
   
   
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -