⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ps2barcode.c.bak

📁 单片机与键盘接口程序
💻 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 + -