📄 menu.c
字号:
#include "lcd.h"
#include "stdio.h"
#include "keyscan.h"
#include "menu.h"
#include "DVDCTRL.h"
unsigned char code MenuSize[]={2,4,6};
char code *menu0[]={"SIGNAL","OUTPUT"};
char code *menu1[]={"HDTV1","HDTV2","STEP","GRID"};
char code *menu2[]={"480p/60","480p/50","720p/60","720p/50","1080/60","1080/50"};
code void (*Menu1Func[])()={NULL,NULL,NULL,NULL};
code void (*Menu2Func[])()={NULL,NULL,NULL,NULL};
DisMenu(unsigned char CurMenuId,unsigned char CurMenuItem)
{
char code **pmenu;
unsigned char msize;
unsigned char pg,v,i;
switch(CurMenuId)
{
case 0:
pmenu=menu0;
msize=MenuSize[0];
break;
case 1:
pmenu=menu1;
msize=MenuSize[1];
break;
case 2:
pmenu=menu2;
msize=MenuSize[2];
break;
default:
pmenu=menu0;
msize=MenuSize[0];
break;
}
pg=CurMenuItem/8;
v=CurMenuItem%8;
LCDClear();
for(i=0;i<8;i++)
{
if(pg*8+i>=msize)break;
if(v==i)LCDDrawText8(pmenu[pg*8+i],61*(i%2),8*(i/2),DrawType_NotNormal);
else LCDDrawText8(pmenu[pg*8+i],61*(i%2),8*(i/2),DrawType_Normal);
}
}
void Proc()
{
unsigned long code DelayTime=400000;//7s=400000
unsigned char CurMenuId=0,CurMenuItem=0;
unsigned long count=DelayTime;
DisMenu(CurMenuId,CurMenuItem);
while(count--)
{
unsigned char KeyVal;
KeyVal=KeyUpScan();
switch(KeyVal)
{
case 0x1: //<<
count=DelayTime;
if(CurMenuItem>0)CurMenuItem--;
else if(CurMenuItem==0)CurMenuItem=MenuSize[CurMenuId]-1;
KeyVal=0;
DisMenu(CurMenuId,CurMenuItem);
break;
case 0x2: //==
count=DelayTime;
if(CurMenuItem/2<MenuSize[CurMenuId]/2-1)CurMenuItem+=2;
else if(CurMenuItem/2>=MenuSize[CurMenuId]/2-1)CurMenuItem=CurMenuItem%2;
DisMenu(CurMenuId,CurMenuItem);
break;
case 0x4: //>>
count=DelayTime;
if(CurMenuItem<MenuSize[CurMenuId]-1)CurMenuItem++;
else if(CurMenuItem==MenuSize[CurMenuId]-1)CurMenuItem=0;
DisMenu(CurMenuId,CurMenuItem);
break;
case 0x8: //set
count=DelayTime;
break;
case 0x10: //ok
count=DelayTime;
if(CurMenuId==0)CurMenuId=CurMenuItem+1;
else if(CurMenuId==1){ChgCtrlSignal(CurMenuItem);return ;}
else if(CurMenuId==2){SetCtrlMode(CurMenuItem,0);SetCtrlSignal(CurMenuItem,0);return ;}
/* else
{
void (**pMenuFunc)();
if(CurMenuId==1)pMenuFunc=Menu1Func;
else if(CurMenuId==2)pMenuFunc=Menu2Func;
if(pMenuFunc[CurMenuItem]!=NULL)
pMenuFunc[CurMenuItem]();
return ;
}*/
DisMenu(CurMenuId,CurMenuItem);
break;
case 0x20: //A
count=DelayTime;
if(CurMenuItem>1)CurMenuItem-=2;
else if(CurMenuItem<=1)CurMenuItem=(MenuSize[CurMenuId]/2-1)*2+CurMenuItem;
DisMenu(CurMenuId,CurMenuItem);
break;
case 0x40: //cancel
count=DelayTime;
if(CurMenuId==0)return;
else CurMenuId=0;
DisMenu(CurMenuId,CurMenuItem);
break;
default:
count--;
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -