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

📄 keyboard.c

📁 tmd
💻 C
字号:
/******************************************************************** 
TITLE:			KEYBOARD.c
AUTHOR:			GanGuoqiang
DISCRIPTION: 	KEYBOARD DETECST USING P0
DATE :			2008.11.23
***********************************************************************/
#include "reg51.h"
#include "COMMON.h"
//sbit KEYS_44=P0;
sbit  key1= P1^3;
sbit  key2= P1^4;
extern UART51sstring(char []);
extern	unsigned  char KEYNUM; 	// //externextern	 !!!定义时开ex,头文件不用,用时声明 ;变量在头文件ex内部不时,即使用时声明也出错	;头文件与c同时ex也错!
  void key();					 //DATAOVERFLOW 与ex无关
unsigned char key1_dispatch();
unsigned char key2_dispatch();
static unsigned char  ROW[4]={0xfe,0xfd,0xfb,0xf7};
static unsigned char LINE[4]={0xe0,0xd0,0xb0,0x70};
char SKEY[17]={'0','1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f'}; //static 
/******************************************************************** 

***********************************************************************/ 
  void key()
 {
 	static unsigned char i,rp;
	for(i=0;i<4;i++)
	{
		P0=0XFF;
		P0=ROW[i];
		delayms(1);
		rp=P0;
		switch(rp&0xf0)
		{
			//KEYNUM=-1;							   //mind default!
			case 0xe0:KEYNUM=i*4+1;break;
			case 0xd0:KEYNUM=i*4+2;break;
			case 0xb0:KEYNUM=i*4+3;break;
			case 0x70:KEYNUM=i*4+4;break;
			
		}
		}
 }
 unsigned char key_2()
 {
 	if(!key1)
		{
			delayms(1);
			if(!key1)
				return key1_dispatch();
		 }
 	if(!key2)
		{
			delayms(1);
			if(!key2)
				return key2_dispatch();
		 }

 }
 unsigned char key1_dispatch()
 {
 	#ifdef debugkey
 	UART51sstring("******************KEY 1 ENTERED********************\r\n",);
	#endif
 	return 1;
 }
  unsigned char key2_dispatch()
 {
 	#ifdef debugkey
 	UART51sstring("******************KEY 2 ENTERED********************\r\n",);
	#endif
 	return 2;
 }

⌨️ 快捷键说明

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