📄 testkeypad.c
字号:
#include <AT89X52.H>
#define uchar unsigned char
#define uint unsigned int
sbit KB_DAT =P1^2;
sbit KB_CLK =P3^2;
extern void ShowOneChar(uchar x,uchar y,uchar wdata);
extern void ShowMessage(uchar x,uchar y, uchar *ptr);
extern void LcdReset( void );
extern void LcdCls(uchar row);
uchar x,start1,end1,start2,end2;
#define BUFSIZE 32
uchar keybuf[BUFSIZE],putlast,getlast,cnt;
uchar code sign[]={"|/-+/"};
uchar code Hex_[]="0123456789ABCDEF";
bit tt;
bit keyin=0;
void Delay1Ms(uint n)
{ uchar j;
while(n--) { for(j=125;j>0;j--); }
}
void KeyPadInt1() interrupt 0 using 1
{ static uchar bitc=0,d;
if(!keyin)
{
if(bitc==0) { if(!KB_DAT) { keybuf[0]=d=0; bitc++; } }
else if(bitc<9)
{
d>>=1;
if(KB_DAT) d|=0x80; else d&=0x7f;
bitc++;
}
else if(bitc==9) bitc++;
else if(bitc==10)
{ bitc=0;
if(KB_DAT)
{ keybuf[0]=d; if(putlast==BUFSIZE)putlast=0;
if(d==0xF0) tt=1; else { keyin=1; }
}
}
else bitc=0;
}
}
uchar DeCode(uchar d)
{
switch(d)
{
case 0x45: d='0'; break;
case 0x16: d='1'; break;
case 0x1E: d='2'; break;
case 0x26: d='3'; break;
case 0x25: d='4'; break;
case 0x2E: d='5'; break;
case 0x36: d='6'; break;
case 0x3D: d='7'; break;
case 0x3E: d='8'; break;
case 0x46: d='9'; break;
case 0x05: d='A'; break;
case 0x06: d='D'; break;
case 0x70: d='0'; break;
case 0x69: d='1'; break;
case 0x72: d='2'; break;
case 0x7A: d='3'; break;
case 0x6B: d='4'; break;
case 0x73: d='5'; break;
case 0x74: d='6'; break;
case 0x6C: d='7'; break;
case 0x75: d='8'; break;
case 0x7D: d='9'; break;
case 0xF0: d='|'; break;
default: d='.'; break;
}
return(d);
}
void main()
{ uchar i=0,j; uint k=0;
putlast=getlast=0; cnt=0; tt=0;
LcdReset();
TCON |=0x05;
ShowMessage(0,0,"Key Code:");
Delay1Ms(10);
EX0=1; EA=1;
while(1)
{
if(keyin)
{ if(tt) tt=0;
else
{ if(x>15){ LcdCls(1); x=0; }
j=keybuf[0];
if(j!=0x5A)
{ ShowOneChar(x++,1,DeCode(j));
ShowOneChar(9,0,Hex_[j>>4]);
ShowOneChar(10,0,Hex_[j&0x0f]);
ShowOneChar(12,0,Hex_[(++cnt/10)%10]);
ShowOneChar(13,0,Hex_[cnt%10]);
}
}
keyin=keybuf[0]=0;
}
if(k++%1500==0) ShowOneChar(15,0,sign[i++%5]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -