📄 key.c
字号:
#include "16x2_main.h"
#include "16x2_lcd.h"
bit Menu_State=0; //为1时进入设定状态
unsigned char Position;
const unsigned char C_Position[14]={5,6,7,8,10,11,13,14,5,6,8,9,11,12};
void Key_Initial()
{
EA=1;
EX1=1;
}
void Key_Menu_server()
{
Menu_State=!Menu_State; //当用时钟计时是记得关中断
Position=0;
if(Menu_State)
{
Lcd_CodeWrite(0x0f); //显示开,光标开,闪 //进入
}
else
{
Lcd_CodeWrite(0x0c); //显示开,光标关,闪 //退出
}
}
void Key_Set_server()
{
//移动光标,更新输入
if(Menu_State)
{
Position++;
if(Position==14)Position=0;
if(Position>=8)
{
while(Lcd_StateRead());
Lcd_CodeWrite(0xc0|C_Position[Position]); //输入地址
}
else
{
while(Lcd_StateRead());
Lcd_DataWrite(0x80|C_Position[Position]);
}
}
Lcd_FramDisplay();
}
void Key_Up_server()
{
if(Menu_State)
{
switch (Position)
{
case 0:
case 1:
case 2:
case 3:
case 5:
case 7:
case 9:
case 11:
case 13: datatime[Position]=(++datatime[Position])%10;break;
case 4: datatime[Position]=(++datatime[Position])%2;break;
case 6: datatime[Position]=(++datatime[Position])%4;break;
case 8: datatime[Position]=(++datatime[Position])%3;break;
case 10:
case 12: datatime[Position]=(++datatime[Position])%7;break;
}
}
Lcd_FramDisplay();
}
void Key_Down_server()
{
if(Menu_State)
{
switch (Position)
{
case 0:
case 1:
case 2:
case 3:
case 5:
case 7:
case 9:
case 11:
case 13: datatime[Position]--;if(datatime[Position]==255)datatime[Position]=9;break;
case 4: datatime[Position]--;if(datatime[Position]==255)datatime[Position]=1;break;
case 6: datatime[Position]--;if(datatime[Position]==255)datatime[Position]=3;break;
case 8: datatime[Position]--;if(datatime[Position]==255)datatime[Position]=2;break;
case 10:
case 12: datatime[Position]--;if(datatime[Position]==255)datatime[Position]=6;break;
}
}
Lcd_FramDisplay();
}
void Key_int() interrupt 2
{
unsigned char key;
EA=0;
EX1=0;
key=KEY_VALUE;
Delay(500);
if(key!=KEY_VALUE) goto keyend;
Delay(500);
switch(key)
{
case 0xe: Key_Menu_server(); //menu 1110
break;
case 0xd: Key_Set_server(); //set 1101
break;
case 0xb: Key_Up_server(); //up 1011
break;
case 0x7: Key_Down_server(); //down 0111
break;
default: ;
}
keyend: Delay(10);
EA=1;
EX1=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -