📄 kb.c
字号:
/*------------------------------------------------------------------------*
*文件描述:本文件包含了对外接口的4子程序,分别为: *
*(1)KB_Init:键盘初始化 *
*(2)KB_Scan:扫描读取键值 *
*(3)KB_Def:键值转为定义值 *
*------------------------------------------------------------------------*/
#include "KB.h" //键盘头文件
/* KB_Init:键盘初始化------------------------------------------------------*
*功 能:初始化键盘中断的引脚,但未放开键盘中断 *
*参 数:无 *
*返 回:无 *
*-------------------------------------------------------------------------*/
void KB_Init(void) //键盘初始化
{
//定义2根列线的引脚为输入(0)并有内部上拉电阻(1)。(引脚7-6)
KB_D&=0b00111111; //(不干预本程序未用引脚)
KB_PUE|=0b11000000;
//定义两根行线的引脚为输出(1) (引脚5-4)
KB_D|=0b00110000; //(不干预本程序未用引脚)
KB_P&=0b11001111; //令KBRow_P.4-5=0,不干预本程序未用引脚
//键盘中断设置
INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKk=1)
INTKBIER|=0b11000000; //允许PTA7-6作为中断输入引脚
INTKBSCR|= (1<<ACKKBit); //清键盘中断请求(ACKK=1)
}
/* KB_Scan:扫描读取键值函数------------------------------------------------*
*功 能:扫描2*2键盘上的按键,读取键值返回,若无按键返回0xff *
*参 数:无 *
*返 回:键值,若无按键返回0xff *
*-------------------------------------------------------------------------*/
INT8U KB_Scan(void) //扫描读取键值
{
INT8U line,i,tmp;
line=0b11101111; //使第一根行线为0(低电平)
for(i=1;i<=2;i++) //将扫描2根行线
{
tmp=KB_P; //取KB_P->tmp
tmp|=0b00111111; //KB_P.7-6保留,KB_P.5-4为1
KB_P=tmp&line; //令KB_P.n=0,n=4、5
asm("NOP"); //等待,消除按键抖动
asm("NOP");
tmp=KB_P;
tmp&=0b11000000; //看第n行是否有键按下
if(tmp!=0xC0) //本行有键按下
{
tmp=KB_P;
break;
}
else //本行无键按下,扫描下一行
line=(line<<1)|0x01;
}
if(i==3) tmp=0xff;
return(tmp);
}
/* KB_Def:键值转为定义值---------------------------------------------------*
*功 能:键值转化为定义值 *
*参 数:KBKey-键值 *
*返 回:键定义值(返回0x00,表示无此定义值) *
*-------------------------------------------------------------------------*/
const INT8U KB_Table[]=
{
0xA0,'A',0x60,'B',
0x90,'C',0x50,'D',
0x00
};
INT8U KB_Def(INT8U KBKey) //键值转化为定义值
{
INT8U KeyPress;
INT8U i;
INT8U j;
i=0;
while(1)
{
j=KB_Table[i];
//与0(定义表结束标志)相比较
if (j==0) //=0,即表中无次定义值
{KeyPress=0xff; break;} //返回0xff
else
//与键值相比较
if (j==KBKey) //找到
{KeyPress=KB_Table[i+1];break;} //取键定义值
else
i+=2; //指向下一个键值,继续判断
}
return KeyPress;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -