📄 keyscan.c
字号:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar keynum;
uchar b,a;
uint k;
uchar num;
uint keyscan();
void delay_ms(uint );
void main()
{
P0=0xff;
while(1)
{
keynum=keyscan();
P0=~keynum;
}
}
uint keyscan()
{
P1=0x0f;
b=P1;
b&=0x0f;
if(b!=0x0f)
{
delay_ms(75);
b=P1;
b&=0x0f;
if(b!=0x0f)
{
P1=0xf0;
a=P1;
a&=0xf0;
a|=b;
switch(a)
{
case(0xee): k=1;break;
case(0xed): k=2;break;
case(0xeb): k=3;break;
case(0xe7): k=4;break;
case(0xde): k=5;break;
case(0xdd): k=6;break;
case(0xdb): k=7;break;
case(0xd7): k=8;break;
case(0xbe): k=9;break;
case(0xbd): k=10;break;
case(0xbb): k=11;break;
case(0xb7): k=12;break;
case(0x7e): k=13;break;
case(0x7d): k=14;break;
case(0x7b): k=15;break;
case(0x77): k=16;break;
}
// P1=0x0f;
// while ((P1&0x0f)!=0x0f); //松手检测
}
}
return k;
}
//延时子程序,参数z为所需的 ms 数
void delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -