📄 menu.c.bak
字号:
t1=ADDR_GENARAL_SCH;
else if((MenuID&0x000f)==0x0002)
t1=ADDR_HOLIDAY_SCH;
else
return;
t=MenuID&0x00f0;
t>>=4;
t-=1;
t1=t1+t*PHASE_GROUP_LEN;
t=MenuID&0x0f00;
t>>=8;
t-=1;
t=t1+t*PHASE_LEN;//t指向当前相位
//输入
kv=KEY_NOTKEY;
while(1)
{
while(kv==KEY_NOKEY)
{
kv=GetKey();
if(SecondFlag)
{
SecondCheck();
AutoLockCnt--;
SecondFlag=0;
if(AutoLockCnt<SYS_AUTO_LOCK_TIME)
{
DeskTopFlag=1;
PswLock=1;
return;
}
}
}
AutoLockCnt=SYS_LCD_OFF_TIME;
switch(kv)
{
case KEY_UP:
case KEY_LEFT:
LcdChar(hang,0,0x20);
if(hang>=1)
hang--;
LcdChar(hang,0,CHOSEN_CH);
break;
case KEY_DOWN:
case KEY_RIGHT:
LcdChar(hang,0,0x20);
if(hang<3)
hang++;
LcdChar(hang,0,CHOSEN_CH);
break;
case KEY_ENTER:
t1=Get256Key(hang,5);
if(t1!=255)
{
if(hang==1)//绿闪
t2=(unsigned int)EPR_Read(t+GT_ADJ);//GT
if(t1>=t2)
{
LcdInit();
LcdCnString(0,3,"警告");
LcdCnString(2,1,"绿灯时间必需大");
LcdCnString(3,0,"于绿闪时间");
kv=KEY_NOKEY;
while(kv==KEY_NOKEY)
kv=GetKey();
}
EPR_Page_0();
Write(t+3+hang,t1);
EPR_Page_1();
PrintNum(hang,5,t1);
}
return;
case KEY_MENU:
DeskTopFlag=1;
MenuID=0x0000;
case KEY_CANCEL:
return;
default:
;
}
t1=(unsigned int)EPR_Read(t+GT_ADJ);//GT
PrintNum(0,5,t1);
t1=(unsigned int)EPR_Read(t+GST_ADJ);//GST
PrintNum(1,5,t1);
t1=(unsigned int)EPR_Read(t+YT_ADJ);//YT
PrintNum(2,5,t1);
t1=(unsigned int)EPR_Read(t+RT_ADJ);//RT
PrintNum(3,5,t1);
LcdChar(hang,0,CHOSEN_CH);
kv=KEY_NOKEY;
}
}
void CopyPhaseGroup()
{//复制时段
//输入:MenuID
//
unsigned int xdata t,t1;
unsigned char xdata i,k;
LcdInit();
if((MenuID&0x000f)==0x0001)
{
t1=ADDR_GENARAL_SCH;
LcdCnString(0,2,"平时设置");
}
else if((MenuID&0x000f)==0x0001)
{
t1=ADDR_HOLIDAY_SCH;
LcdCnString(0,2,"节日设置");
}
else
return;
t=MenuID&0x00f0;
t>>=4;
t-=1;
t=t1+t*PHASE_GROUP_LEN;//t指向当前相组
LcdCnString(2,0,"来自时段:");
t2=Get44Key(2,5);
if(t2<12)
{
t2=t1+t2*PHASE_GROUP_LEN;//源相组
EPR_Page_0();
for(i=0;i<8*7;i++)
{
k=EPR_Read(t2+i);
EPR_Write(t+i,k);
}
EPR_Page_1();
}
}
void SetSysTime()
{
//输入:无,返回:无
unsigned char xdata kv,i,k;
kv=KEY_NOTKEY;
while(1)
{
while(kv==KEY_NOKEY)
{
kv=GetKey();
if(SecondFlag)
{
SecondCheck();
AutoLockCnt--;
SecondFlag=0;
if(AutoLockCnt<SYS_AUTO_LOCK_TIME)
{
DeskTopFlag=1;
PswLock=1;
return;
}
}
}
AutoLockCnt=SYS_LCD_OFF_TIME;
switch(kv)
{
case KEY_ENTER:
LcdInit();
LcdCnString(1,0,"小时:");
k=Get256Key(1,3);
if(k<24)
XBYTE[RTC_BASE+RegHours]=k;
LcdCnString(1,0,"分钟:");
k=Get256Key(1,3);
if(k<60)
XBYTE[RTC_BASE+RegMinutes]=k;
LcdCnString(1,0,"秒:");
k=Get256Key(1,3);
if(k<60)
XBYTE[RTC_BASE+RegSeconds]=k;
return;
case KEY_MENU:
DeskTopFlag=1;
MenuID=0x0000;
case KEY_CANCEL:
return;
default:
;
}
LcdInit();
{//显示当前时间
LcdCnString(0,2,"当前时间");
k=XBYTE[RTC_BASE+RegHours];//小时
i=0;
while(k>=10)
{
k-=10;
i++;
}
i+='0';
LcdChar(1,2,i);
k+='0';
LcdAddChar(k);
LcdAddChar(':');
k=XBYTE[RTC_BASE+RegMinutes];//分钟
i=0;
while(k>=10)
{
k-=10;
i++;
}
i+='0';
LcdAddChar(i);
k+='0';
LcdAddChar(k);
LcdAddChar(':');
k=XBYTE[RTC_BASE+RegSeconds];//秒
i=0;
while(k>=10)
{
k-=10;
i++;
}
i+='0';
LcdAddChar(i);
k+='0';
LcdAddChar(k);
}
kv=KEY_NOKEY;
}
}
void SetSysDate()
{
//输入:无,返回:无
unsigned char xdata kv,i,k;
kv=KEY_NOTKEY;
while(1)
{
while(kv==KEY_NOKEY)
{
kv=GetKey();
if(SecondFlag)
{
SecondCheck();
AutoLockCnt--;
SecondFlag=0;
if(AutoLockCnt<SYS_AUTO_LOCK_TIME)
{
DeskTopFlag=1;
PswLock=1;
return;
}
}
}
AutoLockCnt=SYS_LCD_OFF_TIME;
switch(kv)
{
case KEY_ENTER:
LcdInit();
LcdCnString(1,0,"年:");
k=Get256Key(1,2);
if(k<100)
XBYTE[RTC_BASE+RegYear]=k;
LcdCnString(1,0,"月:");
k=Get256Key(1,2);
if(k<=12)
XBYTE[RTC_BASE+RegMonth]=k;
LcdCnString(1,0,"日:");
k=Get256Key(1,2);
if(k<=31)
XBYTE[RTC_BASE+RegDate]=k;
return;
case KEY_MENU:
DeskTopFlag=1;
MenuID=0x0000;
case KEY_CANCEL:
return;
default:
;
}
LcdInit();
{//显示当前时间
LcdCnString(0,2,"当前日期");
k=XBYTE[RTC_BASE+RegYear];//年
i=0;
while(k>=10)
{
k-=10;
i++;
}
i+='0';
LcdChar(1,2,i);
k+='0';
LcdAddChar(k);
LcdAddChar('-');
k=XBYTE[RTC_BASE+RegMonth];//月
i=0;
while(k>=10)
{
k-=10;
i++;
}
i+='0';
LcdAddChar(i);
k+='0';
LcdAddChar(k);
LcdAddChar('-');
k=XBYTE[RTC_BASE+RegDate];//日
i=0;
while(k>=10)
{
k-=10;
i++;
}
i+='0';
LcdAddChar(i);
k+='0';
LcdAddChar(k);
}
kv=KEY_NOKEY;
}
}
void StepSwitch()
{
static unsigned char CurSta=0;
if(MeterSta!=MSTA_MANUAL)//第一次进行检查当前状态
{
if(SecondCnt<=GreenTime-GsTime)
CurSta=0;
else if(SecondCnt<=GreenTime)
CurSta=1;
else if(SecondCnt<=GreenTime+GsTime)
CurSta=2;
else if(SecondCnt<=GreenTime+GsTime+YellowTime)
CurSta=3;
else if(SecondCnt<=GreenTime+GsTime+YellowTime+RedTime)
CurSta=4;
else
CurSta=0;
}
switch(CurSta)
{
case 0:
ManChanelSta=STA_GREEN;
CarChanelSta=STA_GREEN;
SecondCnt=GreenTime-GsTime-1;
break;
case 1:
ManChanelSta=STA_GS;
CarChanelSta=STA_GREEN;
SecondCnt=GreenTime-1;
break;
case 2:
ManChanelSta=STA_RED;
CarChanelSta=STA_GS;
SecondCnt=GreenTime+GsTime-1;
break;
case 3:
ManChanelSta=STA_RED;
CarChanelSta=STA_YELLOW;
SecondCnt=GreenTime+GsTime+YellowTime-1;
break;
case 4:
ManChanelSta=STA_RED;
CarChanelSta=STA_RED;
SecondCnt=GreenTime+GsTime+YellowTime+RedTime-1;
break;
default:
CurSta=0;
}
CurSta++;
if(CurSta>=4)
{
PhaseSwitch();
CurSta=0;
}
MeterSta=MSTA_MANUAL;
//ManuelFlag=1;//手动控制
//GreenWayFlag=0;//绿色通道关闭
}
void ModifyHoliday()
{//修改节日
//跟设置相位时间一样的做法
//输入:无,返回:无
//显示当前
unsigned char xdata kv,hang,pos,i,k;
unsigned int xdata t,t1,t2,t3;
//LcdInit();
hang=0;
pos=0;
//输入
kv=KEY_NOTKEY;
while(1)
{
while(kv==KEY_NOKEY)
{
kv=GetKey();
if(SecondFlag)
{
SecondCheck();
AutoLockCnt--;
SecondFlag=0;
if(AutoLockCnt<SYS_AUTO_LOCK_TIME)
{
DeskTopFlag=1;
PswLock=1;
return;
}
}
}
AutoLockCnt=SYS_LCD_OFF_TIME;
switch(kv)
{
case KEY_UP:
case KEY_LEFT:
LcdChar(hang,0,0x20);
if(hang==0)
{
if(pos>0)
pos--;
}
else
hang--;
//LcdChar(hang,0,CHOSEN_CH);
break;
case KEY_DOWN:
case KEY_RIGHT:
LcdChar(hang,0,0x20);
if(hang>=3)
{
hang=3;
if(pos<19-3)
pos++;
}
else
hang++;
break;
case KEY_DEL://删除节日
case KEY_BKSPACE:
EPR_Page_0();
t2=ADDR_HOLIDAY_HEAD-pos*HOLIDAY_LEN;
EPR_Write(t2-0,0xff);//年
EPR_Write(t2-1,0xff);//月
EPR_Write(t2-2,0xff);//日
EPR_Page_1();
return;
case KEY_ENTER:
LcdInit();
LcdCnString(1,0,"年:");
k=Get256Key(1,2);
if(k<100)
{
EPR_Page_0();
t2=ADDR_HOLIDAY_HEAD-pos*HOLIDAY_LEN-0;//年
EPR_Write(t2,k);
EPR_Page_1();
}
LcdCnString(1,0,"月:");
k=Get256Key(1,2);
if(k<=12)
{
EPR_Page_0();
t2=ADDR_HOLIDAY_HEAD-pos*HOLIDAY_LEN-1;//月
EPR_Write(t2,k);
EPR_Page_1();
}
LcdCnString(1,0,"日:");
k=Get256Key(1,2);
if(k<=31)
{
EPR_Page_0();
t2=ADDR_HOLIDAY_HEAD-pos*HOLIDAY_LEN-2;//日
EPR_Write(t2,k);
EPR_Page_1();
}
return;
case KEY_MENU:
DeskTopFlag=1;
MenuID=0x0000;
case KEY_CANCEL:
return;
default:
;
}
LcdInit();
for(t1=0;t1<4;t1++)
{
if(t1>=20)
break;
t2=ADDR_HOLIDAY_HEAD-(t1+pos)*HOLIDAY_LEN-0;//年
k=(EPR_Read(t2);
if(k>=100)
{//无效
LcdChar(hang,1,'-');LcdAddChar('-');LcdAddChar('/');
LcdAddChar('-');LcdAddChar('-');LcdAddChar('/');
LcdAddChar('-');LcdAddChar('-');
}
else
{
i=0;
while(k>=10)
{
k-=10;
i++;
}
i+='0';
LcdChar(t1,1,i);
k+='0';
LcdAddChar(k);
LcdAddChar('/');
k=ADDR_HOLIDAY_HEAD-(t1+pos)*HOLIDAY_LEN-1;//月
i=0;
while(k>=10)
{
k-=10;
i++;
}
i+='0';
LcdAddChar(i);
k+='0';
LcdAddChar(k);
LcdAddChar('/');
k=ADDR_HOLIDAY_HEAD-(t1+pos)*HOLIDAY_LEN-2;//日
i=0;
while(k>=10)
{
k-=10;
i++;
}
i+='0';
LcdAddChar(i);
k+='0';
LcdAddChar(k);
}
}
LcdChar(hang,0,CHOSEN_CH);
kv=KEY_NOKEY;
}
}
void GreenWayCtrl()
{
unsigned char xdata k;
k=MenuPos+ChosenPos;
if(k==0)
{//禁止通道
MeterSta=MSTA_AUTO;
HourUpdate();//更新所有
PhaseSwitch();
}
else if(k<=8)
{
k-=1;
MeterSta=MSTA_GREENWAY;
CheDaoBuf[2]=GreenWay[k][0];
CheDaoBuf[1]=GreenWay[k][1];
CheDaoBuf[0]=GreenWay[k][2];
SecondCnt=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -