📄 key.c
字号:
#include <AT89X51.h>
#include <intrins.H>
/*
_____
___________P2.4__| |
| ________P2.5__| AND |____INT0
| | _____p2.6__| |
| | | __p2.7__|_____|
p1.3__|__|__|__|
p1.2__|__|__|__|
p1.1__|__|__|__|
p1.0__|__|__|__|
*/
void key_delay(char); //键盘延时
char key(void); //键盘返回键值程序
void nokey(void); //防止误操作
//char number(void);
char key(void)
{unsigned char a;
unsigned char key=0,i;
TR0=0;
P2=0xff;_nop_();_nop_();
for(i=0;i<=3;i++)
{
P1=~(0x01<<i);
key_delay(1);
a=P2&0xf0;
if(a==0xe0)
{ key=(i*4)+4; break;}
else if(a==0xd0)
{ key=(i*4)+3; break;}
else if(a==0xb0)
{ key=(i*4)+2; break;}
else if(a==0x70)
{ key=(i*4)+1; break;}
else ;
}
if(key>16||key<1) key=255;
TR0=1;
return key;
}
char number(void)
{char x;
x=key();
if(x==1) x=7;
else if(x==2) x=8;
else if(x==3) x=9;
else if(x==5) x=4;
else if(x==6) x=5;
else if(x==7) x=6;
else if(x==9) x=1;
else if(x==10) x=2;
else if(x==11) x=3;
else if(x==13) x=0;
else x=255;
return x;}
void nokey(void) //防止连操作
{unsigned char i;
P1=0x00;P2=0xff;
key_delay(10);
i=P2&0xf0;
while(i!=0xf0)
{ P1=0x00;P2=0xff;
key_delay(10); i=P2&0xf0;} //取P2高四位
}
void key_delay(char x)
{char i=10;
for(;x>0;x--)
{i=10; while((i--)>0) _nop_();}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -