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

📄 main.lst

📁 很实用的单片机例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
 262   4                              break;
 263   4              case 6: write_1602com(yh+0x08);//yue
 264   4                           //write_1602com(0x0f);
 265   4                              break;
 266   4              case 7: write_1602com(yh+0x05);//nian
 267   4                           //write_1602com(0x0f);
 268   4                              break;
 269   4              case 8:
 270   4                              write_1602com(0x0c);//设置光标不闪烁
 271   4                              TR0=1;//打开定时器
 272   4                              temp=(miao)/10*16+(miao)%10;
 273   4                              write_1302(0x8e,0x00);
 274   4                              write_1302(0x80,0x00|temp);//miao
 275   4                              write_1302(0x8e,0x80);
 276   4                  break;
 277   4                                      
 278   4      
 279   4                                                                                                              
 280   4                              
 281   4              }
 282   3              
 283   3              
 284   3      
 285   3              }
 286   2      
 287   2              }
 288   1              if(key1n!=0)//当key1按下以下。再按以下键才有效
 289   1              {
 290   2              
 291   2              if(key2==0)  //上调键
 292   2              {
 293   3              delay(5);
 294   3              if(key2==0)
 295   3              {
 296   4              while(!key2);
 297   4              switch(key1n)
 298   4              {
 299   5              case 1:miao++;
 300   5                              if(miao==60)
 301   5                                      miao=0;
 302   5                              write_sfm(0x0a,miao);//写入新的秒数
 303   5                              temp=(miao)/10*16+(miao)%10;
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 18:40:18 PAGE 6   

 304   5                              write_1302(0x8e,0x00);
 305   5                              write_1302(0x80,0x80|temp);
 306   5                              write_1302(0x8e,0x80);
 307   5                              write_1602com(er+0x0b);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置
 308   5                              //write_1602com(0x0b);
 309   5                              break;
 310   5              case 2:fen++;
 311   5                              if(fen==60)
 312   5                                      fen=0;
 313   5                              write_sfm(0x07,fen);
 314   5                              temp=(fen)/10*16+(fen)%10;
 315   5                              write_1302(0x8e,0x00);
 316   5                              write_1302(0x82,temp);
 317   5                              write_1302(0x8e,0x80);
 318   5                              write_1602com(er+8);
 319   5                              break;
 320   5              case 3:shi++;
 321   5                              if(shi==24)
 322   5                                      shi=0;
 323   5                              write_sfm(4,shi);
 324   5                              temp=(shi)/10*16+(shi)%10;
 325   5                              write_1302(0x8e,0x00);
 326   5                              write_1302(0x84,temp);
 327   5                              write_1302(0x8e,0x80);
 328   5                              write_1602com(er+5);
 329   5                              break;
 330   5              case 4:week++;
 331   5                              if(week==8)
 332   5                                      week=0;
 333   5                                      write_week(week);
 334   5                              
 335   5                              write_1602com(yh+0x0f);
 336   5                              break;
 337   5              case 5:ri++;
 338   5                              if(ri==31)
 339   5                                      ri=0;
 340   5                              write_nyr(10,ri);
 341   5                              temp=(ri)/10*16+(ri)%10;
 342   5                              write_1302(0x8e,0x00);
 343   5                              write_1302(0x86,temp);
 344   5                              write_1302(0x8e,0x80);
 345   5                              write_1602com(yh+11);
 346   5                              break;
 347   5              case 6:yue++;
 348   5                              if(yue==13)
 349   5                                      yue=0;
 350   5                              write_nyr(7,yue);
 351   5                              temp=(yue)/10*16+(yue)%10;
 352   5                              write_1302(0x8e,0x00);
 353   5                              write_1302(0x88,temp);
 354   5                              write_1302(0x8e,0x80);
 355   5                              write_1602com(yh+8);
 356   5                              break;
 357   5              case 7:nian++;
 358   5                       if(nian==100)
 359   5                              nian=0;
 360   5                              write_nyr(4,nian);
 361   5                              write_1602com(yh+5);
 362   5                              break;
 363   5                              
 364   5      
 365   5              }
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 18:40:18 PAGE 7   

 366   4      
 367   4              }
 368   3      
 369   3              }
 370   2              if(key3==0)
 371   2              {
 372   3              delay(5);
 373   3              if(key3==0)
 374   3              {
 375   4              while(!key3);
 376   4              switch(key1n)
 377   4              {
 378   5                      case 1:miao--;
 379   5                                      if(miao==-1)
 380   5                                              miao=59;
 381   5                              write_sfm(0x0a,miao);//写入新的秒数
 382   5                              write_1602com(er+0x0b);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置
 383   5                              //write_1602com(0x0b);
 384   5                              break;
 385   5                      case 2:fen--;
 386   5                                      if(fen==-1)
 387   5                                              fen=59;
 388   5                              write_sfm(7,fen);
 389   5                              temp=(fen)/10*16+(fen)%10;
 390   5                              write_1302(0x8e,0x00);
 391   5                              write_1302(0x82,temp);
 392   5                              write_1302(0x8e,0x80);
 393   5                              write_1602com(er+8);
 394   5                              break;
 395   5      
 396   5                      case 3:shi--;
 397   5                                 if(shi==-1)
 398   5                                              shi=23;
 399   5                              write_sfm(4,shi);
 400   5                              temp=(shi)/10*16+(shi)%10;
 401   5                              write_1302(0x8e,0x00);
 402   5                              write_1302(0x84,temp);
 403   5                              write_1302(0x8e,0x80);
 404   5                              write_1602com(er+5);
 405   5                              break;
 406   5                      case 4:week--;
 407   5                                      if(week==-1)
 408   5                                              week=7;
 409   5                              write_week(week);
 410   5                              write_1602com(yh+0x0f);
 411   5                              break;
 412   5                      case 5:ri--;
 413   5                                      if(ri==-1)
 414   5                                              ri=30;
 415   5                              write_nyr(10,ri);
 416   5                              temp=(ri)/10*16+(ri)%10;
 417   5                              write_1302(0x8e,0x00);
 418   5                              write_1302(0x86,temp);
 419   5                              write_1302(0x8e,0x80);
 420   5                              write_1602com(yh+11);
 421   5                              break;
 422   5                      case 6:yue--;
 423   5                                      if(yue==-1)
 424   5                                              yue=12;
 425   5                              write_nyr(7,yue);
 426   5                              temp=(yue)/10*16+(yue)%10;
 427   5                              write_1302(0x8e,0x00);
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 18:40:18 PAGE 8   

 428   5                              write_1302(0x88,temp);
 429   5                              write_1302(0x8e,0x80);
 430   5                              write_1602com(yh+8);
 431   5                              break;  
 432   5                      case 7:nian--;
 433   5                       if(nian==-1)
 434   5                              nian=99;
 435   5                              write_nyr(4,nian);
 436   5                              write_1602com(yh+5);
 437   5                              break;
 438   5                              
 439   5                                      
 440   5              }
 441   4      
 442   4              }
 443   3      
 444   3              }
 445   2      
 446   2              }
 447   1      
 448   1      
 449   1      
 450   1      }
 451          void init()
 452          {
 453   1              TMOD=0x11;
 454   1              TH0=0;
 455   1              TL0=0;
 456   1              EA=1;
 457   1              ET0=1;
 458   1              TR0=1;
 459   1      
 460   1      
 461   1      
 462   1      }
 463          
 464          void cmg(void)//数码管锁存函数
 465          {
 466   1      dula=1;
 467   1      P0=0x00;
 468   1      dula=0;
 469   1      wela=1;
 470   1      P0=0x00;
 471   1      wela=0;
 472   1      }
 473          void main()
 474          {
 475   1      
 476   1         cmg();//数码管锁存
 477   1              lcd_init();
 478   1              ds1302_init();
 479   1              init();
 480   1              while(1)
 481   1              {
 482   2                      //TH0=(65536-60000)/256;
 483   2              //TL0=(65536-60000)%256;
 484   2              
 485   2      
 486   2      
 487   2      keyscan();
 488   2              
 489   2      
C51 COMPILER V8.06   MAIN                                                                  12/02/2011 18:40:18 PAGE 9   

 490   2          }
 491   1      }
 492          void timer0() interrupt 1
 493          {
 494   1              miao = BCD_Decimal(read_1302(0x81));
 495   1              fen = BCD_Decimal(read_1302(0x83));
 496   1              shi  = BCD_Decimal(read_1302(0x85));
 497   1              ri  = BCD_Decimal(read_1302(0x87));
 498   1              yue = BCD_Decimal(read_1302(0x89));
 499   1              nian=BCD_Decimal(read_1302(0x8d));
 500   1              week=BCD_Decimal(read_1302(0x8b));
 501   1              //keyscan();    
 502   1                      write_sfm(10,miao);
 503   1              //write_1602com(er+0x0a);
 504   1              //write_1602dat(':');
 505   1              write_sfm(7,fen);
 506   1              //write_1602com(er+0x07);
 507   1              //write_1602dat(':');
 508   1              write_sfm(4,shi);
 509   1              
 510   1              //write_nyr(4,nian);
 511   1              write_nyr(10,ri);
 512   1          write_nyr(7,yue);
 513   1              //write_week(week);
 514   1      }
 515          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1491    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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