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

📄 time.lst

📁 一个有关电子时钟的单片机程序,可显示年月日,以及小时,分秒,可以手动修改时间.
💻 LST
📖 第 1 页 / 共 3 页
字号:
 284   2                  display2();         
 285   2                         
 286   2      
 287   2      
 288   2      
 289   2                                      
 290   2      
 291   2      
 292   2      
 293   2      
 294   2        }
 295   1      
 296   1      
 297   1         
 298   1      
 299   1      }
C51 COMPILER V8.02   TIME                                                                  08/22/2007 19:41:21 PAGE 6   

 300          
 301          
 302          
 303          
 304          
 305          
 306          void keyboard(void) interrupt 2 using 0          //键盘中断子程序
 307              { 
 308   1           unsigned char i,j,w;                     
 309   1           EX1=0;                                      //键盘中断关
 310   1           key=0;
 311   1           delay(200);                                 //延时去处抖动
 312   1               XBYTE[0x0010];           //?????????%¥¥#¥¥
 313   1           if(~XBYTE[0xf800]&0x0f)                     //是否有键按下
 314   1               {
 315   2                  w=XBYTE[0xf8f0]&0x0f;                //键植查询,key高4位为列信息,左列对应其中的低位,
 316   2                    if(~w&0x0f)                        //key低4位对应行信息 ,即i值,键盘最上行为5,
 317   2                      {
 318   3                        i=4;
 319   3                        j=w;
 320   3                        w=0xff;
 321   3                      }   
 322   2                  w=XBYTE[0xf8e8]&0x0f;
 323   2                    if(~w&0x0f)
 324   2                      {
 325   3                        i=3;
 326   3                        j=w;
 327   3                        w=0xff;
 328   3                      }   
 329   2                  w=XBYTE[0xf8d8]&0x0f;
 330   2                    if(~w&0x0f)
 331   2                      {
 332   3                        i=2;
 333   3                        j=w;
 334   3                        w=0xff;
 335   3                      }   
 336   2                  w=XBYTE[0xf8b8]&0x0f;
 337   2                    if(~w&0x0f)
 338   2                      {
 339   3                        i=1;
 340   3                        j=w;
 341   3                        w=0xff;
 342   3                      }   
 343   2                  w=XBYTE[0xf878]&0x0f;
 344   2                    if(~w&0x0f)
 345   2                      {
 346   3                        i=0;
 347   3                        j=w;
 348   3                        w=0xff;
 349   3                      }    
 350   2                    w=~j;
 351   2                    key=(w<<4)|i;
 352   2               }
 353   1                       //-----编码键值左上起1--20---------键值编码,返回1到20的16进制数,
 354   1             switch (key)
 355   1            {
 356   2            case 0x14 :key=0x01;break;  //00010100
 357   2            case 0x24 :key=0x02;break;  //00100100
 358   2            case 0x44 :key=0x03;break;  //01000100
 359   2            case 0x84 :key=0x04;break;  //10000100
 360   2            case 0x13 :key=0x05;break;  //00010011
 361   2            case 0x23 :key=0x06;break;  //00100011
C51 COMPILER V8.02   TIME                                                                  08/22/2007 19:41:21 PAGE 7   

 362   2            case 0x43 :key=0x07;break;  //01000011
 363   2            case 0x83 :key=0x08;break;  //10000011
 364   2            case 0x12 :key=0x09;break;  //00010010
 365   2            case 0x22 :key=0x0a;break;  //00100010
 366   2            case 0x42 :key=0x0b;break;  //01000010
 367   2            case 0x82 :key=0x0c;break;  //10000010
 368   2            case 0x11 :key=0x0d;break;  //00010001
 369   2            case 0x21 :key=0x0e;break;  //00100001
 370   2            case 0x41 :key=0x0f;break;  //01000001
 371   2            case 0x81 :key=0x10;break;  //10000001
 372   2            case 0x10 :key=0x11;break;  //00010000
 373   2            case 0x20 :key=0x12;break;  //00100000
 374   2            case 0x40 :key=0x13;break;  //01000000
 375   2            case 0x80 :key=0x14;break;  //10000000
 376   2            default: key=0;
 377   2      
 378   2            }
 379   1            
 380   1             while(~XBYTE[0xf800]&0x0f)
 381   1                  k=1;
 382   1             EX1=1;
 383   1           
 384   1      
 385   1      }   
 386          
 387          
 388          
 389          
 390          void main(void)
 391          {   
 392   1        int a;
 393   1        
 394   1      
 395   1      
 396   1              //XBYTE[0xf801];
 397   1      
 398   1              inttilcs();
 399   1              time.year=0;
 400   1              time.month=1;
 401   1              time.day=1;
 402   1              time.hour=0;
 403   1       time.minute=0;
 404   1       time.second=0;
 405   1       time.second20=0; 
 406   1       time.week=6;
 407   1      //clockon=0;
 408   1      //clock.hour=0;
 409   1      //clock.minute=0;
 410   1      
 411   1       lc_write(0x0c);
 412   1      
 413   1              EA=1;
 414   1      
 415   1          EX1=1;
 416   1      
 417   1              k=0;
 418   1              
 419   1          a=0;
 420   1              while (1)
 421   1      
 422   1              {   
 423   2                 if(k)
C51 COMPILER V8.02   TIME                                                                  08/22/2007 19:41:21 PAGE 8   

 424   2               { if(key==0x01)         //键盘1更改年+
 425   3                  {lc_write(0x01);
 426   4              
 427   4                      lc_write(0x0f);
 428   4                      time.year++;
 429   4                      if (time.year>99 )
 430   4                              time.year=0;
 431   4                      
 432   4                      
 433   4                      k=0;a=1;
 434   4                      delay(500);
 435   4                      time_to_display_data_buff();
 436   4      
 437   4                       display2();   
 438   4                                             
 439   4                      }
 440   3                      
 441   3                      
 442   3              else if(key==0x0d)         //键盘1更改年-
 443   3                  {lc_write(0x01);
 444   4              
 445   4                      lc_write(0x0f);
 446   4                      
 447   4                      
 448   4                      
 449   4                      time.year--;
 450   4                      
 451   4                      if(time.year<=0)
 452   4                      time.year=0;
 453   4                      
 454   4                      
 455   4                      
 456   4                      
 457   4                      k=0;a=1;
 458   4                      delay(500);
 459   4                      time_to_display_data_buff();
 460   4      
 461   4                       display2();   
 462   4                                             
 463   4                      }
 464   3              else if(key==0x02)         //键盘2更改月+
 465   3                  {lc_write(0x01);
 466   4                      lc_write(0x0f);
 467   4                      time.month++;
 468   4                      
 469   4                      if (time.day>=jinwei())
*** WARNING C209 IN LINE 469 OF TIME.C: '_jinwei': too few actual parameters
 470   4                      
 471   4                              time.day=1;
 472   4                      
 473   4                      if(time.month==13)
 474   4                      time.month=1;
 475   4                      
 476   4      
 477   4      
 478   4                      k=0;a=1;
 479   4                      delay(500);
 480   4                      time_to_display_data_buff();
 481   4            
 482   4                      display2();   
 483   4            
 484   4                      
C51 COMPILER V8.02   TIME                                                                  08/22/2007 19:41:21 PAGE 9   

 485   4                      
 486   4              
 487   4                      }
 488   3                      
 489   3                      else if(key==0x0e)         //键盘2更改月-
 490   3                  {lc_write(0x01);
 491   4                      lc_write(0x0f);
 492   4                      time.month--;
 493   4                      
 494   4                      if (time.day>=jinwei())
*** WARNING C209 IN LINE 494 OF TIME.C: '_jinwei': too few actual parameters
 495   4                      
 496   4                              time.day=1;
 497   4                      
 498   4                      if(time.month==0)
 499   4                      time.month=12;
 500   4                      
 501   4      
 502   4      
 503   4                      k=0;a=1;
 504   4                      delay(500);
 505   4                      time_to_display_data_buff();
 506   4            
 507   4                      display2();   
 508   4            
 509   4                      
 510   4                      
 511   4              
 512   4                      }
 513   3                      else if(key==0x03)         //键盘3更改天+
 514   3                  {lc_write(0x01);
 515   4                      lc_write(0x0f);
 516   4                      time.day++;
 517   4                      
 518   4                      if (time.day==jinwei()) time.day=1;
*** WARNING C209 IN LINE 518 OF TIME.C: '_jinwei': too few actual parameters
 519   4                      
 520   4                      
 521   4                      
 522   4                      //jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
 523   4                      
 524   4                      
 525   4                      
 526   4                      k=0;a=1;
 527   4                      delay(500);
 528   4                      time_to_display_data_buff();
 529   4            
 530   4                        display2();   
 531   4                      
 532   4              
 533   4                      }
 534   3               
 535   3                      else if(key==0x0f)         //键盘3更改天-
 536   3                  {lc_write(0x01);
 537   4                      lc_write(0x0f);
 538   4                      time.day--;
 539   4                      
 540   4                      
 541   4                      if (time.day<=0) time.day=jinwei()-1;
*** WARNING C209 IN LINE 541 OF TIME.C: '_jinwei': too few actual parameters
 542   4                      
 543   4                      
C51 COMPILER V8.02   TIME                                                                  08/22/2007 19:41:21 PAGE 10  

 544   4                      k=0;a=1;
 545   4                      delay(500);
 546   4                      time_to_display_data_buff();
 547   4            
 548   4                        display2();   
 549   4                      
 550   4              
 551   4                      }
 552   3              else if(key==0x05)         //键盘5更改小时+
 553   3                  {lc_write(0x01);
 554   4              lc_write(0x0f);
 555   4                      time.hour++;
 556   4                      if(time.hour==24)
 557   4                      time.hour=0;
 558   4                      
 559   4                      k=0;a=1;
 560   4                      delay(500);
 561   4                      time_to_display_data_buff();
 562   4            
 563   4              display2();   
 564   4            
 565   4                      
 566   4                      
 567   4              
 568   4                      }
 569   3                      
 570   3                              else if(key==0x11)         //键盘5更改小时-
 571   3                  {lc_write(0x01);
 572   4              lc_write(0x0f);
 573   4                      time.hour--;
 574   4                      if(time.hour==-1)

⌨️ 快捷键说明

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