📄 wanjt3.c
字号:
chn_disp (pic);
}
void showfive()
{//uint h1,h2,m1,m2,s1,s2;
uint v1=wan_ints[tasknb].tasktime.hms.wan_hour/10+0x30;//h1
uint v2=wan_ints[tasknb].tasktime.hms.wan_hour%10+0x30;//h2
uint v3=wan_ints[tasknb].tasktime.hms.wan_minite/10+0x30;//m1
uint v4=wan_ints[tasknb].tasktime.hms.wan_minite%10+0x30;//m2
uint v5=wan_ints[tasknb].tasktime.hms.wan_hfsec/2/10+0x30;//s1
uint v6=wan_ints[tasknb].tasktime.hms.wan_hfsec/2%10+0x30;//s2
//uchar pic5[40]={
// ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
// ' ',' ',':',' ',' ',' ',':',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '
//};
pic[0]=' ';pic[1]=' ';pic[2]=' ';pic[3]=' ';pic[4]=' ';pic[5]=' ';pic[6]=' ';pic[7]=' ';pic[8]=' ';pic[9]=' ';
pic[10]=' ';pic[11]=' ';pic[12]=' ';pic[13]=' ';pic[14]=' ';pic[15]=' ';pic[16]=' ';pic[17]=' ';pic[18]=' ';pic[19]=' ';
pic[20]=' ';pic[21]=' ';pic[22]=':';pic[23]=' ';pic[24]=' ';pic[25]=' ';pic[26]=':';pic[27]=' ';pic[28]=' ';pic[29]=' ';
pic[30]=' ';pic[31]=' ';pic[32]=' ';pic[33]=' ';pic[34]=' ';pic[35]=' ';pic[36]=' ';pic[37]=' ';pic[38]=' ';pic[39]=' ';
focnbmax=3;
pic[20]=v1;
pic[21]=v2;
pic[24]=v3;
pic[25]=v4;
pic[28]=v5;
pic[29]=v6;
chn_disp (pic);
}
void showsix()
{focnbmax=3;
//uchar pic6[40]={
//"once a weeonce a day"
//"only once "
//};
pic[0]='o';pic[1]='n';pic[2]='c';pic[3]='e';pic[4]=' ';pic[5]='a';pic[6]=' ';pic[7]='w';pic[8]='e';pic[9]='e';
pic[10]='o';pic[11]='n';pic[12]='c';pic[13]='e';pic[14]=' ';pic[15]='a';pic[16]=' ';pic[17]='d';pic[18]='a';pic[19]='y';
pic[20]='o';pic[21]='n';pic[22]='l';pic[23]='y';pic[24]=' ';pic[25]='o';pic[26]='n';pic[27]='c';pic[28]='e';pic[29]=' ';
pic[30]=' ';pic[31]=' ';pic[32]=' ';pic[33]=' ';pic[34]=' ';pic[35]=' ';pic[36]=' ';pic[37]=' ';pic[38]=' ';pic[39]=' ';
chn_disp (pic);
}
void showseven()
{focnbmax=7;
//uchar pic7[40]={
//"mon tue wed sur fri "
//"sat sun "
//};
pic[0]='m';pic[1]='o';pic[2]='n';pic[3]=' ';pic[4]='t';pic[5]='u';pic[6]='e';pic[7]=' ';pic[8]='w';pic[9]='e';
pic[10]='d';pic[11]=' ';pic[12]='s';pic[13]='u';pic[14]='r';pic[15]=' ';pic[16]='f';pic[17]='r';pic[18]='i';pic[19]=' ';
pic[20]='s';pic[21]='a';pic[22]='t';pic[23]=' ';pic[24]='s';pic[25]='u';pic[26]='n';pic[27]=' ';pic[28]=' ';pic[29]=' ';
pic[30]=' ';pic[31]=' ';pic[32]=' ';pic[33]=' ';pic[34]=' ';pic[35]=' ';pic[36]=' ';pic[37]=' ';pic[38]=' ';pic[39]=' ';
chn_disp (pic);
}
void showeight()
{focnbmax=3;
v1=wan_ints[tasknb].tasktime.wan_yearhi/10+0x30;
v2=wan_ints[tasknb].tasktime.wan_yearhi%10+0x30;
v3=wan_ints[tasknb].tasktime.wan_yearlo/10+0x30;
v4=wan_ints[tasknb].tasktime.wan_yearlo%10+0x30;
v5=wan_ints[tasknb].tasktime.wan_month/10+0x30;
v6=wan_ints[tasknb].tasktime.wan_month%10+0x30;
v7=wan_ints[tasknb].tasktime.wan_day/10+0x30;
v8=wan_ints[tasknb].tasktime.wan_day%10+0x30;
//uchar pic8[40]={
// ' ',' ',' ',' ','.',' ',' ',' ','.',' ',' ',' ',
// ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '
//};
pic[0]=' ';pic[1]=' ';pic[2]=' ';pic[3]=' ';pic[4]='.';pic[5]=' ';pic[6]=' ';pic[7]=' ';pic[8]='.';pic[9]=' ';
pic[10]=' ';pic[11]=' ';pic[12]=' ';pic[13]=' ';pic[14]=' ';pic[15]=' ';pic[16]=' ';pic[17]=' ';pic[18]=' ';pic[19]=' ';
pic[20]=' ';pic[21]=' ';pic[22]=' ';pic[23]=' ';pic[24]=' ';pic[25]=' ';pic[26]=' ';pic[27]=' ';pic[28]=' ';pic[29]=' ';
pic[30]=' ';pic[31]=' ';pic[32]=' ';pic[33]=' ';pic[34]=' ';pic[35]=' ';pic[36]=' ';pic[37]=' ';pic[38]=' ';pic[39]=' ';
pic[0]=v1;
pic[1]=v2;
pic[2]=v3;
pic[3]=v4;
pic[6]=v5;
pic[7]=v6;
pic[10]=v7;
pic[11]=v8;
chn_disp (pic);
}
void showpn()
{
//uchar pic1[40];
//uchar pic3[40];
//uchar pic5[40];
//uchar pic8[40];
//initial();即将时间存在数组pic1中
focnb=0;
switch(picnb)
{
case 0:showzero();break;
case 1:showone();break;//想起一个问题关于传递指针参数想实验一把17:23 经验证可以 哈哈
case 2:showtwe();loc(0x80);break;//pic1358是现赋值的
case 3:showthree();loc(0x80);focloc=0x80;
focvalue=&(wan_ints[tasknb].tasktime.wan_yearhi);
focvmax=99;
break;
case 4:showfour();loc(0x81);break;
case 5:showfive();loc(0x90);focloc=0x90;focvalue=&(wan_ints[tasknb].tasktime.hms.wan_hour);focvmax=23;break;
case 6:showsix();loc(0x81);break;
case 7:showseven();loc(0x80);break;
case 8:showeight();loc(0x80);focloc=0x80;focvalue=&(wan_ints[tasknb].tasktime.wan_yearhi);focvmax=99;break;
default:break;
}
}
void turnl()
{ wr_lcd (comm,0x34);
wr_lcd (comm,0x04);
wr_lcd (dat,'f');
wr_lcd (dat,'j');}
void turnr()
{ wr_lcd (comm,0x34);
wr_lcd (comm,0x06);
wr_lcd (dat,'f');
wr_lcd (dat,'j');}
uint begdaysinm(struct wan_time curtime)
{
//uint dd,mm,yy,aa;
uint days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
//uint yy=curtime.wan_yearlo;
//uint mm=curtime.wan_month;
//uint dd=curtime.wan_day;
v1=curtime.wan_yearlo;
v2=curtime.wan_month;
if(((v1 & 0x03) == 0)&&(v2==2))
{
return 29;
}
return days[v2-1];
}
/*----------------左右按键后的效果------------*/
void showplr()
{//在座次函数前最好先实验翻白显示 en实验完毕
//uint i;
switch(picnb)
{
case 0:
case 1:break;
case 2:
switch(focnb)
{
case 0:
loc(0x80);focloc=0x80;
break;//
case 1:
loc(0x85);focloc=0x85;
break;//
case 2:
loc(0x90);focloc=0x90;
break;//
default:break;
}break;
case 3:
switch(focnb)
{
case 0:loc(0x80);focloc=0x80;
focvalue=&(wan_ints[tasknb].tasktime.wan_yearhi);focvmax=99;
break;
case 1:loc(0x81);focloc=0x81;
focvalue=&(wan_ints[tasknb].tasktime.wan_yearlo);focvmax=99;
break;
case 2:loc(0x83);focloc=0x83;
focvalue=&(wan_ints[tasknb].tasktime.wan_month);focvmax=12;
break;
case 3:loc(0x85);focloc=0x85;
focvalue=&(wan_ints[tasknb].tasktime.wan_day);
focvmax=begdaysinm(wan_ints[4].tasktime);
break;
case 4:loc(0x90);focloc=0x90;
focvalue=&(wan_ints[tasknb].tasktime.hms.wan_hour);focvmax=23;
break;
case 5:loc(0x92);focloc=0x92;
focvalue=&(wan_ints[tasknb].tasktime.hms.wan_minite);focvmax=59;
break;
case 6:loc(0x94);focloc=0x94;
focvalue=&(wan_ints[tasknb].tasktime.hms.wan_hfsec);focvmax=59;
break;
default:break;
}break;
case 4:
switch(focnb)
{
case 0:loc(0x81);focloc=0x81;break;
case 1:loc(0x83);focloc=0x83;break;
case 2:loc(0x86);focloc=0x86;break;
case 3:loc(0x88);focloc=0x88;break;
case 4:loc(0x91);focloc=0x91;break;
case 5:loc(0x93);focloc=0x93;break;
case 6:loc(0x96);focloc=0x96;break;
case 7:loc(0x98);focloc=0x98;break;
default:break;
}break;
case 5:
switch(focnb)
{
case 0:loc(0x90);focloc=0x90;focvalue=&(wan_ints[tasknb].tasktime.hms.wan_hour);focvmax=23;break;
case 1:loc(0x92);focloc=0x92;focvalue=&(wan_ints[tasknb].tasktime.hms.wan_minite);focvmax=59;break;
case 2:loc(0x94);focloc=0x94;focvalue=&(wan_ints[tasknb].tasktime.hms.wan_hfsec);focvmax=59;break;
default:break;
}break;
case 6:
switch(focnb)
{
case 0:loc(0x81);focloc=0x81;break;
case 1:loc(0x86);focloc=0x86;break;
case 2:loc(0x91);focloc=0x91;break;
default:break;
}break;
case 7:
switch(focnb)
{
case 0:loc(0x80);focloc=0x80;break;
case 1:loc(0x82);focloc=0x82;break;
case 2:loc(0x84);focloc=0x84;break;
case 3:loc(0x86);focloc=0x86;break;
case 4:loc(0x88);focloc=0x88;break;
case 5:loc(0x90);focloc=0x90;break;
case 6:loc(0x92);focloc=0x92;break;
default:break;
}break;
case 8:
switch(focnb)
{
case 0:loc(0x80);focloc=0x80;focvalue=&(wan_ints[tasknb].tasktime.wan_yearhi);focvmax=99;break;
case 1:loc(0x81);focloc=0x81;focvalue=&(wan_ints[tasknb].tasktime.wan_yearlo);focvmax=99;break;
case 2:loc(0x83);focloc=0x83;focvalue=&(wan_ints[tasknb].tasktime.wan_month);focvmax=12;break;
case 3:loc(0x85);focloc=0x85;focvalue=&(wan_ints[tasknb].tasktime.wan_day);focvmax=begdaysinm(wan_ints[4].tasktime);break;
default:break;
}break;
default:break;
}
}
/*----------------上下按键后的效果------------*/
void showpud()
{
v15=wan_ints[tasknb].tasktime.wan_yearhi/10+0x30;//uint y1
v16=wan_ints[tasknb].tasktime.wan_yearhi%10+0x30;//uint y2
v17=wan_ints[tasknb].tasktime.wan_yearlo/10+0x30;//uint y3
v4=wan_ints[tasknb].tasktime.wan_yearlo%10+0x30;//uint y4
if(wan_ints[tasknb].tasktime.wan_month==0){wan_ints[tasknb].tasktime.wan_month++;}
v5=wan_ints[tasknb].tasktime.wan_month/10+0x30;//uint m1
v6=wan_ints[tasknb].tasktime.wan_month%10+0x30;//uint m2
if(wan_ints[tasknb].tasktime.wan_day==0){wan_ints[tasknb].tasktime.wan_day++;}
v7=wan_ints[tasknb].tasktime.wan_day/10+0x30;//uint d1
v8=wan_ints[tasknb].tasktime.wan_day%10+0x30;//uint d2
v9=wan_ints[tasknb].tasktime.hms.wan_hour/10+0x30;//uint h1
v10=wan_ints[tasknb].tasktime.hms.wan_hour%10+0x30;//uint h2
v11=wan_ints[tasknb].tasktime.hms.wan_minite/10+0x30;//uint m3
v12=wan_ints[tasknb].tasktime.hms.wan_minite%10+0x30;//uint m4
v13=wan_ints[tasknb].tasktime.hms.wan_hfsec/2/10+0x30;//uint s1
v14=wan_ints[tasknb].tasktime.hms.wan_hfsec/2%10+0x30;//uint s2
switch(picnb)
{
case 0:
case 1:break;
case 2:
case 3:
switch(focnb)
{
case 0:rep(v15,v16);loc(focloc);break;
case 1:rep(v17,v4);loc(focloc);break;
case 2:rep(v5,v6);loc(focloc);break;
case 3:rep(v7,v8);loc(focloc);break;
case 4:rep(v9,v10);loc(focloc);break;
case 5:rep(v11,v12);loc(focloc);break;
case 6:rep(v13,v14);loc(focloc);break;
default:break;
}
case 4:break;
case 5:
switch(focnb)
{
case 0:rep(v9,v10);loc(focloc);break;
case 1:rep(v11,v12);loc(focloc);break;
case 2:rep(v13,v14);loc(focloc);break;
default:break;
}
case 6:break;
case 7:break;
case 8:
switch(focnb)
{
case 0:rep(v15,v16);loc(focloc);break;
case 1:rep(v17,v4);loc(focloc);break;
case 2:rep(v5,v6);loc(focloc);break;
case 3:rep(v7,v8);loc(focloc);break;
default:break;
}
default:break;
}
}
void ttt()
{
curtime.hms.wan_hour=10;
curtime.hms.wan_minite=30;
curtime.hms.wan_hfsec=110;
curtime.wan_yearhi=20;
curtime.wan_yearlo=06;
curtime.wan_month=5;
curtime.wan_day=12;
wan_ints[0].tasktime.hms.wan_hour=10;
wan_ints[0].tasktime.hms.wan_minite=30;
wan_ints[0].tasktime.hms.wan_hfsec=118;
wan_ints[0].tasktime.wan_yearhi=20;
wan_ints[0].tasktime.wan_yearlo=06;
wan_ints[0].tasktime.wan_month=5;
wan_ints[0].tasktime.wan_day=12;
wan_ints[0].mdo=8;
}
uint begweek(struct wan_time curtime)
{
///uint dd,mm,yy,aa;
v1=curtime.wan_yearlo+curtime.wan_yearhi*100;
v2=curtime.wan_month;
v3=curtime.wan_day;
if ((v2 == 1) || (v2 == 2))
{//一月、二月当作前一年的十三、十四月
v2 += 12;
v1--;
}
if ((v1 < 1752)||((v1 == 1752)&&(v2 < 9))||((v1 == 1752)&&(v2 == 9)&&(v3 < 3)))//判断是否在1752年9月3日前
v4 = (v3 + 2*v2 + 3*(v2+1)/5 + v1 + v1/4 +5) % 7;//1752年9月3日前的公式
else v4 = (v3 + 2*v2 + 3*(v2+1)/5 + v1 + v1/4 - v1/100 + v1/400) % 7;//1752年9月3日后的公式
//printf("It's a %s.\n",name[A]);
--v4;
return v4;
}
//end of yejing
void savetask()
{
switch(tasknb)
{
case 4:curtime=wan_ints[4].tasktime;break;
default:wan_ints[tasknb].exist=1;
}
}
//uint begdaysinm(struct wan_time curtime)
//{uint j=31;
//return j;}
/******Location of init*************/
void init()
{
picnb=0;
wan_clock=0;
pflag1=0;
pflag2=0;
_pcc=0;
_pc=0x00;
init_lcd ();
//_intc = 0;
//_tmr1c = 0;
//_tmr = 0;
//_pac = 0xff; //input mode
//_pbc = 0xff;
//_pcc = 0xff;
//。。。 //调用lcd接口输入为curtime 将显示对应的画面:welcome
_pac = 0xff; //set port a to input port exclude pa7
_pbc = 0; //set port b to output port
_pb = 0;
_pa = 0xff;
_intc = 0x09; //enable timer1 设定Timer/Counter为Timer Mode (TM1、TM0=10H) 打开相对应中断致能旗标 (ETI和EMI)
_tmr1c = 0x80; //timer1 mode (internal clock) 设定计数初始值 (TMR)
set_timer();
wan_ints[0].exist=1;
wan_ints[1].exist=0;
wan_ints[2].exist=0;
wan_ints[3].exist=0;
// 设定 Timer ON (TMRC.4=1)
//当Timer被打开后,Timer开始向上计数,
//若Timer OFF (TMRC.4=0),则Timer立即停止。
//下次Timer再ON,则从上次停留值继续往上数,直到满位溢出产生中断,同时Timer 重新加载初始值
}
void set_timer()
{
_tmr1c4 = 0;
_tmr1l = 0xb0;//to be modefined
_tmr1h = 0x3c;//to be modefined
_tmr1c4 = 1; //start timer1
}
void isr_c()
{++wan_clock;
}//end of isr_c()
void arrt()
{if(wan_clock>15)
{wan_clock=0;
++hfcursec;
if(hfcursec>=120)
{hfcursec=0;
if(++curmin==60)
{curmin=0;
if(++curhou==24)
{curhou=0;
if(++curwda==7)
{
curwda=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -