ds1302.lst

来自「自己做的单片机Proteus仿真实例」· LST 代码 · 共 482 行 · 第 1/2 页

LST
482
字号
 226   4                                                case 5:write_com(0x80+9);
 227   4                                                   
 228   4                                                               break;
 229   4                                                case 6:write_com(0x80+6);
 230   4                                                       
 231   4                                                               break;
 232   4                                                case 7:write_com(0x80+3);
 233   4                                                
 234   4                                                               break;
 235   4                                                case 8:s1num=0;
 236   4                                                       write_com(0x0c);
 237   4                                                               flag=0;
 238   4                                                               write1302(0x8e,0x00);
 239   4                                       write1302(0x80,((Second/10)<<4|(Second%10)));   
 240   4                                   write1302(0x82,((Minute/10)<<4|(Minute%10)));   
C51 COMPILER V9.00   DS1302                                                                07/29/2012 18:04:57 PAGE 5   

 241   4                                   write1302(0x84,((Hour/10)<<4|(Hour%10))); 
 242   4                                   write1302(0x86,((Day/10)<<4|(Day%10))); 
 243   4                                   write1302(0x88,((Month/10)<<4|(Month%10))); 
 244   4                                   write1302(0x8c,((Year/10)<<4|(Year%10)));  
 245   4                                   write1302(0x8a,((Week/10)<<4|(Week%10)));
 246   4                                                               break;
 247   4      
 248   4                              }
 249   3                     }
 250   2      
 251   2           }
 252   1               if(s1num!=0)
 253   1                 {
 254   2                       if(s2==0);
 255   2                               {
 256   3                                      delay(5);
 257   3                                              if(s2==0)
 258   3                                              {
 259   4                                                   while(!s2);
 260   4                                              
 261   4                                                       if(s1num==1)
 262   4                                                       {
 263   5                                                            Second++;
 264   5                                                                if(Second==60)
 265   5                                                                      Second=0;
 266   5                                                                write_sfm(10,Second);
 267   5                                                                write_com(0x80+0x40+10);
 268   5                                                       }
 269   4                                                       if(s1num==2)
 270   4                                                       {
 271   5                                                            Minute++;
 272   5                                                                if(Minute==60)
 273   5                                                                      Minute=0;
 274   5                                                                write_sfm(7,Minute);
 275   5                                                                write_com(0x80+0x40+7);
 276   5                                                       }                 
 277   4                                                       if(s1num==3)
 278   4                                                       {
 279   5                                                            Hour++;
 280   5                                                                if(Hour==24)
 281   5                                                                      Hour=0;
 282   5                                                                write_sfm(4,Hour);
 283   5                                                                write_com(0x80+0x40+4);
 284   5                                                       }
 285   4                                                       if(s1num==4)
 286   4                                                       {
 287   5                                                            Week++;
 288   5                                                                if(Week==8)
 289   5                                                                      Week=1;
 290   5                                                                write_week(Week);
 291   5                                                                write_com(0x80+12);
 292   5                                                       }
 293   4                                                       if(s1num==5)
 294   4                                                       {
 295   5                                                            Day++;
 296   5                                                                if(Day==32)
 297   5                                                                      Day=1;
 298   5                                                                write_nyr(9,Day);
 299   5                                                                write_com(0x80+9);
 300   5                                                       }
 301   4                                                       if(s1num==6)
 302   4                                                       {
C51 COMPILER V9.00   DS1302                                                                07/29/2012 18:04:57 PAGE 6   

 303   5                                                            Month++;
 304   5                                                                if(Month==13)
 305   5                                                                      Month=1;
 306   5                                                                write_nyr(6,Month);
 307   5                                                                write_com(0x80+6);
 308   5                                                       }
 309   4                                                       if(s1num==7)
 310   4                                                       {
 311   5                                                            Year++;
 312   5                                                                if(Year==100)
 313   5                                                                      Year=0;
 314   5                                                                write_nyr(3,Year);
 315   5                                                                write_com(0x80+3);
 316   5                                                       }
 317   4                                                               
 318   4                                           }
 319   3      
 320   3                                      }          
 321   2                        if(s3==0);
 322   2                               {
 323   3                                      delay(5);
 324   3                                              if(s3==0)
 325   3                                              {
 326   4                                                   while(!s3);
 327   4                                              
 328   4                                                       if(s1num==1)
 329   4                                                       {
 330   5                                                            Second--;
 331   5                                                                if(Second==-1)
 332   5                                                                      Second=59;
 333   5                                                                write_sfm(10,Second);
 334   5                                                                write_com(0x80+0x40+10);
 335   5                                                       }
 336   4                                                       if(s1num==2)
 337   4                                                       {
 338   5                                                            Minute--;
 339   5                                                                if(Minute==-1)
 340   5                                                                      Minute=59;
 341   5                                                                write_sfm(7,Minute);
 342   5                                                                write_com(0x80+0x40+7);
 343   5                                                       }                 
 344   4                                                       if(s1num==3)
 345   4                                                       {
 346   5                                                            Hour--;
 347   5                                                                if(Hour==-1)
 348   5                                                                      Hour=23;
 349   5                                                                write_sfm(4,Hour);
 350   5                                                                write_com(0x80+0x40+4);
 351   5                                                       }
 352   4                                                       if(s1num==4)
 353   4                                                       {
 354   5                                                            Week--;
 355   5                                                                if(Week==0)
 356   5                                                                      Week=7;
 357   5                                                                write_week(Week);
 358   5                                                                write_com(0x80+12);
 359   5                                                       }
 360   4                                                       if(s1num==5)
 361   4                                                       {
 362   5                                                            Day--;
 363   5                                                                if(Day==0)
 364   5                                                                      Day=31;
C51 COMPILER V9.00   DS1302                                                                07/29/2012 18:04:57 PAGE 7   

 365   5                                                                write_nyr(9,Day);
 366   5                                                                write_com(0x80+9);
 367   5                                                       }
 368   4                                                       if(s1num==6)
 369   4                                                       {
 370   5                                                            Month--;
 371   5                                                                if(Month==0)
 372   5                                                                      Month=12;
 373   5                                                                write_nyr(6,Month);
 374   5                                                                write_com(0x80+6);
 375   5                                                       }
 376   4                                                       if(s1num==7)
 377   4                                                       {
 378   5                                                            Year--;
 379   5                                                                if(Year==-1)
 380   5                                                                      Year=99;
 381   5                                                                write_nyr(3,Year);
 382   5                                                                write_com(0x80+3);
 383   5                                                       }
 384   4                                                               
 385   4                                           }
 386   3      
 387   3                                      }
 388   2                 
 389   2                }       
 390   1      
 391   1      }
 392          ////////////////初始化和主函数部分////////////////////////////////////////////////////////////////////////
             -//////
 393          void lcd_init()
 394          {       
 395   1           uchar num;
 396   1           lcden=0;
 397   1           write_com(0x38);
 398   1               write_com(0x0c);
 399   1               write_com(0x06);
 400   1           write_com(0x01); 
 401   1               write_com(0x81);
 402   1               for(num=0;num<10;num++) 
 403   1                       {
 404   2                       write_data(table1[num]);
 405   2                           delay(5);
 406   2                       }
 407   1               write_com(0x80+0x40+4);
 408   1               for(num=0;num<8;num++) 
 409   1                       {
 410   2                       write_data(table2[num]);
 411   2                           delay(5);
 412   2                       }
 413   1               
 414   1      }
 415          void init1302()
 416          {
 417   1          write1302(0x8e,0x00);
 418   1              write1302(0x80,((50/10)<<4|(50%10)));   //根据写秒寄存器命令字,写入秒的初始值
 419   1          write1302(0x82,((59/10)<<4|(59%10)));   //根据写分寄存器命令字,写入分的初值
 420   1          write1302(0x84,((12/10)<<4|(12%10))); 
 421   1          write1302(0x86,((29/10)<<4|(29%10))); 
 422   1          write1302(0x88,((2/10)<<4|(2%10))); 
 423   1          write1302(0x8c,((12/10)<<4|(12%10)));  
 424   1          write1302(0x8a,((4/10)<<4|(4%10)));
 425   1      } 
C51 COMPILER V9.00   DS1302                                                                07/29/2012 18:04:57 PAGE 8   

 426          void  main()
 427          {
 428   1          lcd_init();
 429   1              init1302();
 430   1              gettime();
 431   1              display();
 432   1          while(1) 
 433   1         {     
 434   2               keyscan();
 435   2               if(flag==0)
 436   2                 {
 437   3                     gettime();
 438   3                     display(); 
 439   3                 }
 440   2         }    
 441   1        
 442   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1348    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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