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

📄 getkey.c

📁 用单片机C语言编的通过键盘扫描得到键值的键盘扫描C程序的源代码
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -