📄 keyscan.lst
字号:
C51 COMPILER V8.05a KEYSCAN 05/17/2008 09:11:46 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE KEYSCAN
OBJECT MODULE PLACED IN keyscan.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE keyscan.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<def.h>
2 #if board==finishboard
#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_point=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_point=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 store_cyc;
uchar point_cyc;
//----------------------------------------按键扫描程序--------------------------------------------
uint key_mcu()
{
uchar i;
uint keystatusl;
keystatusl=0;
//利用P2口做键盘扫描
SCANPORT=0Xfe; //初始状态
for(i=0;i<4;i++)
{
switch(SCANPORT)
C51 COMPILER V8.05a KEYSCAN 05/17/2008 09:11:46 PAGE 2
{
case 0xee:keystatusl=0x0001;break; //0
case 0xde:keystatusl=0x0002;break; //1
case 0xbe:keystatusl=0x0004;break; //2
case 0x7e:keystatusl=0x0008;break; //3
case 0xed:keystatusl=0x0010;break; //4
case 0xdd:keystatusl=0x0020;break; //5
case 0xbd:keystatusl=0x0040;break; //6
case 0x7d:keystatusl=0x0080;break; //7
case 0xeb:keystatusl=0x0100;break; //8
case 0xdb:keystatusl=0x0200;break; //9
case 0xbb:keystatusl=0x0400;break; //point
case 0x7b:keystatusl=0x0800;break; //flay
case 0xe7:keystatusl=0x1000;break; //clear
case 0xd7:keystatusl=0x2000;break; //store
case 0xb7:keystatusl=0x4000;break; //add
case 0x77:keystatusl=0x8000;break; //clear
default:keystatusl=0x0000; //无按键按下
}
SCANPORT<<=1;
SCANPORT|=0x01;
}
return (keystatusl);
}
void key_ser()
{
//利用TM1629按键扫描
}
void key_scan()
{
uint temp16,keystatus;
uchar numres=0;
keyres=0;
keyres_long=0;
if(keybit==0)
{
if(keystatus!=0x0000)
{
//前一次有按键按下
temp16=key_mcu();
if(((temp16&0x0400)==0x0400)&&((keystatus&0x0400)==0x0400))
{
point_cyc++;
if(point_cyc>200)
{
point_cyc=0;
key_point_long=1; //point长按
}
}
if(((temp16&0x2000)==0x2000)&&((keystatus&0x2000)==0x2000))
{
store_cyc++;
if(store_cyc>200)
{
store_cyc=0;
key_store_long=1; //store长按
}
}
keyres=0;
temp16=(~temp16)&keystatus;
C51 COMPILER V8.05a KEYSCAN 05/17/2008 09:11:46 PAGE 3
switch(temp16)
{
case 0x0001:key_0=1;
numres=0;
break;
case 0x0002:key_1=1;
numres=1;
break;
case 0x0004:key_2=1;
numres=2;
break;
case 0x0008:key_3=1;
numres=3;
break;
case 0x0010:key_4=1;
numres=4;
break;
case 0x0020:key_5=1;
numres=5;
break;
case 0x0040:key_6=1;
numres=6;
break;
case 0x0080:key_7=1;
numres=7;
break;
case 0x0100:key_8=1;
numres=8;
break;
case 0x0200:key_9=1;
numres=9;
break;
case 0x0400:key_point=1;
numres=10;
break;
case 0x0800:key_flay =1;break;
case 0x1000:key_clear=1;break;
case 0x2000:key_store=1;break;
case 0x4000:key_add =1;break;
case 0x8000:key_cladd=1;break;
default:keyres=0;
}
/*
//更新数字的值
if((temp16&0x07ff)!=0)
{
num[5]=num[4];
num[4]=num[3];
num[3]=num[2];
num[2]=num[1];
num[1]=num[0];
num[0]=numres;
}
*/
temp16=0;
keystatus=0;
numres=0;
}
else
{
keystatus=key_mcu(); //无按键按下则直接调用单片机扫描键盘
}
C51 COMPILER V8.05a KEYSCAN 05/17/2008 09:11:46 PAGE 4
}
else
{
key_ser(); //调用串行扫描
}
}
#endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = ---- ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -