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

📄 yk1602.lst

📁 遥控带液晶显示程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 273   1              while( DATAPORT & busy );
 274   1      
 275   1              Elcm = 0;
 276   1      }       
 277          
 278          
 279          
 280          
 281          
 282          
 283          // 短延时
 284          void delay5ms(void)
 285          {
 286   1              uint i = 5552;
 287   1              while(i--);
 288   1      }
 289          
 290          //长延时
 291          void delay400ms(void)
 292          {
 293   1              uchar i = 5;
 294   1              uint j;
 295   1              while(i--)
 296   1              {
 297   2                      j=7269;
 298   2                      while(j--);
 299   2              };
 300   1      }
 301          
 302          
 303          /*-------延时---------------*/
C51 COMPILER V8.02   YK1602                                                                03/14/2009 10:50:20 PAGE 6   

 304          void delay(void){
 305   1              int r;
 306   1              int e;
 307   1              for(r=0;r<500;r++)
 308   1              {                                       /*外层循环*/
 309   2                      _nop_ ();                       
 310   2                      _nop_ ();                       
 311   2                      _nop_ ();                       
 312   2                      for(e=0;e<3;e++)
 313   2                      {                               /*内层循环*/
 314   3                      _nop_ ();                       
 315   3                       _nop_ ();                      
 316   3                      _nop_ ();                       
 317   3                      _nop_ ();                       
 318   3                      _nop_ ();                       
 319   3               }
 320   2               }
 321   1      }
 322          
 323          /*----------功能键识别子程序--------------*/
 324          void acct_1(void){
 325   1              
 326   1      tf:     _nop_();
 327   1              if(menu)
 328   1              {
 329   2                      menu=0;
 330   2                      conh++;
 331   2                      if(conh==3) conh=0;
 332   2              }
 333   1              
 334   1              
 335   1              if(conh==1)
 336   1              {
 337   2                      key_hit(min);                           //低位设置
 338   2                      conv();
 339   2                      disp1(3,0);
 340   2                      delay();
 341   2              }
 342   1              if(conh==2)
 343   1              {
 344   2                      key_hit(hour);          //高位设置
 345   2                      conv();
 346   2                      disp1(3,0);
 347   2                      delay();
 348   2                                              
 349   2              }
 350   1      /*      if(conh==3){key_hit(thtl)               //显示高位,低位
 351   1                                      conv();
 352   1                                      
 353   1                                      
 354   1                                      delay();
 355   1                                      delay();
 356   1                                      delay();
 357   1                                      delay();
 358   1                                      delay();
 359   1                              }
 360   1              if(conh==4){key_hit(save);      
 361   1                                      conv();
 362   1                                      disp();
 363   1                                      delay();
 364   1                                              
 365   1                              }*/
C51 COMPILER V8.02   YK1602                                                                03/14/2009 10:50:20 PAGE 7   

 366   1              yk();
 367   1              if(!conh==0) goto tf;                           /*功能设置完毕?未设置则继续执行功能键处理*/
 368   1      }
 369                  
 370                  
 371          /*-----------加减键处理子程序-------------*/
 372          /*按键处理*/
 373          void key_hit(unsigned char add3)
 374          {       
 375   1              if(dw){         
 376   2                      dw=0;           /*减键*/
 377   2                      add3--;
 378   2                      if(add3>=60) add3=0;
 379   2                      if(conh==1) min=add3;
 380   2                      if(conh==2) hour=add3;
 381   2                      conv();
 382   2                      disp1(3,0);
 383   2                              }
 384   1                              
 385   1              if(up){                 /*加键*/
 386   2                      up=0;           /*减键*/
 387   2                      add3++;
 388   2                      if(add3==60) add3=0;
 389   2                      if(conh==1) min=add3;
 390   2                      if(conh==2) hour=add3;
 391   2                      conv();
 392   2                      disp1(3,0);
 393   2                              
 394   2                      }
 395   1                      
 396   1                      
 397   1                      if(conh==1) min=add3;
 398   1                      if(conh==2) hour=add3;
 399   1                      
 400   1              }
 401                  
 402                  
 403          //遥控码识别
 404          void    yk(void){
 405   1              if(temp2==0xe2){
 406   2                              if(temp4==0xf1){
 407   3                                      if(temp3==0x2c){
 408   4                                                      if(temp5==0x16){        //功能键
 409   5                                                              menu=1;
 410   5                                                              temp3=0;
 411   5                                                              temp5=0;
 412   5                                                              }
 413   4                                              
 414   4                                              }
 415   3                                      if(temp3==0x44){
 416   4                                                      if(temp5==0x22){        //加键
 417   5                                                              up=1;
 418   5                                                              temp3=0;
 419   5                                                              temp5=0;
 420   5                                                              }
 421   4                                              }
 422   3                                      if(temp3==0x54){
 423   4                                                      if(temp5==0x2a){        //减键
 424   5                                                              dw=1;
 425   5                                                              temp3=0;
 426   5                                                              temp5=0;
 427   5                                                              }
C51 COMPILER V8.02   YK1602                                                                03/14/2009 10:50:20 PAGE 8   

 428   4                                              
 429   4                                              }
 430   3                                      }
 431   2                      
 432   2                      
 433   2                      }
 434   1              }
 435          
 436          
 437          
 438          //遥控中断除理
 439          
 440          void    int0a()interrupt 0 using 2
 441          {
 442   1      //              TH1=TL1=0;
 443   1                      
 444   1                      //TR0=1;                        //启动定时器
 445   1                      yt++;                           //中断次数
 446   1                      if(yt==1)
 447   1                              {
 448   2                              TH1=TL1=0;
 449   2                              TR1=1;                  //启动定时器
 450   2                              }
 451   1                              
 452   1                      if(yt==2)
 453   1                              {
 454   2                              temp1=TH1;              //为起始
 455   2                              TH1=TL1=0;
 456   2                              if(temp1>=0x1f)
 457   2                                      {       //大于8ms
 458   3                                      start=1;        //置起码标志
 459   3                                      }
 460   2                              else 
 461   2                                      {
 462   3                                      start=0;
 463   3                                      yt=0;
 464   3                                      TR1=0;
 465   3                                      }
 466   2                              }
 467   1                      
 468   1                      
 469   1                      else
 470   1                      {
 471   2                                      if(start==1)
 472   2                                      {       //是起始才可以继续接收
 473   3                                              temp1=TH1;      //装入上次定时值
 474   3                                              TH1=TL1=0;      //重新计数
 475   3                                              if(temp1>=0x05)
 476   3                                                      {       //大于1.2ms
 477   4                                                      h=1;
 478   4                                                      }
 479   3                                              else if(temp1>=0x01)
 480   3                                                      {       //大于0.25ms
 481   4                                                      
 482   4                                                      h=0;
 483   4                                                      }
 484   3                                              da*=2;
 485   3                                              if(h) da++;
 486   3                                              gt++;
 487   3                                              if(gt==8)
 488   3                                                      {               //读8位
 489   4                                                      gt=0;gv++;
C51 COMPILER V8.02   YK1602                                                                03/14/2009 10:50:20 PAGE 9   

 490   4                                                      if(gv==1) temp2=da;
 491   4                                                      if(gv==2) temp3=da;
 492   4                                                      if(gv==3) temp4=da;
 493   4                                                      if(gv==4) 
 494   4                                                              {temp5=da;
 495   5                                                              gv=0;
 496   5                                                              start=0;
 497   5                                                              yt=0;
 498   5                                                              TR1=0;
 499   5                                                              }
 500   4                                                      
 501   4                                                      da=0;
 502   4                                                      }
 503   3                                              
 504   3                                              }
 505   2                      
 506   2                      
 507   2                      
 508   2                      }
 509   1              }
 510          /*------------------------*/
 511          
 512          void main(void)
 513          {
 514   1              init_timer();
 515   1              led6[0]=0;
 516   1              led6[1]=2;
 517   1              led6[2]=2;
 518   1              led6[3]=2;
 519   1              led6[4]=2;
 520   1              led6[5]=2;
 521   1              lcdreset();             //初始化
 522   1              delay400ms();
 523   1              disp1(3,0);
 524   1              disp(2,1,love);         //显示
 525   1              
 526   1              delay400ms();
 527   1              
 528   1      //      DispOneChar(0,1,time[1]);
 529   1              while(1)
 530   1              {
 531   2                      delay400ms();
 532   2                      disp1(3,0);
 533   2                      acct_1();
 534   2                      yk();
 535   2              }
 536   1              
 537   1              
 538   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1081    ----
   CONSTANT SIZE    =     38    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17      20
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      5    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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