📄 keyboard.c
字号:
/**************************************************************************
File Name: keyboard.c
Author: liao xu ming
Created: 2007/3/23
Modified: NO
Revision: 1.0
***************************************************************************/
#include"keyborad.h"
#include"clock.h"
#define KEY_PORT P1
void Delay_Ms2(uchar i)
{ uchar j;
for(;i>0;i--)
for(j=125;j>0;j--);
}
uchar Kbscan(void)
{ uchar sccode; //行输出
uchar recode; // 列输入
KEY_PORT=0xf0; //有键按下的那一行列都为0,取反后为1
if((KEY_PORT&0xf0)!=0xf0) //条件成立=有键按下 //1=0x11; 2=0x21; 3=0x41; 4=0x81;
{ //5=0x12; 6=0x22; 7=0x42; 8=0x82;
Delay_Ms2(10); //去抖动 延时 //9=0x14; a=0x24; b=0x44; c=0x84
if((KEY_PORT&0XF0)!=0XF0) //d=0x18; e=0x28; f=0x48; 0=0x88
{
sccode=0xfe;
while((sccode&0x10)!=0)
{
KEY_PORT=sccode;
if((KEY_PORT&0xf0)!=0xf0)
{
recode=(KEY_PORT&0xf0)|0x0f;
KEY_PORT=0xf0;
while((KEY_PORT&0XF0)!=0XF0){};//等待按键放开
LCD_LIGHT=0; //开LCD 的背光灯
LCD_LIGHT_FLAG=1; //LCD背光灯开标志
count_50ms=0; //LCD背光灯开启计时
return ((~sccode)+(~recode));
}
else
{
sccode=(sccode<<1)|0x01;
}
}//end while
}//end if two
}//end if first
return(KEY_NOTHING);
}//end Kbscan
unsigned char Keyboard(void)
{ unsigned char returnkey;
unsigned char keytemp;
keytemp=Kbscan();
switch(keytemp)
{
case 0x11: returnkey=DIV; break;
case 0x21: returnkey=EQUAL; break;
case 0x41: returnkey=ZERO; break;
case 0x81: returnkey=KEY_FUNCTION;break;
case 0x12: returnkey=MUL; break;
case 0x22: returnkey=THREE; break;
case 0x42: returnkey=TWO; break;
case 0x82: returnkey=ONE; break;
case 0x14: returnkey=DEC; break;
case 0x24: returnkey=SIX; break;
case 0x44: returnkey=FIVE; break;
case 0x84: returnkey=FOUR; break;
case 0x18: returnkey=ADD; break;
case 0x28: returnkey=NINE; break;
case 0x48: returnkey=EIGHT; break;
case 0x88: returnkey=SEVEN; break;
case KEY_NOTHING: returnkey=KEY_NOTHING; break;
default: break; // returnkey=returnkey;
}
return returnkey;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -