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

📄 remote51_new.lst

📁 基于单片机的红外解码源码
💻 LST
字号:
C51 COMPILER V8.02   REMOTE51_NEW                                                          04/30/2007 08:46:20 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE REMOTE51_NEW
OBJECT MODULE PLACED IN REMOTE51_NEW.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE REMOTE51_NEW.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <REGX52.H>
   2          #define  D45MS 2500
   3          #define  D09MS 450
   4          #define  D220U 0x90
   5          #define  D250U 0x06
   6          
   7          #define IRIN  P3_2 //红外输入引脚的定义
   8          //#define IRIN  P1_4 //红外输入引脚的定义
   9          
  10          
  11          union myd{
  12                   unsigned long r;
  13                   unsigned char led[4];    
  14            }     ;
  15          union myd k;
  16          unsigned long readir(void);
  17          void delay1(unsigned int nms);
  18          void initTimer(unsigned char st0);
  19          void initTimer1(void); 
  20          unsigned long readir2(void);
  21          extern void lcd_init(void);
  22          extern void lcd_string(char *strpoint); /*在当前显示位置显示LCD 字符串*/
  23          
  24          
  25          unsigned char code remcode2[]={0x12,0x90,0xb8,0xf8,0x98,0xd8,0x88,0xe8,0x48,0x68,//0,1-9
  26                                        0xb0,0xa8,0x99,0x00,0x08,0x60,0x02,0x20,
  27                                                                  //VOL+,VOL-,CH+,CH-,POWER,mute,recall,-/--
  28                                                                    0x40,0xa0,0x2a,0xb2,0x50,0x78,0x70,0x58,0x38,0x30};
  29                                                                          //  最后3排AV。。。Freeze。。。video。。。hide。。。panel等
  30          unsigned char code remcode[]={
  31                  0x90,0x00,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,//0-9的编码   
  32                  0x28,  0x68,0x08,  0x88, 0x58,0x48,0xc8, 0xa8,
  33                  //TV/AV,关机,频道-,频道+,重复,VOL+,VOL-, 静音MUTE,
  34                  0x78,  0xb8, 0x38, 0xe8, 0x98,0x18, 0x98,  0x50,0xd0,
  35                  //亮度,MIN,HOUR,IMER,SET,定时,画中画,2*,  3*
  36          };
  37          void int1(void) interrupt 2
  38          { EA = 0;
  39   1        k.r = readir();
  40   1        IE1 = 0;  
  41   1        EA = 1;
  42   1        IE1 = 0;
  43   1      }
  44          
  45          //UART init
  46          void initUart(void)
  47          {
  48   1       TMOD|=0x20;
  49   1       SCON=0x50;
  50   1      // PCON|=0x80;
  51   1       TH1=0xfd;
  52   1       TL1=0xfd;
  53   1       TR1=1;
  54   1       ET1=0;
  55   1      }
