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

📄 按键.c

📁 cpu采用扫描方式进行按键查询
💻 C
字号:
void Init_Port(void)
{
  //将P6端口所有的管脚在初始化的时候设置为输入方式
  P6DIR=0;
  //将P6端口所有的管脚设置为一般I/O端口
  P6SEL=0;
  //将P6.3 P6.4设置为输出方向
  P6DIR|=BIT3;
  P6DIR|=BIT4;
  //先输出低电平
  P6OUT=0x00;
  return;
} 

int KeyScan(void)  
{
  int np65,np66,np67;
  int keyvalue=0;
  for(;;)
  { 
    //读取各个管脚的状态
    np65=P6IN&BIT5;
    np66=(P6IN&BIT6)>>1;
    np67=(P6IN&BIT7)>>2;
    //是否有键按下
    if(np65==0||np66==0||np67==0)
    {
      //有键按下
      break;
    }
  }
    delay();  //延迟
    //读取各个管脚的状态
    np65=P6IN&BIT5;
    np66=(P6IN&BIT6)>>1;
    np67=(P6IN&BIT7)>>2;
    //是否有键按下
    if(np65==0||np66==0||np67==0)
    {
      //有键按下
      keyvalue=keyprocess();
    }
    else return -1;
    return keyvalue;
}

///延时程序
void delay(void)
{
 int i;
 for(i=100;i--;i>0); 
}

//按键分析程序
int keyprocess(void)
{
 int np65,np66,np67;
 int keyvalue=0;
 //P6.3输出低电平
 P6OUT&=~(BIT3); 
 np65=P6IN&BIT5;
 if(np65==0) keyvalue=1;
 np66=(P6IN&BIT6)>>1;
 if(np66==0) keyvalue=3;
 np67=(P6IN&BIT7)>>2;
 if(np67==0) keyvalue=5;
 //P6.4输出低电平
 P6OUT&=~(BIT4); 
 np65=P6IN&BIT5;
 if(np65==0) keyvalue=2;
 np66=(P6IN&BIT6)>>1;
 if(np66==0) keyvalue=4;
 np67=(P6IN&BIT7)>>2;
 if(np67==0) keyvalue=6;
 
 P6OUT=0x00;
 //读取各个管脚的状态
 np65=P6IN&BIT5;
 np66=(P6IN&BIT6)>>1;
 np67=(P6IN&BIT7)>>2;
 for(;;)
 { 
  if(np65==1&&np66==1&&np67==1)
   {
    //等待松开按键
    break;
   }
  }
  return keyvalue;
} 
 
   
   

⌨️ 快捷键说明

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