checker.c

来自「单片机89C51」· C语言 代码 · 共 86 行

C
86
字号
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

#define TRUE  1
#define FAULSE   0
#define scan P2

sbit L1=P2^0;
sbit L2=P2^1;
sbit L3=P2^2;
sbit L4=P2^3;
sbit C1=P2^4;
sbit C2=P2^5;
sbit C3=P2^6;
sbit C4=P2^7;
uchar key=0;
/****************check if any key pressed*********************/

bit CheckState(void)
{
	bit key=0;
	uchar state=0;
	scan=0x0F;                   //scan key
	state=scan;					//get kay state
	if(state!=0x0F)key=TRUE;    //check if any key pressed
	else key=FAULSE;
	return(key);
	}

/****************** ckeck whitch key pressed*****************/

uchar GetKeys(void)
{
	scan=0xFF;
	if(L1==0)                  //line 1 have key pressed
	  {
	  	 if(C1==0)key=0x11;
		 else if(C2==0)key=0x21;
		 else if(C3==0)key=0x41;
		 else key=0x81;
		 }
     
	else if(L2==0)
	  {
	  	  if(C1==0)key=0x12;
		 else if(C2==0)key=0x22;
		 else if(C3==0)key=0x42;
		 else key=0x82;
		 }

 	else if(L3==0)
	  {
	  	  if(C1==0)key=0x14;
		 else if(C2==0)key=0x24;
		 else if(C3==0)key=0x44;
		 else key=0x84;
		 }

	else 
	  {
	  	 if(C1==0)key=0x18;
		 else if(C2==0)key=0x28;
		 else if(C3==0)key=0x48;
		 else key=0x88;
		 }

	return(key);
	}
         
void DisplayKey(uchar key)           
{
	P1=key;
	}

void main()
{
	while(1)
	{
		if(CheckState())key=GetKeys();
		DisplayKey(key);
	
	 }
	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?