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

📄 红外编码.lst

📁 我自己编码的一个空调红外编码程序,使用的是C语言的精确定时
💻 LST
字号:
C51 COMPILER V8.02   红外盻码                                                              05/02/2007 13:16:01 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 红外盻码
OBJECT MODULE PLACED IN 红外编码.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 红外编码.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <AT89x51.H>
   2           bit OP;
   3           unsigned  count;
   4           unsigned  endcount;
   5           unsigned char flag;
   6          char iraddr1;
   7          char iraddr2;
   8           
   9          void sendirdata(char p_irdata);
  10          void delay(void);
  11          
  12          main()
  13               {int i;
  14   1            count=0;
  15   1            flag=0;
  16   1            OP=0;
  17   1            P3_7=1;
  18   1       
  19   1      //        EA=0;
  20   1            TMOD=0X12;
  21   1      //      ET0=1;
  22   1            TH0=0Xf3;
  23   1            TL0=0Xf3;
  24   1      //      TR0=1;
  25   1      //        TR1=1;
  26   1            TCON=0X50;
  27   1                IE=0X9F;
  28   1       
  29   1            iraddr1=3;
  30   1            iraddr2=252;
  31   1      
  32   1      
  33   1            for(i=0;i<3;i++)
  34   1              {
  35   2              delay();
  36   2               sendirdata(12);
  37   2                       
  38   2               }
  39   1                       
  40   1                while(1);
  41   1           }
  42                   
  43          /***********************************************************/    
  44          void timeint(void)  interrupt 1
  45                {
  46   1           
  47   1             count++;
  48   1      
  49   1           if(flag==1)
  50   1             {
  51   2              P3_7=~P3_7;
  52   2              }
  53   1           else{P3_7=1;}
  54   1             
  55   1             }
C51 COMPILER V8.02   红外盻码                                                              05/02/2007 13:16:01 PAGE 2   

  56          /*********************************************************************/ 
  57           void sendirdata (char p_irdata)
  58               {
  59   1            int i;
  60   1                
  61   1            char irdata=p_irdata;
  62   1      //发送9ms的起始码 
  63   1            TR0=0;
  64   1            endcount=340;//340*13=00us
  65   1            flag=1;
  66   1            count=0;
  67   1                TR0=1;
  68   1            do{}while(count<endcount);
  69   1      //发送4.5ms的结果码
  70   1            endcount=165;//117 
  71   1            flag=0;
  72   1            count=0;
  73   1            do{}while(count<endcount);
  74   1      //发送十六地址的前八位
  75   1            irdata=iraddr1;
  76   1            for(i=0;i<8;i++)
  77   1      //先发送0.56ms的38kHz的红外波  
  78   1                { endcount=20;
  79   2                  flag=1;
  80   2                  count=0;
  81   2                  do{}while(count<endcount);
  82   2           
  83   2                 if(irdata-(irdata/2)*2)
  84   2                    {
  85   3                     endcount=70;//41
  86   3                     }
  87   2                else
  88   2                    {endcount=20;//15
  89   3                    }
  90   2                    flag=0;
  91   2                    count=0;
  92   2                do{}while(count<endcount);
  93   2           
  94   2                irdata=irdata>>1;
  95   2                }
  96   1            irdata=iraddr2;
  97   1            for(i=0;i<8;i++)
  98   1                  {
  99   2                   endcount=20;
 100   2                   flag=1;
 101   2                   count=0;
 102   2                   do{}while(count<endcount);
 103   2                   if(irdata-(irdata/2)*2)
 104   2                    {
 105   3                     endcount=70;//41
 106   3                    }
 107   2                   else
 108   2                    {
 109   3                     endcount=20;//15
 110   3                     }
 111   2                   flag=0;
 112   2                   count=0;
 113   2                   do{}while (count<endcount);
 114   2              
 115   2                  irdata=irdata>>1;
 116   2                               }
 117   1                      
C51 COMPILER V8.02   红外盻码                                                              05/02/2007 13:16:01 PAGE 3   

 118   1             //发送八位数据
 119   1             irdata=p_irdata;
 120   1             for(i=0;i<8;i++)
 121   1                 {
 122   2                  endcount=20;
 123   2                  flag=1;
 124   2                  count=0;
 125   2              do{}while(count<endcount);
 126   2          
 127   2              if(irdata-(irdata/2)*2)
 128   2                  {endcount=70;//41
 129   3                   }   
 130   2               else
 131   2                   {endcount=20;//15
 132   3                   }
 133   2               flag=0;
 134   2               count=0;
 135   2              do{}while(count<endcount);
 136   2              
 137   2              irdata=irdata>>1;
 138   2                  }
 139   1      //发送八位数据的反码
 140   1            irdata=~p_irdata;
 141   1            for(i=0;i<8;i++)
 142   1                  {
 143   2                   endcount=20;
 144   2                   flag=1;
 145   2                   count=0;
 146   2                   do{}while(count<endcount);
 147   2          
 148   2                   if(irdata-(irdata/2)*2)
 149   2                         {endcount=70;//41
 150   3                          }   
 151   2                  else
 152   2                         {endcount=20;//15
 153   3                          }
 154   2                  flag=0;
 155   2                  count=0;
 156   2                  do{}while(count<endcount);
 157   2              
 158   2                  irdata=irdata>>1;
 159   2                   }
 160   1              endcount=20;
 161   1              flag=1;
 162   1              count=0;
 163   1               do{}while(count<endcount);
 164   1              flag=0;
 165   1            }
 166          /*************************************************************/
 167               void delay(void)
 168                {
 169   1             int i,j;
 170   1             for(i=0;i<4;i++)
 171   1                 {
 172   2                 for(j=0;j<1;j++)
 173   2                           {}
 174   2                 }
 175   1             }
 176          
 177          
 178              

C51 COMPILER V8.02   红外盻码                                                              05/02/2007 13:16:01 PAGE 4   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    567    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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