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

📄 ir_send.lst

📁 大家好
💻 LST
字号:
C51 COMPILER V7.50   IR_SEND                                                               08/13/2007 14:14:10 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE IR_SEND
OBJECT MODULE PLACED IN ir_send.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ir_send.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //红外发送程序
   2          
   3          #include <reg52.h>
   4          
   5          #define uchar unsigned char
   6          #define uint  unsigned int 
   7          
   8          #define send0 send_pulse_565 ();        send_space_1685 ();
   9          #define send1 send_pulse_565 ();        send_space_560  ();
  10          
  11          uchar SYS_DATA=0x49;                                    //系统码
  12          
  13          sbit OUT=P3^7;
  14          
  15          
  16          void send_bit   (uchar one_bit);                //发送一位字节
  17          void send_data  (uchar one_data);               //发送一个数据
  18                                                                                          //包括一个起始标志 一个系统码及其反码 一个数据码(one_data)及其反码      
  19          
  20          char code disp[]={0x28,0x7E,0xA2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60,0x30,0x25,0xA7,0x26,0xA1,0xB1};
  21          char i1=0,i2=0,i3=0,i4=0,i5=0,i6=0,i7=0,i8=0; //显示缓冲 
  22          
  23          
  24          void delay(uchar t)
  25          { char a;
  26   1        while(t--)
  27   1        for(a=255;a>0;a--);  }
  28          
  29          void display(uchar t)
  30          {while(t--)
  31   1       {P0=disp[i1];
  32   2        P2=0x7f;
  33   2        delay(1);
  34   2        P2=0xff;
  35   2        P0=disp[i2];
  36   2        P2=0xbf;
  37   2        delay(1);
  38   2        P2=0xff;
  39   2        P0=disp[i3];
  40   2        P2=0xdf;
  41   2        delay(1);
  42   2        P2=0xff;
  43   2        P0=disp[i4];
  44   2        P2=0xef;
  45   2        delay(1);
  46   2        P2=0xff;
  47   2        P0=disp[i5];
  48   2        P2=0xf7;
  49   2        delay(1);
  50   2        P2=0xff;
  51   2        P0=disp[i6];
  52   2        P2=0xfb;
  53   2        delay(1);
  54   2        P2=0xff;
  55   2        P0=disp[i7];
C51 COMPILER V7.50   IR_SEND                                                               08/13/2007 14:14:10 PAGE 2   

  56   2        P2=0xfd;
  57   2        delay(1);
  58   2        P2=0xff;
  59   2        P0=disp[i8];
  60   2        P2=0xfe;
  61   2        delay(1);
  62   2        P2=0xff;} }
  63          
  64          void send_pulse_9000 (void)                             //9ms脉宽
  65          {
  66   1              TH0=0xdc;
  67   1              TL0=0xff;
  68   1              TR0=1;
  69   1              TR1=1;
  70   1              while(TR0);
  71   1              TR1=0;  
  72   1              OUT=1;
  73   1                                                      }
  74          
  75          
  76          void send_space_4500 (void)                             //4.5ms间隔
  77          {       
  78   1              OUT=1;
  79   1              TH0=0xee;
  80   1              TL0=0x7f;
  81   1              TR0=1;
  82   1              while(TR0);
  83   1              OUT=1;
  84   1                                                      }
  85          
  86          void send_pulse_565 (void)                              //0.565ms脉宽
  87          {
  88   1              TH0=0xfd;
  89   1              TL0=0xee;
  90   1              TR0=1;
  91   1              TR1=1;
  92   1              while(TR0);
  93   1              TR1=0;  
  94   1              OUT=1;
  95   1                                                      }
  96          
  97          
  98          
  99          void send_space_1685 (void)                             //1.685ms间隔
 100          {       
 101   1              OUT=1;
 102   1              TH0=0xf9;
 103   1              TL0=0x7f;
 104   1              TR0=1;
 105   1              while(TR0);
 106   1              OUT=1;
 107   1                                                      }
 108          
 109          
 110          void send_space_560 (void)                              //0.56ms间隔
 111          {       
 112   1              OUT=1;
 113   1              TH0=0xfd;
 114   1              TL0=0xea;
 115   1              TR0=1;
 116   1              while(TR0);
 117   1              OUT=1;
C51 COMPILER V7.50   IR_SEND                                                               08/13/2007 14:14:10 PAGE 3   

 118   1                                                      }
 119          
 120          
 121          
 122          
 123          
 124          void send_bit   (uchar one_bit)
 125          {
 126   1              uchar i;
 127   1              uchar key_num=0x01;
 128   1              for(i=0;i<8;i++)
 129   1              {
 130   2                      send_pulse_565 ();                                                      //先发0.565毫秒脉宽
 131   2                      
 132   2                      if( (one_bit&key_num)==1 )
 133   2                              send_space_1685 ();                                             //先发低位 某位是1则延时1.685ms
 134   2                      else    
 135   2                              send_space_560();                                               //如果是0则延时0.56ms
 136   2                      one_bit=one_bit>>1;                                                     //one_bit右移一位
 137   2                      
 138   2                                                                                      }
 139   1                                                                                                      }
 140          
 141          
 142          
 143          void send_data (uchar one_data)
 144          {
 145   1              uint t=1000;
 146   1              send_pulse_9000();                                      //起始码 9ms的脉宽 考虑到误差
 147   1              send_space_4500();                                      //4.5ms的间隔   
 148   1              send_bit (SYS_DATA);                            //发系统码
 149   1              send_bit (~SYS_DATA);                           //发系统码的反码
 150   1              send_bit (one_data);                            //发数据码
 151   1              send_bit (~one_data);                           //发数据码的反码
 152   1              TR1=1;
 153   1              while(t--);
 154   1              TR1=0;  
 155   1              OUT=1;
 156   1                                                                                                                      }
 157          
 158                  
 159                  
 160          void main(void)
 161          {
 162   1              uchar c=0x77;
 163   1              uint t=65535;
 164   1              TMOD=0x21;                                                      //T0产生精确时间的延时或脉宽 16位
 165   1                                                                                      //T1产生38kHz方波                8位自动重装
 166   1              TH1=0xf3;
 167   1              TL1=0xf3;
 168   1              IE=0x8a;
 169   1              delay(255);
 170   1              display(100);
 171   1              delay(255);
 172   1              display(100);
 173   1              while(1)
 174   1              {
 175   2                      send_data(c);
 176   2                                                              }
 177   1                                                                              }
 178          
 179          
C51 COMPILER V7.50   IR_SEND                                                               08/13/2007 14:14:10 PAGE 4   

 180          void time0 (void) interrupt 1
 181          {
 182   1              TR0=0;
 183   1              TR1=0;
 184   1                              }
 185                  
 186          void time1 (void) interrupt 3                   //T1用来产生38kHz方波
 187          {
 188   1              OUT=~OUT;
 189   1                                      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    513    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9       2
   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 + -