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

📄 miin.lst

📁 很实用的单片机例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
 257   4              case 7: write_1602com(yh+0x05);//nian
 258   4                           //write_1602com(0x0f);
 259   4                              break;
 260   4              case 8:
 261   4                              write_1602com(0x0c);//设置光标不闪烁
 262   4                              TR0=1;//打开定时器
 263   4                              temp=(miao)/10*16+(miao)%10;
 264   4                              write_1302(0x8e,0x00);
 265   4                              write_1302(0x80,0x00|temp);//miao
 266   4                              write_1302(0x8e,0x80);
 267   4                  break;
 268   4                                      
 269   4      
 270   4                                                                                                              
 271   4                              
 272   4              }
 273   3              
 274   3              
 275   3      
 276   3              }
 277   2      
 278   2              }
 279   1              if(key1n!=0)//当key1按下以下。再按以下键才有效
 280   1              {
 281   2              
 282   2              if(key2==0)  //上调键
 283   2              {
 284   3              delay(5);
 285   3              if(key2==0)
 286   3              {
 287   4              while(!key2);
 288   4              switch(key1n)
 289   4              {
 290   5              case 1:miao++;
 291   5                              if(miao==60)
 292   5                                      miao=0;
 293   5                              write_sfm(0x0a,miao);//写入新的秒数
 294   5                              temp=(miao)/10*16+(miao)%10;
 295   5                              write_1302(0x8e,0x00);
 296   5                              write_1302(0x80,0x80|temp);
 297   5                              write_1302(0x8e,0x80);
 298   5                              write_1602com(er+0x0b);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置
 299   5                              //write_1602com(0x0b);
 300   5                              break;
 301   5              case 2:fen++;
 302   5                              if(fen==60)
 303   5                                      fen=0;
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:46:58 PAGE 6   

 304   5                              write_sfm(0x07,fen);
 305   5                              temp=(fen)/10*16+(fen)%10;
 306   5                              write_1302(0x8e,0x00);
 307   5                              write_1302(0x82,temp);
 308   5                              write_1302(0x8e,0x80);
 309   5                              write_1602com(er+8);
 310   5                              break;
 311   5              case 3:shi++;
 312   5                              if(shi==24)
 313   5                                      shi=0;
 314   5                              write_sfm(4,shi);
 315   5                              temp=(shi)/10*16+(shi)%10;
 316   5                              write_1302(0x8e,0x00);
 317   5                              write_1302(0x84,temp);
 318   5                              write_1302(0x8e,0x80);
 319   5                              write_1602com(er+5);
 320   5                              break;
 321   5              case 4:week++;
 322   5                              if(week==8)
 323   5                                      week=0;
 324   5                                      write_week(week);
 325   5                              
 326   5                              write_1602com(yh+0x0f);
 327   5                              break;
 328   5              case 5:ri++;
 329   5                              if(ri==31)
 330   5                                      ri=0;
 331   5                              write_nyr(10,ri);
 332   5                              temp=(ri)/10*16+(ri)%10;
 333   5                              write_1302(0x8e,0x00);
 334   5                              write_1302(0x86,temp);
 335   5                              write_1302(0x8e,0x80);
 336   5                              write_1602com(yh+11);
 337   5                              break;
 338   5              case 6:yue++;
 339   5                              if(yue==13)
 340   5                                      yue=0;
 341   5                              write_nyr(7,yue);
 342   5                              temp=(yue)/10*16+(yue)%10;
 343   5                              write_1302(0x8e,0x00);
 344   5                              write_1302(0x88,temp);
 345   5                              write_1302(0x8e,0x80);
 346   5                              write_1602com(yh+8);
 347   5                              break;
 348   5              case 7:nian++;
 349   5                       if(nian==100)
 350   5                              nian=0;
 351   5                              write_nyr(4,nian);
 352   5                              write_1602com(yh+5);
 353   5                              break;
 354   5                              
 355   5      
 356   5              }
 357   4      
 358   4              }
 359   3      
 360   3              }
 361   2              if(key3==0)
 362   2              {
 363   3              delay(5);
 364   3              if(key3==0)
 365   3              {
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:46:58 PAGE 7   

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

 428   5                              break;
 429   5                              
 430   5                                      
 431   5              }
 432   4      
 433   4              }
 434   3      
 435   3              }
 436   2      
 437   2              }
 438   1      
 439   1      
 440   1      
 441   1      }
 442          void init()
 443          {
 444   1              TMOD=0x11;
 445   1              TH0=0;
 446   1              TL0=0;
 447   1              EA=1;
 448   1              ET0=1;
 449   1              TR0=1;
 450   1      
 451   1      
 452   1      
 453   1      }
 454          
 455          void cmg(void)//数码管锁存函数
 456          {
 457   1      dula=1;
 458   1      P0=0x00;
 459   1      dula=0;
 460   1      wela=1;
 461   1      P0=0x00;
 462   1      wela=0;
 463   1      }
 464          void main()
 465          {
 466   1      
 467   1         cmg();//数码管锁存
 468   1              lcd_init();
 469   1              ds1302_init();
 470   1              init();
 471   1              while(1)
 472   1              {
 473   2                      //TH0=(65536-60000)/256;
 474   2              //TL0=(65536-60000)%256;
 475   2              
 476   2      
 477   2      
 478   2      keyscan();
 479   2              
 480   2      
 481   2          }
 482   1      }
 483          void timer0() interrupt 1
 484          {
 485   1              miao = BCD_Decimal(read_1302(0x81));
 486   1              fen = BCD_Decimal(read_1302(0x83));
 487   1              shi  = BCD_Decimal(read_1302(0x85));
 488   1              ri  = BCD_Decimal(read_1302(0x87));
 489   1              yue = BCD_Decimal(read_1302(0x89));
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:46:58 PAGE 9   

 490   1              nian=BCD_Decimal(read_1302(0x8d));
 491   1              week=BCD_Decimal(read_1302(0x8b));
 492   1              //keyscan();    
 493   1                      write_sfm(10,miao);
 494   1              //write_1602com(er+0x0a);
 495   1              //write_1602dat(':');
 496   1              write_sfm(7,fen);
 497   1              //write_1602com(er+0x07);
 498   1              //write_1602dat(':');
 499   1              write_sfm(4,shi);
 500   1              
 501   1              //write_nyr(4,nian);
 502   1              write_nyr(10,ri);
 503   1          write_nyr(7,yue);
 504   1              //write_week(week);
 505   1      }
 506          


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 + -