?? keyboard.c
字號:
/************* P/S2 keyboard function*************/
/************* data P1^7,clock Int0 **************/
#include <ADUC812.h>
sbit kdata = P1^7;
/******************** key define *************/
unsigned char key_flag,key_vol;
unsigned char intcount=0;
unsigned char intnum = 9;
unsigned char kdd,kdd1,kdd2;
unsigned char decode(void);
extern void delayms (unsigned int n);
/************* key interrupt **********************/
void int0() interrupt 0
{
kdd >>= 1;
if(kdata == 1)
{
kdd = kdd|0x80;
}
intcount++;
if(intcount == intnum)
{
if(intcount == 9)
kdd1 = kdd;
{
intnum = 20;
}
if(intcount == 20)
{
kdd2 = kdd;
EX0 = 0;
key_flag = 0x01;
}
}
}
/**************** get key *********************/
unsigned char get_key(void)
{
unsigned char a;
a = decode();
key_flag = 0;
delayms(10);
IE0=0;
kdd = 0; kdd1 = 0; kdd2 = 0;
intcount = 0; intnum = 9;
return a;
}
/**************** key decode ********************/
unsigned char decode(void)
{
unsigned char a;
if(kdd1==0xe0 & kdd2==0x5a) // enter down //
{ return 0xff;
a='U';
return a;
}
else if(kdd1==0xe0 & kdd2==0xf0) // enter up //
{
a='N';
return a;
}
else
{ if(kdd2!=0xf0)
{return 0xff;
}
switch (kdd1)
{
case 0x70: a = 0;
break;
case 0x69: a = 1;
break;
case 0x72: a = 2;
break;
case 0x7a: a = 3;
break;
case 0x6b: a = 4;
break;
case 0x73: a = 5;
break;
case 0x74: a = 6;
break;
case 0x6c: a = 7;
break;
case 0x75: a = 8;
break;
case 0x7d: a = 9;
break;
case 0x71: a = '.';
break;
case 0x76: a = 'E'; // esc //
break;
case 0x66: a = 'C'; // clear //
break;
case 0x05: a = 'a'; // F1 //
break;
case 0x06: a = 'b';
break;
case 0x04: a = 'c';
break;
case 0x0c: a = 'd';
break;
case 0x03: a = 'e';
break;
case 0x0b: a = 'f';
break;
default : a = 'X';
}
}
return a;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -