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

📄 2geioshibie.c

📁 2个IO口识别6个按键
💻 C
字号:
#include <reg52.h>
#define uchar unsigned char
sbit IO1=P1^6;
sbit IO2=P1^7;
uchar keybuf,keydat;
bit bkeyok;
void delay_us(unsigned int n)
{
  while(--n);
}
void delay_ms(unsigned int n)
{
  do
  {
    delay_us(1000);
  }
  while(--n);
}
bit scan_key(void)
{
   uchar tempkey;
   IO1=1;
   IO2=1;
   if(!IO1)
   {
     if(!IO2)
	    tempkey=3;
	  else
	     tempkey=2;
   }
   else
   {
     if(!IO2)
	 tempkey=1;
	 else
	 {
	   IO1=0;
	   if(!IO2)
	   {
	     IO1=1;

		 IO2=0;

		 if(!IO1)

		 tempkey=4;

		   else
		 tempkey=6;
	   }
	   else
	   {
	     IO1=1;
		 IO2=0;
		 if(!IO1)
		    tempkey=5;
	      else
		   	 tempkey=0;

	   }
	 }
   }
   IO1=1;
   IO2=1;
   if((keybuf!=0)&&(keybuf==tempkey))
   {
     bkeyok=1;
	 keydat=tempkey;
   }
   keybuf=tempkey;
   teturn(bkeyok);
}
uchar read_key(void)
{
  bkeyok=0;
  return(keydat);
}
void doanthing(uchar key)
{
  //按键处理只有按键并正确消抖时才会进入,功能自己随便写
}
void main(void)
{
  while(1)
  {
    if(scan_key())
	doanthing(read_key());
	delay_ms(10);
  }
}

⌨️ 快捷键说明

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