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

📄 keyb.c

📁 C51编程
💻 C
字号:


#define key_port P4                 //与键盘连接的端口; P2.0~P2.3---->row 行
                                    //                  P2.4~P2.7---->colum 列
unsigned char test_kb(void);                  //检测键盘是否有键按下;
unsigned char get_key_value(void);          //取得键值;
void delayus(unsigned char); 
void delayms(unsigned char);               //延时()毫秒;

/*void PORT_Init(void);

void main (void) {

   unsigned char i=0,f=0;
   unsigned char a[16];

   // disable watchdog timer
   WDTCN = 0xde;
   WDTCN = 0xad;
	
   PORT_Init();
   
   LED=1;
   
   for(i=0;i<16;)
   {
	 if(test_kb()==1)
	 {a[i]=get_key_value();
	    i++;
	   }
   }

   while (1) {                            // spin forever
   }
}*/




unsigned char test_kb(void)                       //检测键盘是否有键按下;
{
   unsigned char temp,b;
   key_port=0x0f;
   delayus(1);
   if(key_port!=0x0f)
   {
      temp=key_port;
      delayms(20);                      //延时20ms后再次检测,以消除抖动;
      key_port=0x0f;
      if(key_port==temp)
       b=1;
      else b=0;
   }
   else b=0;
   return b;
}


unsigned char get_key_value(void)               //行反转法----取得键值;
{
   unsigned char temp,row,colum,key_value;
   unsigned char i[]={0,0,1,1,2,2,2,2,3};       //0001->0  0010->1  0100->2  1000->3;
   key_port=0xf;
   delayus(1);
   temp=key_port;
   temp=~temp;
   temp=temp&0xf;
   row=i[temp];                         //取得行号;
   key_port=0xf0;
   delayus(1);
   temp=~key_port;
   temp=temp>>4;
   colum=i[temp];                       //取得列号;
   key_value=row*4+colum;              //计算键值;
   while(test_kb())                    //等待,直到按键松开;
      delayms(10);
   return key_value;
}

void delayus(unsigned char us)
{
	while (us)
	{
	  _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
	  --us;
	}
}

void delayms(unsigned char ms)
{
    do
	{
	    delayus(250);
		delayus(250);
		delayus(250);
		delayus(250);		// 	 延时1ms;
		ms--;
	}
	while(ms!=0);
}

⌨️ 快捷键说明

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