?? key.c
字號:
#include "..\inc\key.h"
#include "..\inc\led.h"
#include "..\inc\speaker.h"
/*
4X4鍵盤的掃描
*/
U16 Scan_4X4Key(void)
{
U16 keytmp=0;
rPDATG=0xef; //第一列
if((rPDATF&0x1e0)!=0x1e0)
{
keytmp=(rPDATF&0x1e0);
Set_Speaker();
sysUtilsUSecDelay(20000);
Clr_Speaker();
if((rPDATF&0x1e0)!=0x1e0)
{
while((rPDATF&0x1e0)==keytmp)
sysUtilsUSecDelay(200);
return ((rPDATG&0xf0)|(keytmp)>>5);
}
}
rPDATG=0xdf; //第二列
if((rPDATF&0x1e0)!=0x1e0)
{
keytmp=(rPDATF&0x1e0);
Set_Speaker();
sysUtilsUSecDelay(20000);
Clr_Speaker();
if((rPDATF&0x1e0)!=0x1e0)
{
while((rPDATF&0x1e0)==keytmp)
sysUtilsUSecDelay(200);
return ((rPDATG&0xf0)|(keytmp)>>5);
}
}
rPDATG=0xbf; //第三列
if((rPDATF&0x1e0)!=0x1e0)
{
keytmp=(rPDATF&0x1e0);
Set_Speaker();
sysUtilsUSecDelay(20000);
Clr_Speaker();
if((rPDATF&0x1e0)!=0x1e0)
{
while((rPDATF&0x1e0)==keytmp)
sysUtilsUSecDelay(200);
return ((rPDATG&0xf0)|(keytmp)>>5);
}
}
rPDATG=0x7f; //第四列
if((rPDATF&0x1e0)!=0x1e0)
{
keytmp=(rPDATF&0x1e0);
Set_Speaker();
sysUtilsUSecDelay(20000);
Clr_Speaker();
if((rPDATF&0x1e0)!=0x1e0)
{
while((rPDATF&0x1e0)==keytmp)
sysUtilsUSecDelay(200);
return ((rPDATG&0xf0)|(keytmp)>>5);
}
}
return 0x8000;//have no key
}
/*
4個獨立鍵盤掃描
*/
U16 Scan_4Key(void)
{
U8 keytmp;
//掃描獨立的4個鍵
if((rPDATG&0xf)!=0x0f)
{
keytmp=(rPDATG&0xf);
Set_Speaker();
sysUtilsUSecDelay(20000);
Clr_Speaker();
if((rPDATG&0xf)!=0x0f)
{
while((rPDATG&0xf)==keytmp)
sysUtilsUSecDelay(200);
return (keytmp);
}
}
return 0x8000;//have no key
}
//
void Test_key(void)
{
U16 i;U8 show=0;
printf( "\nKey Test\n" ) ;
printf( "Please press buttons and see what happen\n" ) ;
printf( "Press ESC key to exit!\n\n" ) ;
while(!( kbhit() && (getkey()==ESC_KEY)))//have data and esc key jump out
{
i=Scan_4X4Key();
if(i!=0x8000)//have key
{
switch(i)
{
case 0xEE://first row
show=1;
//printf("Key1 \n");
break;
case 0xDE:
show=2;
//printf("Key2 \n");
break;
case 0xBE:
show=3;
//printf("Key3 \n");
break;
case 0x7E:
show=4;
//printf("Key4 \n");
break;
case 0xED://second row
show=5;
//printf("Key5 \n");
break;
case 0xDD:
show=6;
//printf("Key6 \n");
break;
case 0xBD:
show=7;
//printf("Key7 \n");
break;
case 0x7D:
show=8;
//printf("Key8 \n");
break;
case 0xEB://third row
show=9;
//printf("Key9 \n");
break;
case 0xDB:
show=10;
//printf("Key10 \n");
break;
case 0xBB:
show=11;
//printf("Key11 \n");
break;
case 0x7B:
show=12;
//printf("Key12 \n");
break;
case 0xE7://forth row
show=13;
//printf("Key13 \n");
break;
case 0xD7:
show=14;
//printf("Key14 \n");
break;
case 0xB7:
show=15;
//printf("Key15 \n");
break;
case 0x77:
show=16;
//printf("Key16 \n");
break;
}
Show_Led(0,show,0);
}
i=Scan_4Key();
if(i!=0x8000)
{
switch(i)
{
case 0x0E:
show=17;
//printf("Key17 \n");
break;
case 0x0D:
show=18;
//printf("Key18 \n");
break;
case 0x0B:
show=19;
//printf("Key19 \n");
break;
case 0x07:
show=20;
//printf("Key20 \n");
break;
}
Show_Led(0,show,0);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -