📄 keyscan.c.bak
字号:
#include<def.h>
#define SCANPORT P2
uint bdata keyres;
sbit key_0=keyres^0;
sbit key_1=keyres^1;
sbit key_2=keyres^2;
sbit key_3=keyres^3;
sbit key_4=keyres^4;
sbit key_5=keyres^5;
sbit key_6=keyres^6;
sbit key_7=keyres^7;
sbit key_8=keyres^8;
sbit key_9=keyres^9;
sbit key_p=keyres^10;
sbit key_flay =keyres^11;
sbit key_clear=keyres^12;
sbit key_store=keyres^13;
sbit key_add =keyres^14;
sbit key_cladd=keyres^15;
uint bdata keystatus;
sbit s_0=keystatus^0;
sbit s_1=keystatus^1;
sbit s_2=keystatus^2;
sbit s_3=keystatus^3;
sbit s_4=keystatus^4;
sbit s_5=keystatus^5;
sbit s_6=keystatus^6;
sbit s_7=keystatus^7;
sbit s_8=keystatus^8;
sbit s_9=keystatus^9;
sbit s_p=keystatus^10;
sbit s_flay =keystatus^11;
sbit s_clear=keystatus^12;
sbit s_store=keystatus^13;
sbit s_add =keystatus^14;
sbit s_cladd=keystatus^15;
uchar bdata keyres_long;
sbit key_point_long=keyres_long^0; //point长按
sbit key_store_long=keyres_long^1; //存储长按
//----------------------------------------按键扫描程序--------------------------------------------
uchar key_mcu()
{
uchar i,keydata;
//利用P2口做键盘扫描
SCANPORT=0Xfe; //初始状态
for(i=0;i<4;i++)
{
switch(SCANPORT)
{
case 0xee:s_0=1 ;break;
case 0xde:s_1=1 ;break;
case 0xbe:s_2=1;break;
case 0x7e:keydata=4 ;break;
case 0xed:keydata=5 ;break;
case 0xdd:keydata=6 ;break;
case 0xbd:keydata=7 ;break;
case 0x7d:keydata=8 ;break;
case 0xeb:keydata=9 ;break;
case 0xdb:keydata=10;break;
case 0xbb:keydata=11;break;
case 0x7b:keydata=12;break;
case 0xe7:keydata=13;break;
case 0xd7:keydata=14;break;
case 0xb7:keydata=15;break;
case 0x77:keydata=16;break;
default:keydata=0;//无按键按下
}
SCANPORT<<=1;
SCANPORT|=0x01;
}
return(keydata);
}
void key_ser()
{
}
void keydeal()
{
keyres=0;
keyres_long=0;
if(keybit==0)
{
key_mcu(); //调用单片机扫描键盘
}
else
{
key_ser(); //调用串行扫描
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -