key.c

来自「进行单片机与LCD的接口通讯与显示。使用清华的液晶。」· C语言 代码 · 共 79 行

C
79
字号
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
extern void msec(uint);
uchar scankey();
extern KeyState;
extern KeyFuncIndex;
 sbit P3_5=P3^5;

float idata keycount=0;	/* used for exit the menu when no key action */
int keybutton=0;

uchar scankey()
  { 	uchar idata keyb;
      keycount++;
    if( keycount>=80000)
    {keycount=0;
    P3_5=0;
     KeyState=1;
     KeyFuncIndex=4;
     }
        keyb=P1&0xff;
        if(keyb!=0xff)
          { //msec(50);
            keyb=P1&0xff;
            keybutton=1;
            KeyState=1;
            keycount=0;
	  }
        else
        {keybutton=0;}
	switch (keyb)
	  {
		case 0xfe : keyb=1;   /* S1 */
		break;
		case 0xfd : keyb=2;   /* S2 */
		break;
		case 0xfb : keyb=3;   /* S3 */
		break;
		case 0xf7 : keyb=4;   /* S4 */
		break;
		case 0xef : keyb=5;   /* S5 */
		break;
                case 0xdf : keyb=6;   /* S6 */
		break;
                case 0xbf : keyb=7;   /* S7 */
		break;
                case 0x7f : keyb=8;   /* S8 */
		break;
		default   : keyb=0;
                break;
	  }
/*	if(keycount>=60){
	  keyb=1;	 exit if no key in action after 60 secondes
	  keycount=0;
        }   */
    if(keyb==0)
   {     keyb=P3&0x0c;
        if(keyb!=0x0c)
          { //msec(50);
            keyb=P3&0x0c;
            keybutton=1;
            KeyState=1;
	  }
        else
        {keybutton=0;}
	switch (keyb)
	  {
		case 0x08 : keyb=9;   /* S9 */
		break;
		case 0x04 : keyb=10;   /* S10 */
		break;
                default   : keyb=0;
                break;
           }
    }
	return (keyb);
}

⌨️ 快捷键说明

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