getkey.c
来自「用单片机C语言编的通过键盘扫描得到键值的键盘扫描C程序的源代码」· C语言 代码 · 共 61 行
C
61 行
#include<absacc.h>
#include<reg51.h>
#define BYTE unsigned char
#define WORD unsigned int
#define COM8155 XBYTE[0xA100]
#define PA8155 XBYTE[0xA101]
#define PB8155 XBYTE[0xA102]
#define PC8155 XBYTE[0xA103]
sbit bBusy=P3^2;
void Delay()
{
WORD i;
for ( i=1000;i>0;i-- ) ;
}
BYTE GetKey( void )
{
BYTE i,scode;//scode为中间变量
//row = 0xFF;
COM8155 = 0x02;
PB8155 = 0x00;
while ( 1 )
{
if( bBusy == 0 )
{
Delay();//延时去抖动
if ( bBusy == 0 )
{
scode=0xFE;//逐列扫描
for ( i=0;i<8;i++ )
{
PB8155=scode;
if(bBusy==0)
{
if ( PC8155 & 0x10 == 0 )
return i;// row=(PB8155&0x30)|0xcf;//"0"代表键值所在位
else
return ( i + 8 );
break;
}
else
scode=(scode<<1)|0x01;//列扫描码左移
}
}
}
}
Delay();
return 1;
}
void main ( void )
{
while (1)
{
XBYTE[0xE000] = GetKey();
}
return;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?