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

📄 万年历.lst

📁 基于AT89S52的万年历C51程序 开发平台:Keil uVision2 日历芯片:DS1302
💻 LST
📖 第 1 页 / 共 2 页
字号:
 262          *                以下是通过按键控制年,月,日,时,分,秒,星期的显示和设置   
 263          *
 264          *********************************************************************************************/
 265          void nian()//显示和设置年 
 266          {            
 267   1                if(keys==10)              //键值为10    表示年份
 268   1                {
 269   2                      while(1)
 270   2                      {
 271   3                          W1302( 0x8e, 0x00);   //打开写保护
 272   3                          da=R1302(0x8d);
 273   3                          a[0]=2;
 274   3                          a[1]=0;
 275   3                          a[2]=(da&0xf0)/16;
 276   3                          a[3]=(da&0x0f);          //将键值记录
 277   3                          i=4;                        
 278   3                          xianshi(a,i);                                                               
 279   3                          keys=jpdata();
 280   3                          if(keys==14)                         //设置年份
 281   3                              {
 282   4                                      
 283   4                              for(i=2;i<4;)
 284   4                              {                                               
 285   5                                  if(jpdata()<10)
 286   5                                              {
 287   6                                      keys=jpdata();
 288   6                                      a[i]=keys;
 289   6                                              i++;
 290   6                                      while(1)
 291   6                                                      {
 292   7                                                      if(jpdata()==16)
 293   7                                                                      break;
 294   7                                                      xianshi(a,i);
 295   7                                                      }       
 296   6                                              } 
 297   5                                                                              
 298   5                                  xianshi(a,i);
 299   5                                      }
 300   4                                                      W1302( 0x8e, 0x00);
 301   4                              W1302(0x8c,(a[2]*16)|a[3]);                                     
 302   4                              }
 303   3                          if(keys==11)  {yue_ri();}
C51 COMPILER V7.50   万年繽                                                                03/10/2009 19:04:18 PAGE 6   

 304   3                          if(keys==12)  {shi_fen();}
 305   3                          if(keys==13)  {miao();}
 306   3                          if(keys==15)  {xingqi();}   
 307   3                         
 308   3                    }                            //将键值的有效位数记录
 309   2               }
 310   1      }
 311          
 312          
 313          
 314          void yue_ri()//显示和设置月/日
 315          {
 316   1          if(keys==11)                  // 表示月/日
 317   1                      {
 318   2                          while(1)
 319   2                          {
 320   3                              W1302( 0x8e, 0x00);
 321   3                              da=R1302(0x89);            //读月
 322   3                              a[0]=(da&0xf0)>>4;  
 323   3                              a[1]=(da&0x0f);
 324   3                                                      W1302( 0x8e, 0x00);
 325   3                              da=R1302(0x87);            //读日
 326   3                              a[2]=(da&0xf0)>>4;
 327   3                              a[3]=(da&0x0f);         //将键值记录
 328   3                              i=4;
 329   3                              xianshi(a,i);                                                                   
 330   3                              keys=jpdata();
 331   3                              if(keys==14)               //设置月/日
 332   3                                  {
 333   4                                      
 334   4                                  for(i=0;i<4;)
 335   4                                  {                                           
 336   5                                      if(jpdata()<10)
 337   5                                              {
 338   6                                          keys=jpdata();
 339   6                                          a[i]=keys;
 340   6                                              i++;
 341   6                                          while(1)
 342   6                                                  {
 343   7                                                      if(jpdata()==16)
 344   7                                                              break;
 345   7                                                      xianshi(a,i);
 346   7                                                  }   
 347   6                                      } 
 348   5                                                                                      
 349   5                                      xianshi(a,i);
 350   5                                      }       
 351   4                                              W1302( 0x8e, 0x00);                       //打开写保护
 352   4                                  W1302(0x88,(a[0]*16)|a[1]);   //写入月
 353   4                                              W1302(0x86,(a[2]*16)|a[3]);   //写入日                                  
 354   4                              }       
 355   3                             if(keys==10)  {nian();}
 356   3                             if(keys==12)  {shi_fen();}
 357   3                             if(keys==13)  {miao();}
 358   3                             if(keys==15)  {xingqi();}  
 359   3                                                              
 360   3                          }                               
 361   2                     }  
 362   1      }
 363          
 364          
 365          void shi_fen()//显示和设置时和分
C51 COMPILER V7.50   万年繽                                                                03/10/2009 19:04:18 PAGE 7   

 366          {
 367   1           if(keys==12)     //时/分       其它同上
 368   1                      {
 369   2                          while(1)
 370   2                          {
 371   3                              W1302( 0x8e, 0x00);
 372   3                              da=R1302(0x85);
 373   3                              a[0]=(da&0xf0)>>4;
 374   3                              a[1]=(da&0x0f);
 375   3                                                      W1302( 0x8e, 0x00);
 376   3                              da=R1302(0x83);
 377   3                              a[2]=(da&0xf0)>>4;
 378   3                              a[3]=(da&0x0f);          //将键值记录
 379   3                              
 380   3                              i=4;
 381   3                              xianshi(a,i);                                                                   
 382   3                              keys=jpdata();
 383   3                              if(keys==11)  {yue_ri();}
 384   3                              if(keys==10)  {nan();}
*** WARNING C206 IN LINE 384 OF 万年历.C: 'nan': missing function-prototype
 385   3                              if(keys==13)  {miao();}
 386   3                              if(keys==15)  {xingqi();}                               
 387   3                              if(keys==14)
 388   3                                  {
 389   4                                      
 390   4                                  for(i=0;i<4;)
 391   4                                  {                                           
 392   5                                      if(jpdata()<10)
 393   5                                              {
 394   6                                          keys=jpdata();
 395   6                                          a[i]=keys;
 396   6                                              i++;
 397   6                                          while(1)
 398   6                                                  {
 399   7                                                      if(jpdata()==16)
 400   7                                                           break;
 401   7                                                      xianshi(a,i);
 402   7                                                  }   
 403   6                                          } 
 404   5                                                                                      
 405   5                                       xianshi(a,i);
 406   5                                      }
 407   4                                              W1302( 0x8e, 0x00);
 408   4                                  W1302(0x84,(a[0]*16)|a[1]); 
 409   4                                              W1302(0x82,(a[2]*16)|a[3]);                                     
 410   4                             }        
 411   3                             
 412   3                        }                              //将键值的有效位数记录
 413   2                   } 
 414   1      }
 415          
 416          void miao()//显示和设置秒
 417          {
 418   1            if(keys==13)   //秒           //键值小于10,为年输入
 419   1                      {
 420   2                          while(1)
 421   2                          {
 422   3                              W1302( 0x8e, 0x00);
 423   3                              da=R1302(0x81);
 424   3                              a[0]=10;//前两位不显示
 425   3                              a[1]=10;
 426   3                              a[2]=(da&0xf0)>>4;
C51 COMPILER V7.50   万年繽                                                                03/10/2009 19:04:18 PAGE 8   

 427   3                              a[3]=(da&0x0f);          //将键值记录
 428   3                              i=4;
 429   3                              xianshi(a,i);                                                                   
 430   3                              keys=jpdata();
 431   3                              if(keys==11)  {yue_ri();}
 432   3                              if(keys==12)  {shi_fen();}
 433   3                              if(keys==10)  {nian();}
 434   3                              if(keys==15)  {xingqi();}  
 435   3                                                              
 436   3                              if(keys==14)//设置
 437   3                              {
 438   4                                      
 439   4                                  for(i=2;i<4;)
 440   4                                  {                                           
 441   5                                      if(jpdata()<10)
 442   5                                              {
 443   6                                          keys=jpdata();
 444   6                                          a[i]=keys;
 445   6                                              i++;
 446   6                                          while(1)
 447   6                                                  {
 448   7                                                      if(jpdata()==16)
 449   7                                                           break;
 450   7                                                      xianshi(a,i);
 451   7                                                  }   
 452   6                                          } 
 453   5                                                                                      
 454   5                                      xianshi(a,i);
 455   5                                      }
 456   4                                              W1302( 0x8e, 0x00);
 457   4                                  W1302(0x80,(a[2]*16)|a[3]);                                         
 458   4                              }       
 459   3                              
 460   3                         }                              //将键值的有效位数记录
 461   2                    } 
 462   1      }
 463          
 464          
 465          void xingqi()//显示和设置星期
 466          {
 467   1            if(keys==15)   
 468   1                     {
 469   2                          while(1)
 470   2                          {
 471   3                              W1302( 0x8e, 0x00);
 472   3                              da=R1302(0x8b);
 473   3                                      a[0]=10;//前三位不显示
 474   3                                      a[1]=10;
 475   3                              a[2]=10;
 476   3                              //a[2]=(da&0xf0)>>4;
 477   3                              a[3]=(da&0x0f);                   
 478   3                              i=4;
 479   3                              xianshi(a,i);                                                                   
 480   3                              keys=jpdata();
 481   3                              if(keys==11)  {yue_ri();}
 482   3                              if(keys==12)  {shi_fen();}
 483   3                              if(keys==13)  {miao();}
 484   3                              if(keys==10)  {nian();}            
 485   3                              if(keys==14)            //设置
 486   3                                  {
 487   4                                      for(i=3;i<4;)
 488   4                                  {                   
C51 COMPILER V7.50   万年繽                                                                03/10/2009 19:04:18 PAGE 9   

 489   5                                      if(jpdata()<10)
 490   5                                              {
 491   6                                          keys=jpdata();
 492   6                                          a[i]=keys;
 493   6                                                          i++;
 494   6                                                      
 495   6                                          while(1)
 496   6                                                  {
 497   7                                                 if(jpdata()==16)
 498   7                                                           break;
 499   7                                                 xianshi(a,i);
 500   7                                                  }   
 501   6                                          } 
 502   5                                                                                      
 503   5                                      xianshi(a,i);
 504   5                                      }
 505   4                                              W1302( 0x8e, 0x00);
 506   4                                  W1302(0x8a,a[3]);                                           
 507   4                                  }   
 508   3                                              
 509   3                          }                              //将键值的有效位数记录
 510   2                   } 
 511   1      }
 512          
 513          
 514          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1383    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13      17
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  1 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -