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

📄 cont.lst

📁 自己写的51接收遥控器解码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 285   1      
 286   1              PCON=0X0;
 287   1              SCON=0X40;
 288   1      
 289   1              IE=0X82;        //开定时0中断   
 290   1      
 291   1      }
 292          
 293          u8 key(void)
 294          {
 295   1              u8 temp;
 296   1              temp=P1 & 0x1f;
 297   1              if (temp != 0x1f)
 298   1                      {
 299   2                      delay(6);
 300   2                      P1=0xdf;
 301   2                      temp=P1 & 0x1f;
 302   2                      if (temp==0x1f) 
 303   2                              {
C51 COMPILER V6.23a  CONT                                                                  11/23/2003 16:41:45 PAGE 6   

 304   3                              P1=0xbf;
 305   3                              temp=P1 & 0x1f;
 306   3                              if (temp==0x1f) 
 307   3                                      {
 308   4                                      P1=0x7f;
 309   4                                      temp=P1 & 0x1f;
 310   4                                      if (temp==0x1f) temp=0;
 311   4                                      else temp=~P1;
 312   4                                      }
 313   3                              else temp=~P1; 
 314   3                              }
 315   2                      else temp= ~P1;
 316   2                      }
 317   1              else temp=0;
 318   1              P1=0x1f;
 319   1              return temp;
 320   1      }
 321          
 322          void sendkey(u8 kk)
 323          {       
 324   1              u8 k_code;
 325   1              
 326   1      
 327   1              switch (kk)
 328   1              {
 329   2                      case 0x30:              //key1
 330   2                              if (key_flag_a) k_code=0x0e;
 331   2                              else k_code=0xf;
 332   2                              break;
 333   2                      case 0x28:              //2
 334   2                              k_code=0x03;
 335   2                              break;
 336   2                      case 0x24:              //3
 337   2                              k_code=0x02;
 338   2                              break;
 339   2                      case 0x22:              //4
 340   2                              k_code=0x01;
 341   2                              break;
 342   2                      case 0x21:              //5
 343   2                              k_code=0xee;
 344   2                              break;
 345   2                      case 0x50:              //6
 346   2                              if (key_flag_b) k_code=0x0b;
 347   2                              else k_code=0x2b;
 348   2                              break;
 349   2                      case 0x48:              //7
 350   2                              k_code=0x06;
 351   2                              break;
 352   2                      case 0x44:              //8
 353   2                              k_code=0x05;
 354   2                              break;
 355   2                      case 0x42:              //9
 356   2                              k_code=0x09;
 357   2                              break;
 358   2                      case 0x41:              //10
 359   2                              k_code=0x0;
 360   2                              break;
 361   2                      case 0x90:              //11
 362   2                              if (key_flag_c) k_code=0x32;
 363   2                              else k_code=0x31;
 364   2                              break;
 365   2                      case 0x88:              //12
C51 COMPILER V6.23a  CONT                                                                  11/23/2003 16:41:45 PAGE 7   

 366   2                              k_code=0x07;
 367   2                              break;
 368   2                      case 0x84:              //13
 369   2                              k_code=0x04;
 370   2                              break;
 371   2                      case 0x82:              //14
 372   2                              k_code=0x08;
 373   2                              break;
 374   2                              
 375   2                      case 0x81:              //15
 376   2                              k_code=0x0;
 377   2                              break;
 378   2                      case 0xff:              //stop all
 379   2                              k_code=0xff;
 380   2                              break;
 381   2                      default:
 382   2                              k_code=0;
 383   2                              break;
 384   2              }
 385   1              if (k_code) 
 386   1              {       
 387   2                      if (k_code==0xee) k_code=0;
 388   2      
 389   2                      //P2_3=0;
 390   2                      
 391   2                      SBUF=0xeb;
 392   2                      while(!TI);
 393   2                      TI=0;
 394   2                      
 395   2                      SBUF=0x20;
 396   2                      while(!TI);
 397   2                      TI=0;
 398   2                      
 399   2                      SBUF=ch;
 400   2                      while(!TI);
 401   2                      TI=0;
 402   2                      
 403   2                      SBUF=0xaa;
 404   2                      while(!TI);
 405   2                      TI=0;
 406   2                      
 407   2                      SBUF=k_code;
 408   2                      while(!TI);
 409   2                      TI=0;
 410   2                      
 411   2                      SBUF=0x55;
 412   2                      while(!TI);
 413   2                      TI=0;
 414   2      
 415   2              //      P2_3=1;
 416   2              }
 417   1      
 418   1      }
 419          
 420          void Time_intt() interrupt 1 
 421          {
 422   1      //      P1_0=P3_0;
 423   1      //      return;
 424   1      //      if (com_times==255)
 425   1      //              P1=~P1;
 426   1      //      return;
 427   1              com_times++;
C51 COMPILER V6.23a  CONT                                                                  11/23/2003 16:41:45 PAGE 8   

 428   1      
 429   1              P1_2 = P3_0;
 430   1              if(bit_statex == P3_0)  //接收滤波
 431   1                      bit_state = P3_0;
 432   1              
 433   1              if(bit_state != last_state)     //跳变
 434   1              {
 435   2                      if(com_bits == 0 )      //引导码
 436   2                      {
 437   3                              if((com_times > 20) && (last_state == 0))
 438   3                                      com_bits =1;    
 439   3                      }
 440   2                      
 441   2                      else
 442   2                      {
 443   3                              if(com_times > 20)      //接收超时,错误
 444   3                              {
 445   4                                      if(com_bits > 1)
 446   4                                      {
 447   5                                              SBUF = com_bits;
 448   5                                              com_bits = 0;
 449   5                                              P1_0 =0;
 450   5                                              
 451   5                                      }
 452   4                              }
 453   3                              else if(com_times > 6)  //收到 1
 454   3                              {
 455   4                                      Buffer = (Buffer << 1) | 1; 
 456   4                                      com_bits ++;
 457   4                              }
 458   3                              else if((com_times > 1) && (last_state == 1))   //收到 0
 459   3                              {
 460   4                                      Buffer = (Buffer << 1) ; 
 461   4                                      com_bits ++;
 462   4                              }
 463   3                      }
 464   2                      
 465   2                      com_times = 0;  //定时计数清零
 466   2      
 467   2              }
 468   1              if(com_bits == 32)
 469   1              {
 470   2                      Buffer <<= 1;
 471   2                      Com_sucess();
 472   2                      com_bits = 0;
 473   2                      out_flag =1;
 474   2              }
 475   1      /*
 476   1              if (com_times < 50)     //接收中
 477   1              {
 478   1      
 479   1                      Buffer = (Buffer << 1) | (P3_0);
 480   1                      com_bits++;
 481   1                      
 482   1                      if(com_bits == 8 )      //接收完毕
 483   1                      {
 484   1                              com_bits = 1;
 485   1                              
 486   1                              //Com_sucess();         //模拟键盘输出
 487   1                              //P1_0=0;
 488   1                              SBUF=Buffer;
 489   1                              P1_0=0;                 //串口发送号码到pc,测试用
C51 COMPILER V6.23a  CONT                                                                  11/23/2003 16:41:45 PAGE 9   

 490   1                      }
 491   1                      
 492   1              } 
 493   1              else
 494   1              {
 495   1                      com_bits = 0;
 496   1              }*/
 497   1              if(com_times >= 300)            //间隔时间停留,输出释放
 498   1              {
 499   2                      com_times = 300;
 500   2                      com_bits = 0;
 501   2                      bit_cnt = 0;
 502   2                      Buffer = 0;
 503   2                      P1_0=1;
 504   2              }
 505   1      
 506   1              last_state = bit_state;
 507   1              bit_statex = P3_0; 
 508   1      }
 509          
 510          void Com_sucess(void)
 511          {
 512   1      
 513   1      
 514   1              switch (Buffer & 0x3F)
 515   1              {
 516   2                      case 1:
 517   2                              P0 = X_RF;
 518   2                              break;
 519   2                      case 2:
 520   2                              P0 = X_STOP;
 521   2                              break;
 522   2                      case 3:
 523   2                              P0 = X_PAUSE;
 524   2                              break;
 525   2                      case 4:
 526   2                              P0 = X_FF;
 527   2                              break;
 528   2                      case 5:
 529   2                              P0 = X_PLAY;
 530   2                              break;
 531   2                      case 6:
 532   2                              P0 = X_MENU;
 533   2                              break;
 534   2                      case 7:
 535   2                              P0 = X_UP;
 536   2                              break;
 537   2                      case 8:
 538   2                              P0 = X_DOWN;
 539   2                              break;
 540   2                      case 9:
 541   2                              P0 = X_SELECT;
 542   2                              break;
 543   2                      case 0X1E:
 544   2                              P0 = X_REC;
 545   2                              break;
 546   2      
 547   2                      default:
 548   2                              break;
 549   2          }
 550   1      }
 551          
C51 COMPILER V6.23a  CONT                                                                  11/23/2003 16:41:45 PAGE 10  

 552          
 553          void delay(int ms)
 554          {
 555   1              int i,j;
 556   1              for (i=0;i<ms;i++)
 557   1                      for(j=0;j<255;j++);
 558   1      }
 559          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1157    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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