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

📄 driver.lst

📁 通过遥控红外信号在电器之间传输数据的软件
💻 LST
📖 第 1 页 / 共 3 页
字号:
 459          //end   
 460              IRSendEnd_InterruptControl();
 461          }
 462          */
 463          /* ======================================= */
 464          
 465          void IRSend_nByteData(Byte n,Byte *pbuffer)
 466          {
 467   1          Byte checkSum;
 468   1          Byte i;             
 469   1          IRSendStart_InterruptControl();
 470   1          checkSum = CalculateCheckSum(n, pbuffer);   
 471   1      //begin 
 472   1          IRSendLeadingCode();
 473   1          IRSendByte(0xAD);
 474   1          IRSendByte(0x52); 
 475   1          IRSendByte(n);      
 476   1          for(i = 0; i < n; i++)
 477   1          {
 478   2            IRSendByte(*pbuffer);
 479   2            pbuffer++;
 480   2          }
 481   1          IRSendByte(checkSum);
 482   1          IRSendStop();
 483   1      //end   
 484   1          IRSendEnd_InterruptControl();
 485   1      }
 486          
 487          
 488          /* ======================================= */
C51 COMPILER V7.50   DRIVER                                                                10/19/2006 09:37:29 PAGE 9   

 489          void IRSend_16ByteData(Byte *pbuffer)
 490          {
 491   1          Byte checkSum;
 492   1          IRSendStart_InterruptControl();
 493   1          checkSum = CalculateCheckSum(16, pbuffer);          
 494   1      //begin    
 495   1         IRSendLeadingCode();
 496   1         IRSendByte(0xAE);
 497   1         IRSendByte(0x51); 
 498   1         IRSendByte(*pbuffer);
 499   1         IRSendByte(*(pbuffer + 1));
 500   1         IRSendByte(*(pbuffer + 2));
 501   1         IRSendByte(*(pbuffer + 3));
 502   1         IRSendByte(*(pbuffer + 4));
 503   1         IRSendByte(*(pbuffer + 5));
 504   1         IRSendByte(*(pbuffer + 6));
 505   1         IRSendByte(*(pbuffer + 7));
 506   1         IRSendByte(*(pbuffer + 8));
 507   1         IRSendByte(*(pbuffer + 9));
 508   1         IRSendByte(*(pbuffer + 10));
 509   1         IRSendByte(*(pbuffer + 11));
 510   1         IRSendByte(*(pbuffer + 12));
 511   1         IRSendByte(*(pbuffer + 13));
 512   1         IRSendByte(*(pbuffer + 14));
 513   1         IRSendByte(*(pbuffer + 15));
 514   1         IRSendByte(checkSum);
 515   1         IRSendStop();
 516   1      //end   
 517   1          IRSendEnd_InterruptControl();
 518   1      }
 519          /* ======================================= */
 520          void IRSend_IrEnd(void)
 521          {
 522   1          IRSendStart_InterruptControl();
 523   1      //begin 
 524   1          IRSendLeadingCode();
 525   1          IRSendByte(0xAF);
 526   1          IRSendByte(0x50);
 527   1          IRSendStop();
 528   1      //end   
 529   1          IRSendEnd_InterruptControl();
 530   1      }
 531          /* ======================================= */
 532          
 533          static void IRSendLeadingCode(void)
 534          {
 535   1             IRModulateCarrierStart();        
 536   1              IRSendDelay(DELAY_9MS);
 537   1              PIN_IR_OUT = 1;
 538   1              IRSendDelay(DELAY_4D5MS);
 539   1      }
 540          /* ======================================= */
 541          static void IRSendByte(Byte value)
 542          {
 543   1         Byte i;
 544   1          for(i = 0; i < 8; i++)
 545   1          {
 546   2                if(value & BIT0)
 547   2                {
 548   3                   IRModulateCarrierStart();
 549   3                   IRSendDelay(DELAY_560US);  
 550   3                   PIN_IR_OUT = 1;             
C51 COMPILER V7.50   DRIVER                                                                10/19/2006 09:37:29 PAGE 10  

 551   3                   IRSendDelay(DELAY_1685US);            
 552   3                }
 553   2                else
 554   2                {
 555   3                   IRModulateCarrierStart();           
 556   3                   IRSendDelay(DELAY_560US);
 557   3                   PIN_IR_OUT = 1;                             
 558   3                   IRSendDelay(DELAY_565US); 
 559   3                }
 560   2                value >>= 1;
 561   2          }
 562   1      }
 563          /* ======================================= */
 564          static void IRSendStop(void)
 565          {
 566   1             IRModulateCarrierStart();        
 567   1              IRSendDelay(DELAY_560US);
 568   1              PIN_IR_OUT = 1;                          
 569   1      }
 570          /* ======================================= */
 571          
 572          static void IRModulateCarrierStart(void)
 573          {
 574   1             ET0 = 1;
 575   1              TR0 = 0;
 576   1              TL0 =  LOWBYTE(ISR_TIME0_38K_RELOAD_VALUE);
 577   1              TH0 = HIGHBYTE(ISR_TIME0_38K_RELOAD_VALUE);
 578   1              TR0 = 1;        
 579   1              bIrOutPinStatus = 0;
 580   1              PIN_IR_OUT = 0;
 581   1      }
 582          /* ======================================= */
 583          
 584          static void IRSendDelay(Byte delayType)
 585          {
 586   1      //     bIrSendTimer1Use = TRUE;
 587   1           ucIrSendDelayType = delayType;
 588   1           TR1 = 0;
 589   1           switch(ucIrSendDelayType)
 590   1           {
 591   2                  case DELAY_9MS:
 592   2                      TL1 =  LOWBYTE(ISR_TIME_9MS_RELOAD_VALUE);
 593   2                      TH1 = HIGHBYTE(ISR_TIME_9MS_RELOAD_VALUE);                              
 594   2                      break;
 595   2                  case DELAY_4D5MS:
 596   2                      TL1 =  LOWBYTE(ISR_TIME_4D5MS_RELOAD_VALUE);
 597   2                      TH1 = HIGHBYTE(ISR_TIME_4D5MS_RELOAD_VALUE);                                    
 598   2                      break;
 599   2                  case DELAY_1685US:
 600   2                      TL1 =  LOWBYTE(ISR_TIME_1685US_RELOAD_VALUE);
 601   2                      TH1 = HIGHBYTE(ISR_TIME_1685US_RELOAD_VALUE);                                   
 602   2                      break;
 603   2                  case DELAY_565US:
 604   2                      TL1 =  LOWBYTE(ISR_TIME_565US_RELOAD_VALUE );
 605   2                      TH1 = HIGHBYTE(ISR_TIME_565US_RELOAD_VALUE );                                   
 606   2                      break;
 607   2                  case DELAY_560US:
 608   2                      TL1 =  LOWBYTE(ISR_TIME_560US_RELOAD_VALUE );
 609   2                      TH1 = HIGHBYTE(ISR_TIME_560US_RELOAD_VALUE );                                   
 610   2                      break;  
 611   2                  case DELAY_125US:
 612   2                      TL1 =  LOWBYTE(ISR_TIME_125US_RELOAD_VALUE );
C51 COMPILER V7.50   DRIVER                                                                10/19/2006 09:37:29 PAGE 11  

 613   2                      TH1 = HIGHBYTE(ISR_TIME_125US_RELOAD_VALUE );                                   
 614   2                      break;                  
 615   2                      default:                        
 616   2                              return;
 617   2           }
 618   1              TR1 = 1;        
 619   1              while(ucIrSendDelayType != DELAY_FINISH) ;
 620   1             TR1 = 0; 
 621   1              TR0 = 0;
 622   1              ET0 = 0;
 623   1              ucIrSendDelayType = DELAY_NONE;
 624   1      //      bIrSendTimer1Use = FALSE;
 625   1      }
 626          /* ======================================= */
 627          void IR_CheckLeadingHander(void)
 628          {
 629   1           Word irTimer;
 630   1          if(ucIrDetectStatus == IR_CHECK_LEADING)
 631   1          {
 632   2               irTimer = (TH1<<8) + TL1;
 633   2               if((irTimer < IR_TIME_7MS) && (INT1 == 1))
 634   2               {
 635   3                  ucIrDetectStatus = IR_STANDBY;
 636   3               }
 637   2          }
 638   1      }
 639          /* ======================================= */
 640          static void I2CStart_InterruptControl(void)
 641          {
 642   1              EX1 = 0;
 643   1              ET0 = 0;
 644   1              ET1 = 0;
 645   1              EKBI = 0;
 646   1              EI2C = 1;
 647   1      }
 648          /* ======================================= */
 649          static void I2CEnd_InterruptControl(void)
 650          {
 651   1             while(!g_bI2cOk) ;
 652   1              Delay1ms(10);
 653   1              EX1 = 1;
 654   1              ET1 = 1;
 655   1              EI2C = 0;
 656   1      }
 657          /* ======================================= */
 658          static void IRSendStart_InterruptControl(void)
 659          {
 660   1              Delay1ms(200);
 661   1              EX1 = 0;
 662   1              EI2C = 0; 
 663   1              EKBI = 0;
 664   1      }
 665          /* ======================================= */
 666          static void IRSendEnd_InterruptControl(void)
 667          {
 668   1              EX1 = 1; 
 669   1      }
 670          /* ======================================= */
 671          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.50   DRIVER                                                                10/19/2006 09:37:29 PAGE 12  

   CODE SIZE        =   1437    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12      20
   IDATA SIZE       =     19    ----
   BIT SIZE         =      8    ----
   EDATA SIZE       =   ----    ----
   HDATA SIZE       =   ----    ----
   XDATA CONST SIZE =   ----    ----
   FAR CONST SIZE   =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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