📄 ps2barcode.c.bak
字号:
//#include <AT89X52.h>
#include "me.h"
#include "disp.h"
sbit Ps2Dat = P1^5;
sbit Ps2Clk = P3^2;//INT0 low
unsigned int KeyGet( void );
unsigned char KeyPut( int KeyVal);
unsigned char KeyBack( int KeyVal);
void KeyClear( void );
void KeyInitial(void);
void KeyScan( void );
#define KEYBUFSIZE 32
unsigned char KeyBuf[KEYBUFSIZE];
unsigned char KeyRp=0;
unsigned char KeyWp=0;
void main( void )
{
unsigned int KeyVal;
KeyInitial();
while(1)
{
disp();
if( TI==1 )
{
KeyVal = KeyGet();
if( KeyVal != 0xff )
{
SBUF = KeyVal;
TI = 0;
}
}
KeyScan();
}
}
unsigned int KeyGet( void )
{
unsigned int RetVal=0xff,flag=0;
if( KeyRp != KeyWp )
{
RetVal = KeyBuf[ KeyRp ];
switch (RetVal)
{
case 0x0e: RetVal=0x30; break;
case 0x96: RetVal=0x31; break;
case 0x4e: RetVal=0x32; break;
case 0x5e: RetVal=0x33; break;
case 0xd6: RetVal=0x34; break;
case 0xce: RetVal=0x35; break;
case 0x2e: RetVal=0x36; break;
case 0x36: RetVal=0x37; break;
case 0xae: RetVal=0x38; break;
case 0xbe: RetVal=0x39; break;
case 0x9e: RetVal=0x2b; break;
case 0xde: RetVal=0x2d; break;
case 0x3e: RetVal=0x2a; break;
case 0x8e: RetVal=0x2e; break;
case 0x0f: RetVal=0xff00; break;
case 0x52: RetVal=0x2f; break;
default: RetVal=0x0a; flag=1;
}
if( ++KeyRp >= KEYBUFSIZE ) KeyRp=0;
}
return( RetVal );
}
void KeyInitial( void )
{
TMOD = 0x20; //9600, crystal = 22.1184MHz
TH1 = -3;
SCON = 0x42;
PCON = 0x80;
TI = 1;
TR1 = 1;
Ps2Clk = 1;
Ps2Dat = 1;
INT0 = 1;
IT0 = 1;
EX0 = 1;
EA = 1;
}
void KeyScan( void ) //interrupt 0
{
static unsigned char ch;
static unsigned char cnt=0;
if( (cnt==0) && (Ps2Dat==1) )
{
return;
}
ch <<= 1;
if( Ps2Dat == 1 )
{
ch |=0x01;
}
if( ++cnt == 9 )
{
KeyBuf[ KeyWp ]= ch;
if( ++KeyWp >= KEYBUFSIZE )
{
KeyWp=0;
}
}
if( cnt == 11)
{
cnt=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -