📄 input.c
字号:
#include "LCD_Interface.c"
#ifndef _INPUT_INCLUDED_
#define BT_NUM_0 0x10
#define BT_NUM_1 0x11
#define BT_NUM_2 0x12
#define BT_NUM_3 0x13
#define BT_NUM_4 0x14
#define BT_NUM_5 0x15
#define BT_NUM_6 0x16
#define BT_NUM_7 0x17
#define BT_NUM_8 0x18
#define BT_NUM_9 0x19
#define BT_SHIFT 0x1A
#define BT_LEFT 0x1B
#define BT_RIGHT 0x1C
#define BT_UP 0x1D
#define BT_DOWN 0x1E
#define BT_APPLY 0x1F
#define BT_POWER 0x20
#define _INPUT_INCLUDED_
unsigned char GetKey(void)
{
unsigned char IRCmd[4];
unsigned char IRKeyPress=0;
unsigned char i;
if (IR_GetBuffer(IRCmd,&IRKeyPress))
{
if ((~IRCmd[0]==IRCmd[1])&&(~IRCmd[2]==IRCmd[3])&&(IRKeyPress>0))
{
SOUND_START; //Sound Start
for (i=0;i<17;i++)
{
if (IRCmd[2]==mConfig[i])
{
IRKeyPress = i + 0x10;
break;
}
}
}
IR_Complete();
}
return IRKeyPress;
}
void GetInput(unsigned char ParamCaptionID,unsigned char ValueCaptionID,unsigned char *vByte,unsigned int *vInt)
{
unsigned char Buffer[4];
unsigned char Pos;
unsigned char Pos2=0;
unsigned char *Result;
unsigned char Key;
unsigned char Size;
unsigned char i;
unsigned char Shift=0;
delay_ms(10);
SOUND_STOP;
if (vByte==0)
{
Result=(unsigned char *)vInt;
Buffer[0]=Result[1];
Result[1]=Result[0];
Result[0]=Buffer[0];
Size=2;
}
else
{
Result=vByte;
Size=1;
}
LCD_WriteCaption(ParamCaptionID,ValueCaptionID);
LCD_PutStrF("=");
Pos=LCD_Position();
Key=1;
while (Key!=BT_APPLY)
{
if (Key!=0)
{
BinToHex(Result,Buffer,Size);
for (i=0;i<Size*2;i++)
{
if (Pos2==i)
{
WriteCGRAM(Buffer[i],i+4,0x80);
}
else
{
WriteCGRAM(Buffer[i],i+4,0);
}
}
LCD_Ctrl(LCD_SET_DDRAM|Pos);
for (i=0;i<Size*2;i++)
{
LCD_Write(i+4);
}
}
Key=GetKey();
if (Key==BT_LEFT)
{
Pos2-=(Pos2>0);
Shift=0;
}
else if (Key==BT_RIGHT)
{
Pos2+=(Pos2<(Size*2-1));
Shift=0;
}
else if (Key==BT_UP)
{
Buffer[0]=(Pos2>1);
Buffer[1]=0xF0>>((Pos2 - Buffer[0]*2)*4);
Buffer[2]=Result[Buffer[0]]&Buffer[1];
if (Buffer[2]<Buffer[1]) Buffer[2]+=(0x11&Buffer[1]);
Result[Buffer[0]]=(Result[Buffer[0]]&(~Buffer[1]))|(Buffer[2]);
Shift=0;
}
else if (Key==BT_DOWN)
{
Buffer[0]=(Pos2>1);
Buffer[1]=0xF0>>((Pos2 - Buffer[0]*2)*4);
Buffer[2]=Result[Buffer[0]]&Buffer[1];
if (Buffer[2]>0) Buffer[2]-=(0x11&Buffer[1]);
Result[Buffer[0]]=(Result[Buffer[0]]&(~Buffer[1]))|(Buffer[2]);
Shift=0;
}
else if ((Key>=BT_NUM_0)&&(Key<=BT_NUM_9))
{
if ((Key>=BT_NUM_0)&&(Key<=BT_NUM_5)&&(Shift==1))
{
Buffer[3]=Key-0x06;
}
else
{
Buffer[3]=Key-0x10;
}
Buffer[0]=(Pos2>1);
Buffer[1]=0xF0>>((Pos2 - Buffer[0]*2)*4);
Buffer[2]=(Buffer[3])<<(4-(Pos2 - Buffer[0]*2)*4);
Result[Buffer[0]]=(Result[Buffer[0]]&(~Buffer[1]))|(Buffer[2]);
Pos2+=(Pos2<(Size*2-1));
Shift=0;
}
else if (Key==BT_APPLY)
{
if (Size==2)
{
Buffer[0]=Result[1];
Result[1]=Result[0];
Result[0]=Buffer[0];
}
}
else if (Key==BT_SHIFT)
{
Shift=1;
}
if (Key!=0)
{
delay_ms(10);
SOUND_STOP;
}
}
}
void GetInputBoolean(unsigned char ParamCaptionID,unsigned char ValueCaptionID,unsigned char *vByte,unsigned char BitPos)
{
//unsigned char Buffer[4];
unsigned char Pos;
unsigned char Result;
unsigned char Key;
delay_ms(10);
SOUND_STOP;
Result=*vByte;
LCD_WriteCaption(ParamCaptionID,ValueCaptionID);
LCD_PutStrF("=");
Pos=LCD_Position();
Key=1;
WriteCGRAM('0',2,0x80);
WriteCGRAM('1',3,0x80);
while (Key!=BT_APPLY)
{
if (Key!=0)
{
LCD_Ctrl(LCD_SET_DDRAM|Pos);
LCD_Write(2+((Result>>BitPos)&0x01));
}
Key=GetKey();
if ((Key==BT_NUM_1)||(Key==BT_UP))
{
Result|=(1<<BitPos);
}
else if ((Key==BT_NUM_0)||(Key==BT_DOWN))
{
Result&=(~(1<<BitPos));
}
else if (Key==BT_APPLY)
{
*vByte=Result;
}
else if (Key==BT_LEFT)
{
Key=BT_APPLY;
}
if (Key!=0)
{
delay_ms(10);
SOUND_STOP;
}
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -