ht1380_time3.lst

来自「自己的平时一些制作 现在整理一下 与大家一起分享」· LST 代码 · 共 562 行 · 第 1/2 页

LST
562
字号
 264   2         j++;
 265   2         if(j>=57) j=0;
 266   2      }
 267   1      
 268   1      do
 269   1      { 
 270   2         if(i>=57) i=0;
 271   2         if(j>=57) j=0;
 272   2         SoundLong=SOUNDLONG[i];
 273   2         SoundTone=SOUNDTONE[j];
 274   2         i++;
 275   2         j++;
 276   2      
 277   2         for(n=0;n<SoundLong;n++)
 278   2         {
 279   3          for(k=0;k<12;k++)
 280   3          {
 281   4           beep=0;
 282   4           for(m=0;m<SoundTone/2;m++)
 283   4            ; 
 284   4           beep=1;
 285   4           for(m=0;m<SoundTone/2;m++)
 286   4            ;
 287   4          }
 288   3         }
 289   2         delay50us(6);
 290   2      }while((SOUNDLONG[i] !=0) || (SOUNDTONE[j] !=0));
 291   1      }
 292          
 293          
 294          
 295          
 296          
 297          
 298          
 299          
 300          
 301          
 302          
C51 COMPILER V7.01  HT1380_TIME3                                                           07/14/2007 22:45:25 PAGE 6   

 303          
 304          
 305          
 306          
 307          
 308          
 309          
 310          
 311          
 312          
 313          
 314          
 315          
 316          
 317          
 318          
 319          
 320          
 321          
 322          
 323          /*******主函数***********/
 324          //效果:
 325          //显示时分
 326          //可用按键调整时间-时分
 327          //在较时状态时,相应的数字闪烁
 328          //第一个按键用于调整到较时状态并且可以切换要修改的位,第二个按键用于加1..
 329          //..第三个按键用于减,第四个按键用于确认回到正常显示状态。
 330          //这里就不调整年月日了.大家可以考虑一下如何调整
 331          
 332          void main (void)
 333          {
 334   1       unsigned char keyboard,keyboard1;         //键值变量
 335   1       unsigned char state=0;          //状态指示 =1较时状态  =0正常显示状态
 336   1       unsigned char i,distem,w=3;                //变量
 337   1       year=07;month=03;day=0x05;hour=0x07;minute=0x16;second=13; //软件预设时间参数
 338   1        callhour=27,callminute=0,callsecond=0;
 339   1       beep=1;
 340   1       ht1380_rest=0;ht1380_sclk=0;   //选中时钟芯片
 341   1       read_time();                    //设置时间
 342   1       Init_Timer();                  //初始化定时器及全局变量
 343   1       number=0;                      
 344   1       distime=1;                    //冒号显示                  
 345   1       while(1)
 346   1           {  
 347   2                      distime=~distime;  // 闪动冒号    
 348   2                      read_time();      //读时间
 349   2                      if(state==0)      //state=0 正常显示状态
 350   2              {
 351   3                 read_time();
 352   3                 d[0]=hour/16;
 353   3                 d[1]=hour %16;
 354   3                 d[2]=minute/16;
 355   3                 d[3]=minute %16;
 356   3              }
 357   2              else               //较时状态。让需要较时的位闪动
 358   2              {  set_time();
 359   3                 distem=d[w];
 360   3                 d[w]=10;
 361   3                 for(i=0;i<250;i++)
 362   3                     delay(250);
 363   3                 d[w]=distem;
 364   3                 for(i=0;i<250;i++)
C51 COMPILER V7.01  HT1380_TIME3                                                           07/14/2007 22:45:25 PAGE 7   

 365   3                     delay(250);
 366   3              }
 367   2                      keyboard=getkey(); //读按键;
 368   2                       
 369   2             while(flag==1)
 370   2            
 371   2                       {  
 372   3                      
 373   3                               distime=1;
 374   3                   state=1;
 375   3                       /* set_time();*/
 376   3                  distem=d[w];
 377   3                   d[w]=10;
 378   3                 for(i=0;i<250;i++)
 379   3                     delay(250);
 380   3                 d[w]=distem;
 381   3                 for(i=0;i<250;i++)
 382   3                     delay(250);
 383   3                         
 384   3                  keyboard1=getkey();
 385   3                
 386   3              
 387   3                  if(keyboard1==1) 
 388   3                    {   state=1;       // ..按键后会同时向后退到下一位
 389   4                         w++;
 390   4                         if(w>3) w=0; 
 391   4                     } 
 392   3                  else if(keyboard1==2)
 393   3                     {   d[w]++;
 394   4                         if(d[0]>2) d[0]=0;
 395   4                                     if(d[0]==2&&d[1]>3) d[1]=0;
 396   4                                      if(d[2]>5) d[2]=0;
 397   4                         else if(w>=1&&d[w]>9) d[w]=0;
 398   4                      }
 399   3                  else if(keyboard1==3)
 400   3                     {   if(d[w]>0) d[w]--; }
 401   3                  else     if(keyboard1==4)
 402   3                     {   callhour=d[0]*16+d[1];
 403   4                         callminute=d[2]*16+d[3];
 404   4                         callsecond=0;
 405   4                            read_time();
 406   4                      d[0]=hour/16;
 407   4                      d[1]=hour %16;
 408   4                      d[2]=minute/16;
 409   4                      d[3]=minute %16;
 410   4                              state=0;
 411   4                      flag=0   
 412   4      
 413   4                           ;
 414   4                          
 415   4                      }
 416   3                               
 417   3              
 418   3                 } 
 419   2      
 420   2      
 421   2      
 422   2      
 423   2      
 424   2      
 425   2      
 426   2      
C51 COMPILER V7.01  HT1380_TIME3                                                           07/14/2007 22:45:25 PAGE 8   

 427   2      
 428   2      
 429   2       while(flag2==1)
 430   2            
 431   2                       {  
 432   3                      
 433   3                               distime=1;
 434   3                   state=1;
 435   3                       /* set_time();*/
 436   3                  distem=d[w];
 437   3                   d[w]=10;
 438   3                 for(i=0;i<250;i++)
 439   3                     delay(250);
 440   3                 d[w]=distem;
 441   3                 for(i=0;i<250;i++)
 442   3                     delay(250);
 443   3                         
 444   3                  keyboard1=getkey();
 445   3                
 446   3              
 447   3                  if(keyboard1==1) 
 448   3                    {   state=1;       // ..按键后会同时向后退到下一位
 449   4                         w++;
 450   4                         if(w>3) w=0; 
 451   4                     } 
 452   3                  else if(keyboard1==2)
 453   3                     {   d[w]++;
 454   4                         if(d[0]>2) d[0]=0;
 455   4                                     if(d[0]==2&&d[1]>3) d[1]=0;
 456   4                                      if(d[2]>5) d[2]=0;
 457   4                         else if(w>=1&&d[w]>9) d[w]=0;
 458   4                      }
 459   3                  else if(keyboard1==3)
 460   3                     {   if(d[w]>0) d[w]--; }
 461   3                  else     if(keyboard1==4)
 462   3                     {   callhour2=d[0]*16+d[1];
 463   4                         callminute2=d[2]*16+d[3];
 464   4                         callsecond2=0;
 465   4                            read_time();
 466   4                      d[0]=hour/16;
 467   4                      d[1]=hour %16;
 468   4                      d[2]=minute/16;
 469   4                      d[3]=minute %16;
 470   4                              state=0;
 471   4                      flag2=0   
 472   4      
 473   4                           ;
 474   4                          
 475   4                      }
 476   3                               
 477   3              
 478   3                 } 
 479   2      
 480   2      
 481   2      
 482   2      
 483   2      
 484   2            
 485   2       
 486   2             if(keyboard==1)    // keyboard=1时,切换转态到较时并且多次..
 487   2              {   state=1;       // ..按键后会同时向后退到下一位
 488   3                  w++;
C51 COMPILER V7.01  HT1380_TIME3                                                           07/14/2007 22:45:25 PAGE 9   

 489   3                  if(w>3) w=0; 
 490   3              }
 491   2              else if(keyboard==2)
 492   2              {   d[w]++;
 493   3                  if(d[0]>2) d[0]=0;
 494   3                              if(d[0]==2&&d[1]>3) d[1]=0;
 495   3                              if(d[2]>5) d[2]=0;
 496   3                  else if(w>=1&&d[w]>9) d[w]=0;
 497   3              }
 498   2              else if(keyboard==3)
 499   2              {   if(d[w]>0) d[w]--; }
 500   2              else if(keyboard==4)
 501   2              {    hour=d[0]*16+d[1];
 502   3                   minute=d[2]*16+d[3];
 503   3                   
 504   3                           set_time();
 505   3                   state=0;
 506   3              }
 507   2                      
 508   2              if(hour==callhour&&minute==callminute&&second>=0&&second<=0x30)
 509   2                    {
 510   3                  Music(1);
 511   3                  
 512   3                }
 513   2                      if(hour==callhour2&&minute==callminute2&&second>=0&&second<=0x30)
 514   2                  Music(2);
 515   2                  
 516   2                
 517   2           }
 518   1      
 519   1      }
 520          
 521          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1595    ----
   CONSTANT SIZE    =    131    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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