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

📄 定时闹钟.lst

📁 课程设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
 204   4                      case 0xed: k=4; break; 
 205   4                      case 0xdd: k=5; break; 
 206   4                      case 0xbd: k=6; break; 
 207   4                      case 0x7d: k=7; break; 
 208   4                      case 0xeb: k=8; break; 
 209   4                      case 0xdb: k=9; break;  
 210   4                      case 0xbb: k=10;break; 
 211   4                      case 0x7b: k=11;break; 
 212   4                      case 0xe7: k=12;break; 
 213   4                      case 0xd7: k=13;break; 
 214   4                      case 0xb7: k=14;break; 
 215   4                      case 0x77: k=15;break; 
 216   4              }
 217   3              }
 218   2              }
 219   1      }
 220          
 221          
 222          /**************定时时间处理*************/
 223          void time_deal(void)
 224          {        //0
 225   1               if(( SET_hour[0]>0)||(SET_minite[0]>0))
 226   1               {      K0=1;
 227   2                      if(time1.Second==0)
 228   2                      {
 229   3                              if(D_0==1)
 230   3                              {
 231   4                                      D_0=0;
 232   4                                      if(SET_minite[0]==0)
 233   4                                      {       SET_minite[0]=60;
 234   5                                              if(SET_hour[0]==0)SET_hour[0]=0;
 235   5                                              SET_hour[0]--;
C51 COMPILER V8.02   定时闹钟                                                              06/03/2008 22:08:20 PAGE 5   

 236   5                                      }
 237   4                                      SET_minite[0]--;
 238   4                              }
 239   3                      }
 240   2                      else if(time1.Second==1)D_0=1;
 241   2               }
 242   1               else K0=0;
 243   1               //1
 244   1               if(( SET_hour[1]>0)||(SET_minite[1]>0))
 245   1               {       K1=1;
 246   2                      if(time1.Second==0)
 247   2                      {
 248   3                              if(D_1==1)
 249   3                              {
 250   4                                      D_1=0;
 251   4                                      if(SET_minite[1]==0)
 252   4                                      {       SET_minite[1]=60;
 253   5                                              if(SET_hour[1]==0)SET_hour[1]=0;
 254   5                                              SET_hour[1]--;
 255   5                                      }
 256   4                                      SET_minite[1]--;
 257   4                              }
 258   3                      }
 259   2                      else if(time1.Second==1)D_1=1;
 260   2               }
 261   1               else K1=0;
 262   1               //2
 263   1               if(( SET_hour[2]>0)||(SET_minite[2]>0))
 264   1               {       K2=1;
 265   2                      if(time1.Second==0)
 266   2                      {
 267   3                              if(D_2==1)
 268   3                              {
 269   4                                      D_2=0;
 270   4                                      if(SET_minite[2]==0)
 271   4                                      {       SET_minite[2]=60;
 272   5                                              if(SET_hour[2]==0)SET_hour[2]=0;
 273   5                                              SET_hour[2]--;
 274   5                                      }
 275   4                                      SET_minite[2]--;
 276   4                              }
 277   3                      }
 278   2                      else if(time1.Second==1)D_2=1;
 279   2               }
 280   1               else K2=0;
 281   1               //3
 282   1               if(( SET_hour[3]>0)||(SET_minite[3]>0))
 283   1               {       K3=1;
 284   2                      if(time1.Second==0)
 285   2                      {
 286   3                              if(D_3==1)
 287   3                              {
 288   4                                      D_3=0;
 289   4                                      if(SET_minite[3]==0)
 290   4                                      {       SET_minite[3]=60;
 291   5                                              if(SET_hour[3]==0)SET_hour[3]=0;
 292   5                                              SET_hour[3]--;
 293   5                                      }
 294   4                                      SET_minite[3]--;
 295   4                              }
 296   3                      }
 297   2                      else if(time1.Second==1)D_3=1;
C51 COMPILER V8.02   定时闹钟                                                              06/03/2008 22:08:20 PAGE 6   

 298   2               }
 299   1               else K3=0;
 300   1               //4
 301   1               if(( SET_hour[4]>0)||(SET_minite[4]>0))
 302   1               {      K4=1;
 303   2                      if(time1.Second==0)
 304   2                      {
 305   3                              if(D_4==1)
 306   3                              {
 307   4                                      D_4=0;
 308   4                                      if(SET_minite[4]==0)
 309   4                                      {       SET_minite[4]=60;
 310   5                                              if(SET_hour[4]==0)SET_hour[4]=0;
 311   5                                              SET_hour[4]--;
 312   5                                      }
 313   4                                      SET_minite[4]--;
 314   4                              }
 315   3                      }
 316   2                      else if(time1.Second==1)D_4=1;
 317   2               }
 318   1               else K4=0;
 319   1               //5
 320   1               if(( SET_hour[5]>0)||(SET_minite[5]>0))
 321   1               {      K5=1;
 322   2                      if(time1.Second==0)
 323   2                      {
 324   3                              if(D_5==1)
 325   3                              {
 326   4                                      D_5=0;
 327   4                                      if(SET_minite[5]==0)
 328   4                                      {       SET_minite[5]=60;
 329   5                                              if(SET_hour[5]==0)SET_hour[5]=0;
 330   5                                              SET_hour[5]--;
 331   5                                      }
 332   4                                      SET_minite[5]--;
 333   4                              }
 334   3                      }
 335   2                      else if(time1.Second==1)D_5=1;
 336   2               }
 337   1               else K5=0;
 338   1      }
 339          /****************加一函数***************/
 340          
 341          unsigned char add(unsigned char temp,unsigned char max)
 342          {
 343   1              temp++;
 344   1              if(temp>max)
 345   1              {
 346   2                      temp=0;
 347   2              }
 348   1              return temp;
 349   1      }
 350          /************主函数*************/
 351          void main()
 352          {       
 353   1              unsigned char i;
 354   1      
 355   1              lcd_init();
 356   1              Initial_DS1302();
 357   1              while(1)
 358   1              {  
 359   2                       P2=0xff;
C51 COMPILER V8.02   定时闹钟                                                              06/03/2008 22:08:20 PAGE 7   

 360   2                       DS1302_GetTime(&time1);                //读取时间参数            
 361   2               REA_time[9]=(time1.Second)%10;         //把秒的个位数据存入time[5]
 362   2               REA_time[8]=(time1.Second)/10;         //把秒的十位数据存入time[4]
 363   2               REA_time[7]=(time1.Minute)%10;         //把分的个位数据存入time[3]
 364   2               REA_time[6]=(time1.Minute)/10;         //把分的十位数据存入time[2]
 365   2               REA_time[5]=(time1.Hour)%10;           //把时的个位数据存入time[1]
 366   2               REA_time[4]=(time1.Hour)/10;               //把时的十位数据存入time[0]
 367   2                   REA_time[3]=(time1.Day)%10;                        //同上
 368   2                   REA_time[2]=(time1.Day)/10;
 369   2                   REA_time[1]=(time1.Month)%10;
 370   2                   REA_time[0]=(time1.Month)/10;
 371   2                              
 372   2                       time_deal();            
 373   2                       Getch();
 374   2                       switch(k)
 375   2                       {
 376   3                              case 0: time1.Month=add(time1.Month,12);DS1302_SetTime(0x88,time1.Month);k=16;break;
 377   3                              case 1: time1.Day=add(time1.Day,31);DS1302_SetTime(0x86,time1.Day);k=16;break;
 378   3                              case 2: time1.Hour=add(time1.Hour,24);DS1302_SetTime(0x84,time1.Hour);k=16;break;
 379   3                              case 3: time1.Minute=add(time1.Minute,59);DS1302_SetTime(0x82,time1.Minute);k=16;break;
 380   3                              case 4: SET_hour[0]=add(SET_hour[0],99);k=16;break;
 381   3                              case 5: SET_minite[0]=add(SET_minite[0],59);k=16;break;
 382   3                              case 6: SET_hour[1]=add(SET_hour[1],99);k=16;break;
 383   3                              case 7: SET_minite[1]=add(SET_minite[1],59);k=16;break;
 384   3                              case 8: SET_hour[2]=add(SET_hour[2],99);k=16;break;
 385   3                              case 9: SET_minite[2]=add(SET_minite[2],59);k=16;break;
 386   3                              case 10: SET_hour[3]=add(SET_hour[3],99);k=16; break;
 387   3                              case 11: SET_minite[3]=add(SET_minite[3],59);k=16;break;
 388   3                              case 12: SET_hour[4]=add(SET_hour[4],99);k=16;break;
 389   3                              case 13: SET_minite[4]=add(SET_minite[4],59);k=16;break;
 390   3                              case 14: SET_hour[5]=add(SET_hour[5],99);k=16;break;
 391   3                              case 15: SET_minite[5]=add(SET_minite[5],59);k=16;break;
 392   3                       }
 393   2                       display0();
 394   2                       for(i=0;i<3;i++)
 395   2                       {
 396   3                              display1(0,2+(2*i),i);
 397   3                              display1(72,2+(2*i),i+3);
 398   3                       }                      
 399   2      
 400   2                       
 401   2              }
 402   1      
 403   1      }
 404           
 405          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2340    ----
   CONSTANT SIZE    =    224    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     81      17
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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