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

📄 main_v2.lst

📁 KEIL下编的SST89E58单片机万年历(定时器)程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 226   2                                      put_char(4,0,'-');
 227   2                                      put_char(7,0,'-');
 228   2                                      put_char(10,1,':');     
 229   2                                      put_char(13,1,':');
 230   2                                      }
 231   1                       else if(sys_mode==2)
 232   1                                      {
 233   2                                      put_char(8,1,stop_hour/10+48);
 234   2                                      put_char(9,1,stop_hour%10+48);
 235   2      
 236   2                                      put_char(11,1,stop_min/10+48);
 237   2                                      put_char(12,1,stop_min%10+48);
 238   2      
 239   2                                      put_char(14,1,stop_sec/10+48);
 240   2                                      put_char(15,1,stop_sec%10+48);
C51 COMPILER V7.06   MAIN_V2                                                               10/26/2008 02:07:00 PAGE 5   

 241   2                                      
 242   2                                      put_char(14,1,stop_ms/10+48);
 243   2                                      put_char(15,1,stop_ms%10+48);
 244   2                                      put_char(10,1,':');     
 245   2                                      put_char(13,1,':');
 246   2                                      switch(stop_mode)
 247   2                                      {
 248   3                                      case 0:
 249   3                                              put_str("STOP ",1);
 250   3                                              break;
 251   3                                      case 1:
 252   3                                      case 2:
 253   3                                              put_str("START",1);
 254   3                                              break;
 255   3                                      case 3:
 256   3                                              put_str("PAUSE",1);
 257   3                                              break;
 258   3                                      
 259   3                                      }
 260   2                                      }
 261   1              disp_flag=0;                    
 262   1      }
 263          
 264          void delay(u16 timeinms)
 265          {
 266   1              u16 i,j;
 267   1              for (i=timeinms;i>0;i--)
 268   1                      for(j=0;j<1000;j++)
 269   1                              _nop_();
 270   1      }
 271          
 272          void key_scan()
 273          {
 274   1              P1=0xFF;
 275   1              if(P1!=0xFF)
 276   1                      {
 277   2                              key_temp=P1;
 278   2                              delay(2);
 279   2                              if(key_temp==P1&&key_coun<65535)
 280   2                                              key_coun+=1;
 281   2                      }
 282   1               else
 283   1                      key_coun=0;
 284   1      }
 285          
 286          void key_proc()
 287          {
 288   1      //按键变速处理
 289   1              if(key_coun>200)
 290   1                      max_speed=2;
 291   1              else if(key_coun>100)
 292   1                      max_speed=15;
 293   1              else 
 294   1                      max_speed=30;
 295   1      
 296   1      //长按键处理
 297   1              if(key_coun>50)
 298   1                      {
 299   2                              if(key_temp==KEY1)
 300   2                                      {
 301   3                                              if(sys_mode==1)
 302   3                                                      sys_mode=0;
C51 COMPILER V7.06   MAIN_V2                                                               10/26/2008 02:07:00 PAGE 6   

 303   3                                              sys_config();
 304   3                                      }
 305   2                              
 306   2      
 307   2                              if(key_temp==KEY2)
 308   2                                      {
 309   3                                      if(key_speed>max_speed)
 310   3                                              {
 311   4                                              if(wink_mode==1)
 312   4                                                      {year-=1;no_op_time=0;display();}
 313   4                                              else if(wink_mode==2)
 314   4                                              value_adj(&month,1,12,SUB);
 315   4                                              else if(wink_mode==3)
 316   4                                              value_adj(&day,1,non_leap_table[month-1+(calc_day(year)?12:0)],SUB);
 317   4                                              else if(wink_mode==4)
 318   4                                              value_adj(&hour,0,23,SUB);
 319   4                                              else if(wink_mode==5)
 320   4                                              value_adj(&min,0,59,SUB);
 321   4                                              else if(wink_mode==6)
 322   4                                              sec=0;
 323   4                                              else;
 324   4      
 325   4                                              key_speed=0;
 326   4                                              }
 327   3                                      key_speed+=1;
 328   3                                      
 329   3                                      }
 330   2      
 331   2                              if(key_temp==KEY3)
 332   2                                      {
 333   3                                      if(key_speed>max_speed)
 334   3                                              {
 335   4                                              if(wink_mode==1)
 336   4                                                      {year+=1;no_op_time=0;display();}
 337   4                                              else if(wink_mode==2)
 338   4                                              value_adj(&month,1,12,ADD);
 339   4                                              else if(wink_mode==3)
 340   4                                              value_adj(&day,1,non_leap_table[month-1+(calc_day(year)?12:0)],ADD);
 341   4                                              else if(wink_mode==4)
 342   4                                              value_adj(&hour,0,23,ADD);
 343   4                                              else if(wink_mode==5)
 344   4                                              value_adj(&min,0,59,ADD);
 345   4                                              else if(wink_mode==6)
 346   4                                              sec=0;
 347   4                                              else;
 348   4                                              //value_adj(&min,0,59,SUB);
 349   4                                              key_speed=0;
 350   4                                              }
 351   3                                      key_speed+=1;
 352   3                                      }
 353   2      
 354   2      
 355   2                              return;
 356   2                      }
 357   1              if(key_coun>3&&(P1!=key_temp))
 358   1              {
 359   2                              switch(key_temp) {
 360   3                                      case KEY1:
 361   3                                              {
 362   4                                                      if(wink_mode)
 363   4                                                              {
 364   5                                                                      if(wink_mode<6)
C51 COMPILER V7.06   MAIN_V2                                                               10/26/2008 02:07:00 PAGE 7   

 365   5                                                                              wink_mode+=1;
 366   5                                                                      else
 367   5                                                                              wink_mode=1;
 368   5                                                                      no_op_time=0;
 369   5                                                              }
 370   4                                                      else if(sys_mode<3)
 371   4                                                              sys_mode+=1;
 372   4                                                      else
 373   4                                                              sys_mode=1;
 374   4                                                      sys_config();
 375   4                                                      break;
 376   4                                              }
 377   3                                      case KEY2:
 378   3                                              {
 379   4                                              if(wink_mode==1)
 380   4                                                      {year-=1;no_op_time=0;display();}
 381   4                                              else if(wink_mode==2)
 382   4                                              value_adj(&month,1,12,SUB);
 383   4                                              else if(wink_mode==3)
 384   4                                              value_adj(&day,1,non_leap_table[month-1+(calc_day(year)?12:0)],SUB);
 385   4                                              else if(wink_mode==4)
 386   4                                              value_adj(&hour,0,23,SUB);
 387   4                                              else if(wink_mode==5)
 388   4                                              value_adj(&min,0,59,SUB);
 389   4                                              else if(wink_mode==6)
 390   4                                              sec=0;
 391   4                                              else if(sys_mode==2)
 392   4                                                      {
 393   5                                                      if(stop_mode==1)
 394   5                                                              stop_mode=2;
 395   5                                                      else if(stop_mode==2)
 396   5                                                              stop_mode=1;
 397   5                                                      else if(stop_mode==3)
 398   5                                                              stop_mode=0;
 399   5                                                      
 400   5                                                      }
 401   4                                              else;
 402   4                                              break;
 403   4                                              }
 404   3                                      case KEY3:                                      
 405   3                                              {
 406   4                                              if(wink_mode==1)
 407   4                                                      {year+=1;no_op_time=0;display();}
 408   4                                              else if(wink_mode==2)
 409   4                                              value_adj(&month,1,12,ADD);
 410   4                                              else if(wink_mode==3)
 411   4                                              value_adj(&day,1,non_leap_table[month-1+(calc_day(year)?12:0)],ADD);
 412   4                                              else if(wink_mode==4)
 413   4                                              value_adj(&hour,0,23,ADD);
 414   4                                              else if(wink_mode==5)
 415   4                                              value_adj(&min,0,59,ADD);
 416   4                                              else if(wink_mode==6)
 417   4                                              sec=0;
 418   4                                              else if(sys_mode==2)
 419   4                                                      {
 420   5                                                      if(stop_mode==0)
 421   5                                                              stop_mode=1;
 422   5                                                      else if(stop_mode==1)
 423   5                                                              stop_mode=3;
 424   5                                                      else if(stop_mode==3)
 425   5                                                              stop_mode=1;
 426   5                                                      }
C51 COMPILER V7.06   MAIN_V2                                                               10/26/2008 02:07:00 PAGE 8   

 427   4                                              else;
 428   4                                              break;
 429   4                                              }
 430   3                                      case KEY4:
 431   3                                              {
 432   4                                                      if(sys_mode==0)
 433   4                                                      sys_mode=1;
 434   4                                                      sys_config();
 435   4                                                      break;
 436   4                                              }
 437   3                                      default: break; 
 438   3                                      }       
 439   2              }       
 440   1      }
 441          void value_adj(u8 *value,u8 min,u8 max,u8 cmd)
 442          {
 443   1              wink_ena=0;
 444   1              no_op_time=0;
 445   1              if(cmd==ADD)
 446   1                      {
 447   2                      if(*value<max)
 448   2                              *value+=1;
 449   2                      else
 450   2                              *value=min;
 451   2                      display();
 452   2                      }
 453   1              else if(cmd==SUB)
 454   1                      {
 455   2                      if(*value>min)
 456   2                              *value-=1;
 457   2                      else
 458   2                              *value=max;

⌨️ 快捷键说明

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