📄 fun.h
字号:
//定义端口寄存器
sfr P0M0 = 0X93;
sfr P0M1 = 0X94;
sfr P1M0 = 0X91;
sfr P1M1 = 0X92;
sfr P2M0 = 0X95;
sfr P2M1 = 0X96;
sfr P3M0 = 0Xb1;
sfr P3M1 = 0Xb2;
//定义P0口输出二进制状态码
const unsigned char led_bin[16] = {0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0};
//定义延时函数
void ms_delay(unsigned int t)
{
unsigned int i;
for (t; t > 0; t--) //外层循环t次
for (i = 110;i > 0; i--) //内层循环110次
;
}
//定义检测键盘函数
unsigned char query_key()
{
unsigned char temp, keycode;
keycode = 255;
P1 = 0xef; //将第一列置低
temp = P1;
temp &= 0x0f; //检测行线的值
//如果该列有按键按下,则p1不等于0x0f
switch (temp)
{
case 0x0e:
keycode = 0; //1行1列
break;
case 0x0d:
keycode = 4; //2行1列
break;
case 0x0b:
keycode = 8; //3行1列
break;
case 0x07:
keycode = 12; //4行1列
break;
default:
keycode = 255;
}
P1 = 0xdf; //将第二列置低
temp = P1;
temp &= 0x0f;//检测行线的值
//如果该列有按键按下,则p1不等于0x0f
switch (temp)
{
case 0x0e:
keycode = 1; //1行2列
break;
case 0x0d:
keycode = 5; //2行2列
break;
case 0x0b:
keycode = 9; //3行2列
break;
case 0x07:
keycode = 13; //4行2列
break;
default:
keycode = 255;
}
P1 = 0xbf; //将第三列置低
temp = P1;
temp &= 0x0f;//检测行线的值
//如果该列有按键按下,则p1不等于0x0f
switch (temp)
{
case 0x0e:
keycode = 2; //1行3列
break;
case 0x0d:
keycode = 6; //2行3列
break;
case 0x0b:
keycode = 10; //3行3列
break;
case 0x07:
keycode = 14; //4行3列
break;
default:
keycode = 255;
}
P1 = 0x7f; //将第四列置低
temp = P1;
temp &= 0x0f;//检测行线的值
//如果该列有按键按下,则p1不等于0x0f
switch (temp)
{
case 0x0e:
keycode = 3; //1行4列
break;
case 0x0d:
keycode = 7; //2行4列
break;
case 0x0b:
keycode = 11; //3行4列
break;
case 0x07:
keycode = 15; //4行4列
break;
default:
keycode = 255;
}
return keycode;
}
//定义点亮led函数
void showled(unsigned char n)
{
if (n != 255)
{ //如果有按键按下
P0 = led_bin[n];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -