📄 wanjt3.c
字号:
}
if(picnb==1)
{showw(curwda);}
if(++curday==begdaysinm(curtime))
{curday=0;
if(++curmon==12)
{ curmon=0;
if(++curylo==100)
{
curylo==0;
curyhi++;if(picnb==1){showcur(0);}
}
if(picnb==1){showcur(1);}
}
if(picnb==1){showcur(2);}
}
if(picnb==1){showcur(3);}
}
if(picnb==1){showcur(4);}
}
if(picnb==1){showcur(5);}
}
if(hfcursec%2==0)
{if(picnb==1){showcur(6);}}//两个半秒显示一次
//if(picnb==1)
// {
// showp(); //调用lcd接口输入为curtime 将显示对应的画面
// }
}}
void wan_testkb()//其中的picnb有待进一步检查
{
if(getkey())
{
switch(keyvalue)
{
case 0x03://fun
picnb=2;
showpn();//调用lcd接口输入为以上数组 将显示对应的画面
break;
case 0x01://sure
if(picnb==8)
{
picnb=1;
savetask();//与savetime()不同的是这里函数体为空因为调整时直接对task的元素进行的更改
wan_ints[tasknb].exist=1;
showpn();//调用lcd接口输入为以上数组 将显next
}
if(picnb==7)
{
picnb=1;
wan_ints[tasknb].tasktime.wan_week=focnb;
wan_ints[tasknb].exist=1;
showpn();//调用lcd接口输入为以上数组 将显next
}
if(picnb==6)
{
switch(focnb)
{
case 0://周闹钟
pflag2=1;
wan_ints[tasknb].mdo=2;
picnb++;showpn();
break;
case 1://日闹钟
pflag2=0;
wan_ints[tasknb].mdo=4;
wan_ints[tasknb].exist=1;
picnb=1;
showpn();
break;
case 2://只闹一次
pflag2=2;
wan_ints[tasknb].mdo=1;
picnb++;picnb++;showpn();
break;
default:
break;
}
}
if(picnb==5)
{
picnb++;
savetask();//与savetime()不同的是这里函数体为空因为调整时直接对task的元素进行的更改
tasknb=focnb;
showpn();
}
if((pflag1==1)&&(picnb==4))
{
picnb++;
tasknb=focnb;
//loadtt(focnb);//将curtime载入相应的任务元素中
wan_ints[tasknb].tasktime=curtime;
showpn();
}
if((pflag1==2)&&(picnb==4))
{
picnb=1;
wan_ints[focnb].exist=0;
showpn();
}
if(picnb==3)
{
picnb=1;
curtime=wan_ints[tasknb].tasktime;
showpn();
}
if(picnb==2)
{
if(focnb==0)
{
pflag1=0;//time the curtime
tasknb=4;
wan_ints[tasknb].tasktime=curtime;
}
else if(focnb==1)
{
pflag1=1;
picnb++;
}//time the task
else if(focnb==2)
{pflag1=2;picnb++;}//del the task
picnb++;
showpn();
}
//if(picnb==3)
//{
// savetesk();//即将时间存到curtime中
// picnb==1;
// showpn();//调用lcd接口输入为以上数组 将显next
// goto lable2;
//}
// if(pflag1==1&&pflag2==1&&picnb==4)
// {
// picnb++;
// showpn();//调用lcd接口输入为以上数组 将显next
// savetesk();
// goto lable2;
// }
//picnb++;
//showpn();//调用lcd接口输入为以上数组 将显next
break;
case 0x00://del
if(picnb==8||picnb==4)
{
picnb--;
}
picnb--;
showpn();//调用lcd接口输入为以上数组 将显示对应的画面
break;
case 0x06://right
focbuffer=focnb;focnb++;
focnb=focnb%focnbmax;
showplr();//调用lcd接口输入为以上数组 将显示对应的画面
break;
case 0x05://left
focbuffer=focnb;focnb=((focnb==0)?(focnbmax-1):--focnb);
showplr();//调用lcd接口输入为以上数组 将显示对应的画面
break;
case 0x02://up
upflag=1;
v1=*focvalue;
v1++;//需要让curtime同时加一 以让下面的showpic函数显示出最新值
*focvalue=v1%(focvmax+1);//又有了一个工作
v2=*focvalue;
//key_adjust();
showpud();//调用lcd接口输入为以上数组 将显示对应的画面
break;
case 0x04://down
upflag=0;
*focvalue=(*focvalue==0)?focvmax:--*focvalue;//又有了一个工作
//key_adjust();
showpud();//调用lcd接口输入为以上数组 将显示对应的画面
break;
default:
lable2:break;
}
}//end of if
}//end of wan_testkb
unsigned int getkey()
{
//unsigned int j=0;
v1=0;
//_pbc = 0xff;
if (~_pa)
{
//key pressed
_delay(2000); //debounce
//after debounce, if the key is still pressed
//we claim it a key pressed, otherwise ignore it
if (~_pa)
{
//while(~_pb);
//getkey_flag=1;
if((~_pa)&(unsigned char)0x40){keyvalue=0x06;while(~_pa != 0);}
else if((~_pa)&(unsigned char)0x20){keyvalue=0x05;while(~_pa != 0);}
else if((~_pa)&(unsigned char)0x10){keyvalue=0x04;while(~_pa != 0);}
else if((~_pa)&(unsigned char)0x08){keyvalue=0x03;while(~_pa != 0);}
else if((~_pa)&(unsigned char)0x04){keyvalue=0x02;while(~_pa != 0);}
else if((~_pa)&(unsigned char)0x02){keyvalue=0x01;while(~_pa != 0);}
else if((~_pa)&(unsigned char)0x01){keyvalue=0x00;while(~_pa != 0);}
v1=1;
}
}
return(v1);
}//end of getkey
void key_adjust()
{
//unsigned int hfconsec;
//unsigned int held_long_time = 0;//whether long press
v2=0;
repeat_inc:
if(upflag==1)
{
*focvalue++;//需要让curtime同时加一 以让下面的showpic函数显示出最新值
*focvalue=*focvalue%(focvmax+1);//又有了一个工作
}
else
{
//focvalue--;//需要让curtime同时加一 以让下面的showpic函数显示出最新值
*focvalue=(*focvalue==0)?focvmax:--*focvalue;//又有了一个工作
}
v1 = hfcursec;
while(~_pa != 0)
{
showpud();
if (!v2)
{
if (((hfcursec+120-v1)%120)>2)
{//longer than 1.5 sec
v2 = 1; //set flag
goto repeat_inc;//increase hour
}
//less than 1.5 seconds, do nothing
}
else{
if (hfcursec!=v1)
goto repeat_inc;//inc 1, 0.5 sec
//less than 0.5 second, do nothing
}
}
//half_second = 0;
set_timer();//dont understand why call the subroutine
//return held_long_time;
}
unsigned int ftiequal(struct wan_time one,struct wan_time twe)
{//unsigned int flag=0;
v1=0;
if((one.wan_yearhi==twe.wan_yearhi)&&(one.wan_yearlo==twe.wan_yearlo)&&(one.wan_month==twe.wan_month)&&(one.wan_week==twe.wan_week)&&(one.wan_day==twe.wan_day))
{ if((one.hms.wan_hour==twe.hms.wan_hour)&&(one.hms.wan_minite==twe.hms.wan_minite)&&(one.hms.wan_hfsec==twe.hms.wan_hfsec))
{
v1=1;
}
}
return v1;
}
unsigned int hmsequal(struct wan_hms one,struct wan_hms twe)
{
//unsigned int flag=0;
v1=0;
if((one.wan_hour==twe.wan_hour)&&(one.wan_minite==twe.wan_minite)&&(one.wan_hfsec==twe.wan_hfsec))
{v1=1;}
return v1;
}
void main()
{
unsigned int n=0;
struct wan_hms temphms=wan_ints[n].tasktime.hms;
struct wan_time temptime=wan_ints[n].tasktime;
init();
showpn();
for(v3=0;v3<200;v3++)
delay1(200);
clrram();
picnb++;
ttt();
//v14=curtime.hms.wan_hfsec;
showpn();
while(1)
{
if(wan_ints[0].exist=1)
{ n=0;
if(ftiequal(curtime,temptime))
{
if(wan_ints[n].mdo==8)
{_pb0=1;}//have been defined
}
else if(hmsequal(curtime.hms,temphms)&&(wan_ints[n].mdo==0))
{
_pb0=0;
}
else if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==curtime.wan_week)&&(1<wan_ints[n].mdo<7)){_pb0=0;}
}
if(wan_ints[1].exist=1)
{ n=1;
temphms=wan_ints[n].tasktime.hms;
temptime=wan_ints[n].tasktime;
if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==8))
{
_pb1=0;//have been defined
}
else if(hmsequal(curtime.hms,temphms)&&(wan_ints[n].mdo==0))
{
_pb1=0;
}
else if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==curtime.wan_week)&&(1<wan_ints[n].mdo<7)){_pb1=0;}
}
if(wan_ints[2].exist=1)
{ n=2;
temphms=wan_ints[n].tasktime.hms;
temptime=wan_ints[n].tasktime;
if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==8))
{
_pb2=0;//have been defined
}
else if(hmsequal(curtime.hms,temphms)&&(wan_ints[n].mdo==0))
{
_pb2=0;
}
else if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==curtime.wan_week)&&(1<wan_ints[n].mdo<7)){_pb2=0;}
}
if(wan_ints[3].exist=1)
{ n=3;
temphms=wan_ints[n].tasktime.hms;
temptime=wan_ints[n].tasktime;
if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==8))
{
_pb3=0;//have been defined
}
else if(hmsequal(curtime.hms,temphms)&&(wan_ints[n].mdo==0))
{
_pb3=0;
}
else if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==curtime.wan_week)&&(1<wan_ints[n].mdo<7)){_pb3=0;}
}
/*if(wan_ints[4].exist=1)
{ n=4;
if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==8))
{
_pb4=0;//have been defined
}
else if(hmsequal(curtime.hms,temphms)&&(wan_ints[n].mdo==0))
{
_pb4=0;
}
else if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==curtime.wan_week)&&(1<wan_ints[n].mdo<7)){_pb4=0;}
}
if(wan_ints[5].exist=1)
{ n=5;
if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==8))
{
_pb5=0;//have been defined
}
else if(hmsequal(curtime.hms,temphms)&&(wan_ints[n].mdo==0))
{
_pb5=0;
}
else if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==curtime.wan_week)&&(1<wan_ints[n].mdo<7)){_pb5=0;}
}
if(wan_ints[6].exist=1)
{ n=6;
if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==8))
{
_pb6=0;//have been defined
}
else if(hmsequal(curtime.hms,temphms)&&(wan_ints[n].mdo==0))
{
_pb6=0;
}
else if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==curtime.wan_week)&&(1<wan_ints[n].mdo<7)){_pb6=0;}
}
if(wan_ints[7].exist=1)
{ n=7;
if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==8))
{
_pb7=0;//have been defined
}
else if(hmsequal(curtime.hms,temphms)&&(wan_ints[n].mdo==0))
{
_pb7=0;
}
else if(ftiequal(curtime,temptime)&&(wan_ints[n].mdo==curtime.wan_week)&&(1<wan_ints[n].mdo<7)){_pb7=0;}
}
*/
arrt();
v14=curtime.hms.wan_hfsec;
wan_testkb();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -