⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wanjt3.c

📁 一个用嵌入c写的万年历程序
💻 C
📖 第 1 页 / 共 3 页
字号:
    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 + -