?? key.c
字號:
// File Name: key.c
// Header: 得到鍵盤的鍵碼并將鍵碼顯示
// Author: Wang Xiaorong
// Date: 20070409
#define GO_OUT 10
unsigned char xdata KEYOUT _at_ 0xdfff;
unsigned char xdata KEYIN _at_ 0xefff;
unsigned char xdata LEDSEG _at_ 0x7fff;
unsigned char xdata LEDBIT _at_ 0xbfff;
unsigned char code KEYMAP[] =
{0X00,0,6,0X00,12,0X00,0X00,0X00,18};
unsigned char code LEDMAP[] =
{
0x3f, 0x06, 0x5b, 0x4f, 0x66,
0x6d, 0x7d, 0x07, 0x7f, 0x6f,0x00
};
unsigned char LEDBuf[6];
delay1ms()
{
unsigned char i;
for(i = 250; i > 0; i--);
for(i = 247; i > 0; i--);
}
display()
{
unsigned char i;
unsigned char outbit;
outbit = 0x01; // 從右邊開始顯示
for (i = 0; i < 6; i++)
{
LEDBIT = 0x00; // 關所有LED
LEDSEG = LEDMAP[LEDBuf[i]];
LEDBIT = outbit;
delay1ms();
outbit <<= 1; // 顯示下一位
}
}
unsigned char testKey()
{
KEYOUT = 0x00;
return(~KEYIN & 0x0f);
}
unsigned char getKey()
{
unsigned char outkey;
unsigned char inkey;
unsigned char i;
unsigned char keyNO;
while(1)
{
if(testKey())
{
display();
display();
if(testKey())
{
outkey = 0x01;
for(i = 0;i < 6;i++)
{
KEYOUT = ~outkey;
outkey <<=1;
inkey = ~KEYIN & 0x0f;
if(inkey)
{
keyNO = i + KEYMAP[inkey];
break;
}
}
while(testKey())
display();
return(keyNO);
}
}
else
display();
}
}
main()
{
unsigned char k;
while(1)
{
k = getKey();
LEDBuf[0] = k%10;
LEDBuf[1] = k/10;
LEDBuf[2] = GO_OUT;
LEDBuf[3] = GO_OUT;
LEDBuf[4] = GO_OUT;
LEDBuf[5] = GO_OUT;
display();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -