key.c
来自「2407嵌入式系统程序(c语言)」· C语言 代码 · 共 413 行
C
413 行
#include "f2407_c.h"
#include "global.h"
#include "key.h"
int KEY_SCAN(void)
{ int key_value=0x0000;
KEY_UP=0x0000;
KEY_DOWN=0x0000;
KEY_LEFT=0x0000;
KEY_RIGHT=0x0000;
KEY_SURE=0x0000;
key_value=(*PEDATDIR)&0x0002;
if(key_value!=0)
{ Delay50uS();
Delay50uS();
key_value=*PEDATDIR&0x0002;
if(key_value!=0)
{ KEY_LEFT=0x0001;
return 1;
};
};
key_value=(*PEDATDIR)&0x0004;
if(key_value!=0)
{ Delay50uS();
Delay50uS();
key_value=*PEDATDIR&0x0004;
if(key_value!=0)
{ KEY_SURE=0x0001;
return 1;
};
};
key_value=(*PEDATDIR)&0x0008;
if(key_value!=0)
{ Delay50uS();
Delay50uS();
key_value=*PEDATDIR&0x0008;
if(key_value!=0)
{ KEY_RIGHT=0x0001;
return 1;
};
};
key_value=(*PEDATDIR)&0x0010;
if(key_value!=0)
{ Delay50uS();
Delay50uS();
key_value=*PEDATDIR&0x0010;
if(key_value!=0)
{ KEY_UP=0x0001;
return 1;
};
};
key_value=(*PEDATDIR)&0x0001;
if(key_value!=0)
{ Delay50uS();
Delay50uS();
key_value=*PEDATDIR&0x0001;
if(key_value!=0)
{ KEY_DOWN=0x0001;
return 1;
};
};
return 0;
}
int KEY_HANDLE(void)
{ if(KEY_RIGHT==0)
if(KEY_LEFT==0)
if(KEY_SURE==0)
return 0;
else
switch(MAINMEAUFLAG)
{case 1:return 1;
case 2:LCD_CLEAR();
LCD_SUBMEAU2('2');
LCD_SUBMEAU2('3');
LCD_SUBMEAU2('5');
LCD_SUBMEAU2('7');
LCD_SUBMEAU2('9');
SUBBAR2('1');
SUBMEAU2FLAG=0x0001;
return 1;
case 3:LCD_CLEAR();
LCD_SUBMEAU3('2');
LCD_SUBMEAU3('3');
LCD_SUBMEAU3('5');
SUBBAR3('1');
SUBMEAU3FLAG=0x0001;
return 1;
case 4:LCD_CLEAR();
LCD_SUBMEAU4('2');
LCD_SUBMEAU4('3');
LCD_SUBMEAU4('5');
LCD_SUBMEAU4('7');
SUBBAR4('1');
SUBMEAU4FLAG=0x0001;
return 1;
case 5:return 1;
}
else
switch(MAINMEAUFLAG)
{
case 1: LCD_STARTMEAU('1');
LCD_STARTMEAU('10');
CLEAR_BAR();
MAINBAR('5');
return 1;
case 2:LCD_STARTMEAU('3');
LCD_STARTMEAU('2');
CLEAR_BAR();
MAINBAR('1');
return 1;
case 3:LCD_STARTMEAU('5');
LCD_STARTMEAU('4');
CLEAR_BAR();
MAINBAR('2');
return 1;
case 4:LCD_STARTMEAU('7');
LCD_STARTMEAU('6');
CLEAR_BAR();
MAINBAR('3');
return 1;
case 5:LCD_STARTMEAU('9');
LCD_STARTMEAU('8');
CLEAR_BAR();
MAINBAR('4');
return 1;
}
else
switch(MAINMEAUFLAG)
{case 1:LCD_STARTMEAU('1');
LCD_STARTMEAU('4');
CLEAR_BAR();
MAINBAR('2');
return 1;
case 2:LCD_STARTMEAU('3');
LCD_STARTMEAU('6');
CLEAR_BAR();
MAINBAR('3');
return 1;
case 3:LCD_STARTMEAU('5');
LCD_STARTMEAU('8');
CLEAR_BAR();
MAINBAR('4');
return 1;
case 4:LCD_STARTMEAU('7');
LCD_STARTMEAU('10');
CLEAR_BAR();
MAINBAR('5');
return 1;
case 5:LCD_STARTMEAU('9');
LCD_STARTMEAU('2');
CLEAR_BAR();
MAINBAR('1');
return 1;
}
}
int KEY_SUBMEAU2(void)
{ if(KEY_RIGHT==0)
{if(KEY_LEFT==0)
{if(KEY_SURE==0)
{if(KEY_UP==0)
return 0;
else
{ LCD_CLEAR();
LCD_STARTMEAU('1');
LCD_STARTMEAU('4');
LCD_STARTMEAU('5');
LCD_STARTMEAU('7');
LCD_STARTMEAU('9');
MAINBAR('2');
SUBMEAU2FLAG=0x0000;
return 1;
}
}
else
{switch(SUBMEAU2FLAG)
{ case 1: LCD_CLEAR();
SURESUBMEAU2('1');
return 1;
case 2: LCD_CLEAR();
SURESUBMEAU2('2');
return 1;
case 3: LCD_CLEAR();
SURESUBMEAU2('3');
return 1;
case 4: LCD_CLEAR();
SURESUBMEAU2('4');
return 1;
case 5: LCD_CLEAR();
SURESUBMEAU2('5');
return 1;
}
}
}
else
{switch(SUBMEAU2FLAG)
{ case 1: LCD_SUBMEAU2('1');
LCD_SUBMEAU2('10');
CLEAR_BAR();
SUBBAR2('5');
return 1;
case 2: LCD_SUBMEAU2('3');
LCD_SUBMEAU2('2');
CLEAR_BAR();
SUBBAR2('1');
return 1;
case 3: LCD_SUBMEAU2('5');
LCD_SUBMEAU2('4');
CLEAR_BAR();
SUBBAR2('2');
return 1;
case 4: LCD_SUBMEAU2('7');
LCD_SUBMEAU2('6');
CLEAR_BAR();
SUBBAR2('3');
return 1;
case 5: LCD_SUBMEAU2('9');
LCD_SUBMEAU2('8');
CLEAR_BAR();
SUBBAR2('4');
return 1;
}
}
}
else
{switch(SUBMEAU2FLAG)
{ case 1: LCD_SUBMEAU2('1');
LCD_SUBMEAU2('4');
CLEAR_BAR();
SUBBAR2('2');
return 1;
case 2: LCD_SUBMEAU2('3');
LCD_SUBMEAU2('6');
CLEAR_BAR();
SUBBAR2('3');
return 1;
case 3: LCD_SUBMEAU2('5');
LCD_SUBMEAU2('8');
CLEAR_BAR();
SUBBAR2('4');
return 1;
case 4: LCD_SUBMEAU2('7');
LCD_SUBMEAU2('10');
CLEAR_BAR();
SUBBAR2('5');
return 1;
case 5: LCD_SUBMEAU2('9');
LCD_SUBMEAU2('2');
CLEAR_BAR();
SUBBAR2('1');
return 1;
}
}
}
int KEY_SUBMEAU3(void)
{ if(KEY_RIGHT==0)
{if(KEY_LEFT==0)
{if(KEY_SURE==0)
{if(KEY_UP==0)
return 0;
else
{ LCD_CLEAR();
LCD_STARTMEAU('1');
LCD_STARTMEAU('4');
LCD_STARTMEAU('5');
LCD_STARTMEAU('7');
LCD_STARTMEAU('9');
MAINBAR('2');
SUBMEAU3FLAG=0x0000;
return 1;
}
}
else
{switch(SUBMEAU3FLAG)
{ case 1: LCD_CLEAR();
SURESUBMEAU3('1');
return 1;
case 2: LCD_CLEAR();
SURESUBMEAU3('2');
return 1;
case 3: LCD_CLEAR();
SURESUBMEAU3('3');
return 1;
}
}
}
else
{switch(SUBMEAU3FLAG)
{ case 1: LCD_SUBMEAU3('1');
LCD_SUBMEAU3('6');
CLEAR_BAR();
SUBBAR3('3');
return 1;
case 2: LCD_SUBMEAU3('3');
LCD_SUBMEAU3('2');
CLEAR_BAR();
SUBBAR3('1');
return 1;
case 3: LCD_SUBMEAU3('5');
LCD_SUBMEAU3('4');
CLEAR_BAR();
SUBBAR3('2');
return 1;
}
}
}
else
{switch(SUBMEAU3FLAG)
{ case 1: LCD_SUBMEAU3('1');
LCD_SUBMEAU3('4');
CLEAR_BAR();
SUBBAR3('2');
return 1;
case 2: LCD_SUBMEAU3('3');
LCD_SUBMEAU3('6');
CLEAR_BAR();
SUBBAR3('3');
return 1;
case 3: LCD_SUBMEAU3('5');
LCD_SUBMEAU3('2');
CLEAR_BAR();
SUBBAR3('1');
return 1;
}
}
}
/***************************************************/
int KEY_SUBMEAU4(void)
{ if(KEY_RIGHT==0)
if(KEY_LEFT==0)
if(KEY_SURE==0)
if(KEY_UP==0)
return 0;
else
{ LCD_CLEAR();
LCD_STARTMEAU('1');
LCD_STARTMEAU('4');
LCD_STARTMEAU('5');
LCD_STARTMEAU('7');
LCD_STARTMEAU('9');
MAINBAR('2');
SUBMEAU4FLAG=0x0000;
return 1;
}
else
{switch(SUBMEAU4FLAG)
{case 1: LCD_CLEAR();
SURESUBMEAU4('1');
return 1;
case 2: LCD_CLEAR();
SURESUBMEAU4('2');
return 1;
case 3: LCD_CLEAR();
SURESUBMEAU4('3');
return 1;
case 4: LCD_CLEAR();
SURESUBMEAU4('4');
return 1;
}
}
else
{switch(SUBMEAU4FLAG)
{ case 1: LCD_SUBMEAU4('1');
LCD_SUBMEAU4('8');
CLEAR_BAR();
SUBBAR4('4');
return 1;
case 2: LCD_SUBMEAU4('3');
LCD_SUBMEAU4('2');
CLEAR_BAR();
SUBBAR4('1');
return 1;
case 3: LCD_SUBMEAU4('5');
LCD_SUBMEAU4('4');
CLEAR_BAR();
SUBBAR4('2');
return 1;
case 4: LCD_SUBMEAU4('7');
LCD_SUBMEAU4('6');
CLEAR_BAR();
SUBBAR4('3');
return 1;
}
}
else
{switch(SUBMEAU4FLAG)
{ case 1: LCD_SUBMEAU4('1');
LCD_SUBMEAU4('4');
CLEAR_BAR();
SUBBAR4('2');
return 1;
case 2: LCD_SUBMEAU4('3');
LCD_SUBMEAU4('6');
CLEAR_BAR();
SUBBAR4('3');
return 1;
case 3: LCD_SUBMEAU4('5');
LCD_SUBMEAU4('8');
CLEAR_BAR();
SUBBAR4('4');
return 1;
case 4: LCD_SUBMEAU4('7');
LCD_SUBMEAU4('2');
CLEAR_BAR();
SUBBAR4('1');
return 1;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?