C51 COMPILER V8.02   REMOTE51_NEW                                                          04/30/2007 08:46:20 PAGE 2   

  56          
  57          int main(void)
  58          { 
  59   1        union myd rdata; 
  60   1        bit IROLD=0; 
  61   1        bit IRNEW=0; 
  62   1        unsigned char m,n,i;
  63   1        unsigned char code seg[]={0x01,0x02,0x04,0x08,0x10,0x00,0x00,0x00};
  64   1        unsigned char code zxm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
  65   1                    0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff, };
  66   1        unsigned int rekey;
  67   1        unsigned char key, str1[]="Code: --------      SYS:--   USER:--";
  68   1        unsigned char code str2[]="Please press any    key.....";
  69   1        unsigned char idata irdb[142];
  70   1        unsigned char leader[4];
  71   1        initTimer(0);
  72   1        initUart();
  73   1        TI=0;
  74   1        P1=0xff;
  75   1        SBUF = 0xee;while(!TI);TI=0;
  76   1        SBUF= 0x55; while(!TI);TI=0;  
  77   1        IT1=1;
  78   1        EX1=1;
  79   1        EA=0;rekey=0;
  80   1        key=0x10;
  81   1        P2= 0xff;
  82   1        P0=zxm[0];
  83   1        //lcd_init();
  84   1        //lcd_string(str2);
  85   1        while(1){  
  86   2         IROLD=1;     TR0=0;
  87   2         P0=zxm[0];
  88   2         //while(IRIN);       // 高电平等待
  89   2         P0=zxm[9];
  90   2         while(IROLD){
  91   3           IRIN =1;
  92   3           rekey=0;
  93   3           TR0=0;
  94   3               TH0=0;TL0=0;TR0=1;      
  95   3           while(!IRIN){rekey++;}// 低电平的起始位
  96   3               TR0=0;leader[0]=TH0;leader[1]=TL0;
  97   3               TH0=0;TL0=0;TR0=1;
  98   3               if(rekey>500) {
  99   4                  IROLD=0;
 100   4                      }         
 101   3         P0=zxm[1];
 102   3         }
 103   2         P0=zxm[2];
 104   2                      while(IRIN);   //高电平
 105   2                      TR0=0;
 106   2                      leader[3]=TH0;leader[4]=TL0;
 107   2                      TL0=0x00; TH0=0x00; 
 108   2                      TR0=1;
 109   2         m=0;
 110   2         while(m<140){         
 111   3                      IRIN =1;
 112   3                      while(IRIN==0) //低电平
 113   3                        {rekey++;   //高电平
 114   4                          if (rekey>10000) break;
 115   4                        }     
 116   3                      TR0=0;
 117   3                      irdb[m++]=TH0;
C51 COMPILER V8.02   REMOTE51_NEW                                                          04/30/2007 08:46:20 PAGE 3   

 118   3                      irdb[m++]=TL0;
 119   3                      TL0=0x00;TH0=0x00; 
 120   3                      TR0=1;
 121   3                      rekey=0;
 122   3                      while(IRIN)       //高电平
 123   3                        {rekey++;   
 124   4                          if (rekey>10000) break;
 125   4                        }
 126   3                      TR0=0;
 127   3                      irdb[m++]=TH0;
 128   3                      irdb[m++]=TL0;            
 129   3                      TL0=0x00; TH0=0x00; 
 130   3                      TR0=1;
 131   3                      P0=zxm[3];
 132   3         }
 133   2                        
 134   2         TR0=0;
 135   2         
 136   2         rekey=0;
 137   2      
 138   2         SBUF = 0xBB;while(!TI);TI=0;
 139   2         SBUF=  0xAA; while(!TI);TI=0;  
 140   2              
 141   2              m=0;
 142   2              while(m<4){           
 143   3      
 144   3                SBUF=leader[m++];while(!TI);TI=0;
 145   3                SBUF=leader[m++];while(!TI);TI=0;  
 146   3                P0=zxm[4];
 147   3              } 
 148   2              m=0;
 149   2              while(m<140){
 150   3                SBUF=irdb[m++];while(!TI);TI=0;
 151   3                SBUF=irdb[m++];while(!TI);TI=0;
 152   3                P0=zxm[5];
 153   3              }
 154   2              SBUF=0xaa;while(!TI);TI=0;
 155   2              SBUF=0xbb;while(!TI);TI=0;   
 156   2              P0=zxm[6];
 157   2              IRIN =1;
 158   2              rekey=0;
 159   2              while(rekey<500){rekey++;}
 160   2              IROLD=0;
 161   2              P0=zxm[7]; 
 162   2              TI=0;
 163   2              rekey=0;
 164   2              k.r=0;
 165   2        }
 166   1      }
