keyscay.h

来自「atmega16与lcd1604的的代码」· C头文件 代码 · 共 37 行

H
37
字号
/*............................................................*/ 
 //键盘扫描函数
 //输入无
 //输出无
 //备注:采用线反转法
 //uchar key_scay(void);
 uchar key_scay(void) 
  {
   uchar key;
   DDRD=0xF0;           //PD0-3为输入,PD4-7为输出,
   PORTD=0x0F;          //行线为1且内部上拉,列线为0
   
   if(PIND&0x08)        //第一行有键按下
     key=0;
   else if(PIND&0x04)   //第二行有键按下
     key=4;
   else if(PIND&0x02)   //第三行有键按下
     key=8;
   else if(PIND&0x01)   //第四行有键按下
     key=12;
   DDRD=0x0F;           //反转I/O口方向
   PORTD=0xF0;          //置行为低电平
   delay_nms(20);       //延迟消抖
   
   if(PIND&0x80)        //第一列有键按下
     key+=0;
   else if(PIND&0x40)   //第二列有键按下
     key+=1;
   else if(PIND&0x20)   //第三列有键按下
     key+=2;
   else if(PIND&0x10)   //第四列有键按下
     key+=3;
   DDRD=0xF0;
   PORTD=0x0F;
   return(key);
  }

⌨️ 快捷键说明

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