4x4.c

来自「该程序源代码是以C编写的4X4键盘程序,仅供参考用..」· C语言 代码 · 共 79 行

C
79
字号
#include<reg51.h>
void delay(void);
unsigned char checkkey(void);
unsigned char key(void);

void main()
{
 unsigned char code table[]={0x28,0xeb,0x32,0x62,0xe1,0x64,0x24,0xea,0x20,0x60,0xA0,0x25,0x3C,0x23,0x34,0xB4};  //0 to F
 unsigned char m;

 m=0;
 P2=0xff;
 while(1)
 {
   if(checkkey()!=0)
   {
    delay();
	if(checkkey()!=0)
	{
	  m=key();
	  }
	}
  P0=table[m];
  }
 }


unsigned char checkkey(void)
{
  unsigned char n;
  P3=0xf0;
  n=P3;
  return(~n&0xf0);
  }


unsigned char key(void)
{
 unsigned char i;
 unsigned char k;
 unsigned char n;
 unsigned char temp;
  
 i=0xfe;
 n=5;
 do
 {
  P3=i;
  temp=~P3&0xf0;
  i=(i<<1)|0x01;
  }
  while((--n!=0)&&(temp==0));

   if(temp!=0)
   {
	 if(~P3&0x80)k=16-4*n;
	 if(~P3&0x40)k=16-4*n+1;
	 if(~P3&0x20)k=16-4*n+2;
	 if(~P3&0x10)k=16-4*n+3;
	 P3=0xf0;
	 
     do
	  {
	   ;
	   }while(~P3&0xf0);
	}
	return(k);
 }

 void delay(void)
 {
   unsigned char j;
   unsigned char k;

   for(j=20;j>0;j--)
   for(k=250;k>0;k--);
   }
 
  

⌨️ 快捷键说明

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