📄 keyinitial.c
字号:
#include "2407.h"
#include "zimo.h"
#include "System.h"
#include "2407.h"
#include "zimo.h"
#include "System.h"
int KeyScan() {
unsigned int KeyCount;
*PADATDIR = (*PADATDIR & 0XC03F) | 0XC03F;
// LCDDELAY;
KeyCount = *PADATDIR & 0X0038;
if(KeyCount==0x0038)
KeyCount = 0;
else
KeyCount = 1;
if(KeyCount==1) {
KeyDelay();
KeyDelay();
KeyCount = *PADATDIR & 0X0038;
if(KeyCount == 0x0038)
KeyCount = 0 ;
else
KeyCount = 1;
}
return(KeyCount);
}
int GetKeyCode(void)
{
int KeyCode,tempCode;
*PADATDIR=0xC0FF;
// LCDDELAY;
// LCDDELAY;
KEY_WAIT;
KEY_WAIT;
*PADATDIR = (*PADATDIR & 0XC0BF) | 0XC0BF;
// LCDDELAY;
KEY_WAIT;
KeyCode = *PADATDIR & 0X00B8;
if(KeyCode == 0x00B8)
KeyCode = Keyline();
while(1) //等待释放
{
// *PADATDIR = (*PADATDIR & 0XC03F) | 0XC03F;
*PADATDIR = 0x0C03F;
tempCode=*PADATDIR & 0X0038;
if(tempCode==0x0038)
break;
}
return(KeyCode);
}
int Keyline() {
int b;
*PADATDIR = (*PADATDIR&0XC078)|0XC078;
// LCDDELAY;
KEY_WAIT;
b= *PADATDIR&0X0038;
return(b);
}
//当页面参数为0时进行如下处理。处理过程中根据光标位置的不同
//六个键的功能也不一样。
int* KeyServePage0(int code, int *CsrFlag ) {
switch(code) {
case KeyEnter:
if (*CsrFlag == 0) {
// SimuCsr(30,202,98,222,LCD_SET);
FillRect(29,201,99,223,LCD_TOG);
*CsrFlag=1;
}
else if (*CsrFlag== 1) {
CLEAR();
PageNum = PAGE_ONE();
}
else if (*CsrFlag == 2) {
CLEAR();
PageNum = PAGE_TWO();
}
else if (*CsrFlag == 3) {
*CsrFlag=1;
CLEAR();
PageNum = PAGE_THREE(1); //根据CsrFlag,默认选中第一页面
// SimuCsr(30,220,98,236,LCD_SET);
FillRect(29,219,99,237,LCD_TOG); //选中第一页
}
break;
case KeyEsc:
break;
case KeyUp:
break;
case KeyDown:
break;
case KeyRight:
if (*CsrFlag == 1) {
// SimuCsr(30,202,98,222,LCD_CLR);
// SimuCsr(126,202,192,222,LCD_SET);
FillRect(29,201,99,223,LCD_TOG);
FillRect(125,201,195,223,LCD_TOG);
*CsrFlag=2;
}
else {
if (*CsrFlag == 2) {
// SimuCsr(126,202,192,222,LCD_CLR);
// SimuCsr(222,202,290,222,LCD_SET);
FillRect(125,201,195,223,LCD_TOG);
FillRect(221,201,291,223,LCD_TOG);
*CsrFlag=3;
}
else {
if (*CsrFlag == 3) {
// SimuCsr(222,202,290,222,LCD_CLR);
// SimuCsr(30,202,98,222,LCD_SET);
FillRect(221,201,291,223,LCD_TOG);
FillRect(29,201,99,223,LCD_TOG);
*CsrFlag=1;
}
}
}
break;
case KeyLeft:
if(*CsrFlag== 1) {
// SimuCsr(30,202,98,222,LCD_CLR);
// SimuCsr(222,202,290,222,LCD_SET);
FillRect(29,201,99,223,LCD_TOG);
FillRect(221,201,291,223,LCD_TOG);
*CsrFlag=3;
}
else if (*CsrFlag == 2) {
// SimuCsr(126,202,192,222,LCD_CLR);
// SimuCsr(30,202,98,222,LCD_SET);
FillRect(125,201,195,223,LCD_TOG);
FillRect(29,201,99,223,LCD_TOG);
*CsrFlag=1;
}
else if (*CsrFlag == 3) {
// SimuCsr(222,202,290,222,LCD_CLR);
// SimuCsr(126,202,192,222,LCD_SET);
FillRect(221,201,291,223,LCD_TOG);
FillRect(125,201,195,223,LCD_TOG);
*CsrFlag=2;
}
break;
default:
break;
}
return(CsrFlag);
}
int* KeyServePage1(int code, int *CsrFlag ) {
switch(code) {
case KeyEnter:
// SimuCsr(142,216,178,236);
break;
case KeyEsc:
CLEAR();
// KeyDelay();
PageNum = LCDPAGE0();
// SimuCsr(30,202,98,222,LCD_SET);
FillRect(29,201,99,223,LCD_TOG);
*CsrFlag=1;
break;
case KeyUp:
break;
case KeyDown:
break;
case KeyLeft:
break;
case KeyRight:
break;
default:
break;
}
return(CsrFlag);
}
int* KeyServePage3(int code, int *CsrFlag ) {
switch(code) {
case KeyEnter:
// CLEAR();
// FillRect(0,0,280,215,LCD_CLR);
// ShowFlagPage3=*CsrFlag;
// PageNum = PAGE_THREE();
// SimuCsr(30,220,98,236,LCD_SET);
break;
case KeyEsc:
CLEAR();
PageNum = LCDPAGE0();
// SimuCsr(30,202,98,222,LCD_SET);
FillRect(29,201,99,223,LCD_TOG);
*CsrFlag=1;
break;
case KeyUp:
break;
case KeyDown:
break;
case KeyRight:
if (*CsrFlag == 1) {
*CsrFlag = 2;
CLEAR();
PageNum = PAGE_THREE(2);
// SimuCsr(30,218,98,236,LCD_CLR);
// SimuCsr(126,220,192,236,LCD_SET);
// FillRect(29,219,99,237,LCD_TOG);
FillRect(125,219,195,237,LCD_TOG);
}
else {
if (*CsrFlag == 2) {
*CsrFlag = 3;
CLEAR();
PageNum = PAGE_THREE(3);
// SimuCsr(222,220,290,236,LCD_SET);
// FillRect(125,219,195,237,LCD_TOG);
FillRect(221,219,291,237,LCD_TOG);
}
else {
if (*CsrFlag == 3) {
*CsrFlag = 1;
CLEAR();
PageNum = PAGE_THREE(1);
// SimuCsr(30,220,98,236,LCD_SET);
// FillRect(221,219,291,237,LCD_TOG);
FillRect(29,219,99,237,LCD_TOG);
}
}
}
break;
case KeyLeft:
if(*CsrFlag== 1) {
*CsrFlag = 3;
CLEAR();
PageNum = PAGE_THREE(3);
// SimuCsr(222,220,290,236,LCD_SET);
// FillRect(29,219,99,237,LCD_TOG);
FillRect(221,219,291,237,LCD_TOG);
}
else if (*CsrFlag == 2) {
*CsrFlag = 1;
CLEAR();
PageNum = PAGE_THREE(2);
// SimuCsr(30,220,98,236,LCD_SET);
// FillRect(125,219,195,237,LCD_TOG);
FillRect(29,219,99,237,LCD_TOG);
}
else if (*CsrFlag == 3) {
*CsrFlag = 2;
CLEAR();
PageNum = PAGE_THREE(1);
// SimuCsr(126,220,192,236,LCD_SET);
// FillRect(221,219,291,237,LCD_TOG);
FillRect(125,219,195,237,LCD_TOG);
}
break;
default:
break;
}
return(CsrFlag);
}
//根据不同的页面标志,转入各自的键盘处理程序
int* KeyServe(int num, int code, int *CsrFlagPage0) {
switch(num) {
case 0:
KeyServePage0(code, CsrFlagPage0 );
break;
case 1:
KeyServePage1(code, CsrFlagPage0 );
break;
case 2:
KeyServePage2(code, CsrFlagPage0 );
break;
case 3:
KeyServePage3(code, CsrFlagPage0 );
break;
default:
break;
}
return(CsrFlagPage0);
}
void KeyDelay(void) {
int i,j;
for(j=0;j<100;j++) {
for(i=0;i<120;i++)
asm(" nop");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -