key.c

来自「本人编制且正在使用的c51键盘读取程序」· C语言 代码 · 共 55 行

C
55
字号
#include <reg52.h>
#include <KEYQUEUE1.h>
extern void delay (unsigned int time);
extern xdata KeyQueue kq;
extern void EnQueue(KeyQueue *pQ,UINT iFlag,UINT iValue);
extern unsigned int KeyStatus;
extern void dog();
extern void gn1(void);
extern long lGlobalTime;
extern enum Authorized{UnAuthorized,Authorized} eAuthorized;
void key()
{  	unsigned char keycode;
	unsigned char scancode;
	unsigned char keypressflag;
	 long times=0;
 	delay(200);
   	while (1)
	{	
		scancode=0;
		scancode=0XEF;
	    dog();	
		while (scancode !=0XFF) 
		{   
    		P1=scancode;
    		keycode=P1;  
 
			if ((keycode & 0X0F) !=0X0F) 
				break;
			scancode=(keycode<<1) |0X0F;
    	}
    	if(keycode != 0x7F)
        	break;
 	    else 
		{
        	times +=1;
        	if(times>100000)
        	{
				lGlobalTime += times*30;
				eAuthorized = UnAuthorized;
				gn1();
        		return;
			}
        }
    }

	do {
     keypressflag=P1;
     delay(200);}
   	while ((keypressflag & 0x0f) != 0x0f); 
    keycode =~keycode;
	EnQueue(&kq,KeyStatus,keycode);    
}


⌨️ 快捷键说明

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