📄 keyboard.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 + -