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

📄 key8255.h

📁 很完整的CAN总线项目应用例子
💻 H
字号:
#ifndef __KEY8255_H__
#define __KEY8255_H__

#include <REGX52.H>
/***********************************************************
                    8255定义
************************************************************/
#define CT_8255 XBYTE[0x7F03]
#define A_8255 XBYTE[0x7f00]
#define B_8255 XBYTE[0x7f01]
#define C_8255 XBYTE[0x7f02]
/***********************************************************
                     8255函数声明
************************************************************/
void    init_8255();
uchar   key_scan(void);
////void    delay_key(uchar n);

/*============================================================================
                         键盘扫描程序代码区
==============================================================================*/
/***********************************************************
                 8255初始化函数
************************************************************/
void init_8255(void)
{
	CT_8255=0x9b;
}

/***********************************************************
                 键盘扫描程序函数
***********************************************************/
uchar key_scan(void)
{
   uchar temp,B1,C1;
   B1=B_8255;
   C1=C_8255;              //读B,C口
   if(B1||C1!=0xff)
    {
	 Delay(20);            //消抖
	 B1=B_8255;
     C1=C_8255;            //读B,C口
     if(B1||C1!=0xff)
	   {
	    if(B1!=0xff) { temp=~B1;  while(B_8255!=0xff);}
	    else         { temp=C1;   while(C_8255!=0xff);}

	    switch (temp)
		 {
		  case 0x01: return(9);  break;
	  	  case 0x02: return(0);  break;
		  case 0x04: return(10); break;//确认健
		  case 0x08: return(11); break;//修改健
		  case 0x10: return(12); break;//向右健
		  case 0x20: return(13); break;//向下健
		  case 0x40: return(14); break;//向上健
		  case 0x80: return(15); break;//向左健
		  case 0x7f: return(8);  break;
		  case 0xbf: return(7);  break;
		  case 0xdf: return(6);  break;
		  case 0xef: return(5);  break;
	      case 0xf7: return(1);  break;
	      case 0xfb: return(2);  break;
	      case 0xfd: return(3);  break;
	      case 0xfe: return(4);  break;
											/*键盘号
											B口
											0---1111 1101  0xfd--0000 0010 --2
											9---1111 1110  0xfe--0000 0001 --1
											Q --1111 1011  0xfb--0000 0100 --4
											修改-11110111  0xf7--0000 1000 --8
											上--1011 1111  0xbf--0100 0000 --64
											下--1101 1111  0xdf--0010 0000 --32
											左--0111 1111  0x7f--1000 0000 --128
											右--1110 1111  0xef--0001 0000 --16
											
											C口
											1---1111 0111  0xf7
											2---1111 1011  0xfb
											3---1111 1101  0xfd
											4---1111 1110  0xfe
											5---1110 1111  0xef
											6---1101 1111  0xdf
											7---1011 1111  0xbf
											8---0111 1111  0x7f*/
		 }
	   }
	}
	else return (0xff);
}

/***********************************************************
                    延时函数
***********************************************************
void delay_key(uchar n)
{
  char j;
  while(n--)
   for(j=1;j<122;j++)
     { ; }                //延时n毫秒
}*/
#endif

⌨️ 快捷键说明

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