📄 key8255.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 + -