📄 scankey.c
字号:
#include "includekey.h"
/*
row val
*/
sbit row0=P0^0;
sbit row1=P0^1;
sbit row2=P0^2;
sbit row3=P0^3;
sbit row4=P0^4;
sbit row5=P0^4;
sbit row6=P0^5;
sbit row7=P0^6;
/*
col val
*/
sbit col0=P2^7;
sbit col1=P2^6;
sbit col2=P2^5;
sbit col3=P2^4;
sbit col4=P2^3;
sbit col5=P2^2;
sbit col6=P2^1;
sbit col7=P2^0;
sbit col9=P1^4;
sbit col10=P1^3;
sbit col11=P1^2;
sbit col12=P1^1;
sfr rowline = 0x80;
sfr port1 = 0x90;
sfr colline = 0xA0;
sfr port3 = 0xB0;
#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
#define BIT3 0x08
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80
unsigned char code UnShifted[59][2] = {
0x1C, 'a',
0x32, 'b',
0x21, 'c',
0x23, 'd',
0x24, 'e',
0x2B, 'f',
0x34, 'g',
0x33, 'h',
0x43, 'i',
0x3B, 'j',
0x42, 'k',
0x4B, 'l',
0x3A, 'm',
0x31, 'n',
0x44, 'o',
0x4D, 'p',
0x15, 'q',
0x2D, 'r',
0x1B, 's',
0x2C, 't',
0x3C, 'u',
0x2A, 'v',
0x1D, 'w',
0x22, 'x',
0x35, 'y',
0x1A, 'z',
0x45, '0',
0x16, '1',
0x1E, '2',
0x26, '3',
0x25, '4',
0x2E, '5',
0x36, '6',
0x3D, '7',
0x3E, '8',
0x46, '9',
0x0E, '`',
0x4E, '-',
0x55, '=',
0x5D, '\\',
0x29, ' ',
0x54, '[',
0x5B, ']',
0x4C, ';',
0x52, '\'',
0x41, ',',
0x49, '.',
0x4A, '/',
0x71, '.',
0x70, '0',
0x69, '1',
0x72, '2',
0x7A, '3',
0x6B, '4',
0x73, '5',
0x74, '6',
0x6C, '7',
0x75, '8',
0x7D, '9',
};
/*
key vakue
*/
unsigned char code wh_keyvalue[5][8]={0x1c,0x32,0x21,0x23,0x24,0x2b,0x34,0x33,\
0x43,0x3b,0x42,0x4b,0x3a,0x31,0x44,0x4d,\
0x15,0x2d,0x1b,0x2c,0x3c,0x2a,0x1d,0x22,\
0x35,0x1a,0x45,0x16,0x1e,0x26,0x25,0x5a,\
0x2e,0x36,0x3d,0x5a,0x46,0x29,0x66,0x5a};
//////////////////////////////////////////////////////
/*
get key value
row out
col in
*/
unsigned char getkey(void)
{
unsigned char keyvalue=0,temp=0,row=0,col=0,count=0,i;
rowline = 0xFF;
colline = 0x00;
while(rowline == 0xff)
{
//wait for key down;
}
dmsec(50);
if (rowline != 0xff) // if a key is still down
{
//row check
rowline = 0xff;
for(i=0; i < 8; i++)
{
temp = rowline & (BIT0 << i);
if (temp == 0)
{
row = i;
break;
}
}
//col check
rowline = 0xff;
for(i=0; i < 8; i++)
{
colline = ~(BIT0 << i);
if (rowline != 0xff)
{
col = 7 - i;
break;
}
}
keyvalue = wh_keyvalue[row][col];
}
else
{
keyvalue = NOKEY;
}
// while(rowline != 0xff)
// {
// //wait for key up;
// }
return keyvalue;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -