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

📄 wanjt3.c

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