*** WARNING C280 IN LINE 59 OF REMOTE51_NEW.C: 'rdata': unreferenced local variable
*** WARNING C280 IN LINE 62 OF REMOTE51_NEW.C: 'n': unreferenced local variable
*** WARNING C280 IN LINE 62 OF REMOTE51_NEW.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 63 OF REMOTE51_NEW.C: 'seg': unreferenced local variable
*** WARNING C280 IN LINE 68 OF REMOTE51_NEW.C: 'str2': unreferenced local variable
 167          
 168          unsigned long readir2(void)
 169          {  static bit IROLD=0; 
 170   1         bit IRNEW;
 171   1         union myd rem;
 172   1         IRIN =1;
 173   1         IRNEW = IRIN; 
 174   1         if(IRNEW != IROLD)
C51 COMPILER V8.02   REMOTE51_NEW                                                          04/30/2007 08:46:20 PAGE 4   

 175   1         {
 176   2            rem.led[0]=TL0;
 177   2                rem.led[2]=TH0;
 178   2                TL0=0x00;
 179   2                TH0=0x00; 
 180   2                TR1=1;  
 181   2         }
 182   1         else
 183   1         {
 184   2                rem.r=0;
 185   2         }
 186   1         IROLD =IRNEW; 
 187   1         return rem.r;
 188   1      }
 189          
 190          void delay1(unsigned int nms)
 191          {
 192   1        while(nms--); 
 193   1      }
 194          
 195          // 24---220us, 06---250us
 196          void initTimer(unsigned char st0) 
 197          {
 198   1       TMOD=0x01;
 199   1       TH0=st0;
 200   1       TL0=st0; 
 201   1       TR0=0;
 202   1       ET0=0;
 203   1       ET1=0; 
 204   1      }
 205          
 206          void initTimer1(void) 
 207          {
 208   1       TMOD =0x10;
 209   1       TH1=0x00;
 210   1       TL1=0x00; 
 211   1       TR1=0;
 212   1       ET1=0;
 213   1       //ET1=0; 
 214   1      }
 215          
 216          unsigned long readir(void)
 217          {  unsigned char i;
 218   1         unsigned int delay;
 219   1         unsigned long rdata=0;
 220   1         union myd rem;
 221   1         IRIN = 1;   
 222   1         if(IRIN) return 0;
 223   1         EA=0;i=0;
 224   1         initTimer2();TF0=0;
*** WARNING C206 IN LINE 224 OF REMOTE51_NEW.C: 'initTimer2': missing function-prototype
 225   1         while(IRIN==0); 
 226   1       /*    {
 227   1                        while(TF0==0);
 228   1                        TF0=0;i++;
 229   1                        TH0=0xfc;TL0=0x18;  
 230   1               }
 231   1         TR0=0;
 232   1         if (i<6) return i;*/
 233   1         i=32;
 234   1         while(i--) //始接收
 235   1         {  
C51 COMPILER V8.02   REMOTE51_NEW                                                          04/30/2007 08:46:20 PAGE 5   

 236   2            delay =80;
 237   2                initTimer(D220U);
 238   2                while(delay--)  // 延时4.5ms~6.0ms
 239   2                  { 
 240   3                        while(TF0==0);
 241   3                        TF0=0;if(IRIN==0) delay = 0;
 242   3                      }
 243   2                TR0=0;                  
 244   2                while(IRIN==0) IRIN = 1; //等待高电平
 245   2            // 延时0.9ms      begin
 246   2                initTimer(D220U);
 247   2                delay=6;
 248   2                while(delay--)  
 249   2                  {while(TF0==0);TF0=0;}                
 250   2                TR0=0;
 251   2                // 延时0.9ms end
 252   2            rdata <<=1;
 253   2                IRIN =1;
 254   2                if(IRIN)
 255   2                   rdata |= 0x1;
 256   2         }
 257   1         rem.r = rdata;
 258   1         if(rem.r+1) {
 259   2             if (((rem.led[0]+ rem.led[1])== 0xff) &&((rem.led[2]+ rem.led[3])== 0xff)) return rdata;    
 260   2                 else return 0;
 261   2         }
 262   1         else return rdata;
 263   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    880    ----
   CONSTANT SIZE    =    146    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      61
   IDATA SIZE       =   ----     142
   BIT SIZE         =      1       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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