📄 kb.c
字号:
#include "gp32.h"
#include "lcd.h"
#define cli() _asm("cli\n") //开中断
#define sei() _asm("sei\n") //关中断
#define nop() _asm("nop\n") //空操作
//键盘初始化程序
void init_Key(void)
{
DDRA=0X0F; //A口与键盘复用
PTAPUE=0XF0; //A口高四位用作键盘中断输入
INTKBSCR|=2; //屏蔽键盘中断
INTKBIER=0XF0; //4~7pin中断允许
INTKBSCR|=4; //清除键盘中断请求
INTKBSCR&=0XFD; //打开键盘中断
PTA&=0XF0; //行线输出低电平
}
//键盘中断处理程序
@interrupt void interrupt_Key(void)
{
unsigned char i1,i2,i,j,value;
sei();
INTKBSCR|=2; //屏蔽键盘中断
value=0X00; //变量赋初值
for(i=8;i>0;i>>=1) //分别将行线置低,共循环4次
{
j=0;
PTA=~i; //一条行线置低,其余三条置高电平
if ((PTA|0x0f)!=0xff)//有键按下时
{
value=0X00;
j=PTA;
j=~j;
j&=0xf0; //取出列线;
value|=j;
value|=i; //分别取出行线值和列线值
}
for (i1=0;i1<=100;i1++) nop();//延时
}
switch (value) //处理按键
{
case 0x11 : DisplayChineseScroll(); //第1行第1个按键--显示中文并滚动
break;
case 0x21 : Back_Color(1);break; //第1行第2个按键--背景颜色1
case 0x41 : Back_Color(2);break; //第1行第3个按键--背景颜色2
case 0x81 : Back_Color(3);break; //第1行第4个按键--背景颜色3
case 0x12 : DisplayCharScroll(); //第2行第1个按键--显示西文字符并滚动
break;
case 0x22 : Back_Color(4);break; //第2行第2个按键--背景颜色4
case 0x42 : Back_Color(5);break; //第2行第3个按键--背景颜色5
case 0x82 : Back_Color(6);break; //第2第行4个按键--背景颜色6
case 0x14 : DisplayPictureTest(); //第3行第1个按键--显示图形
break;
case 0x24 : Back_Color(7);break; //第3行第2个按键--背景颜色7
case 0x44 : Back_Color(8);break; //第3行第3个按键--背景颜色8
case 0x84 : break; //第3行第4个按键--没有定义
case 0x18 : DisplayPictureTest();
DisplayChineseTest();
DisplayCharTest();
break; //第4行第1个按键--静止显示完整满屏信息
case 0x28 : Display_InitTest();
break; //第4行第2个按键--初始化
case 0x48 : break;
case 0x88 : break; //第4行第3,4按键--没有定义
default : break;
}
for (i1=0;i1<=254;i1++)
{
for (i2=0;i2<=254;i2++) nop(); //延时
}
INTKBSCR|=4; //清除键盘中断请求
PTA&=0XF0; //行线输出低电平
INTKBSCR&=0XFD; //打开键盘中断
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -