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

📄 11.lst

📁 数据分组程序
💻 LST
字号:
C51 COMPILER V8.02   11                                                                    04/07/2009 16:11:56 PAGE 1   


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

line level    source

   1          
   2          #include<reg52.h>
   3          #include<rom.h>
   4          #include<intrins.h>
   5          
   6          #define uchar unsigned char
   7          #define uint unsigned int
   8          
   9          sbit remotein=P0^6;          //遥控信号输入
  10          sbit remoteout=P0^7;     //遥控信号输出
  11          sbit P10=P1^0;
  12          sbit P11=P1^1;
  13          
  14          uint i,j,n,k,s;
  15          uchar idata arg[192];
  16          uchar idata head_buf[2];
  17          uchar xdata date1[32];
  18          uchar xdata date2[32];
  19          uchar xdata date3[32];
  20          uchar xdata date4[32];
  21          uchar xdata date5[32];
  22          uchar xdata date6[32];
  23          uint head,c,i;                                    //存放脉冲宽度数据用
  24          uint remdata;                                   // 存放起始位用
  25          uchar temp,flag;
  26          /********1ms 延时程序**********/
  27          delay1ms(uint t)
  28          {
  29   1      for(i=0;i<t;i++)
  30   1        for(j=0;j<120;j++);
  31   1        
  32   1      }
  33           /********初始化程序**********/
  34          
  35          
  36          void write_address()
  37          {
  38   1      
  39   1      for(i=0;i<32;i++)
  40   1      {
  41   2        date1[i]=arg[i];
  42   2        delay(312);  
  43   2        date2[i]=arg[i+32];
  44   2        delay(312);
  45   2        date3[i]=arg[i+64];
  46   2        delay(312);  
  47   2        date4[i]=arg[i+96];
  48   2        delay(312);
  49   2        date5[i]=arg[i+128];
  50   2        delay(312);
  51   2        date6[i]=arg[i+160];
  52   2        delay(312);
  53   2        }
  54   1      WrToFRam(0xa0,0x0000+0x0100*temp,date1,32);
  55   1      delay(31320);
C51 COMPILER V8.02   11                                                                    04/07/2009 16:11:56 PAGE 2   

  56   1      WrToFRam(0xa0,0x0020+0x0100*temp,date2,32);
  57   1      delay(31320);
  58   1      WrToFRam(0xa0,0x0040+0x0100*temp,date3,32);
  59   1      delay(31320);
  60   1      WrToFRam(0xa0,0x0060+0x0100*temp,date4,32);
  61   1      delay(31320);
  62   1      WrToFRam(0xa0,0x0080+0x0100*temp,date5,32);
  63   1      delay(31320);
  64   1      WrToFRam(0xa0,0x00a0+0x0100*temp,date6,32);
  65   1      delay(31320);
  66   1      WrToFRam(0xa0,0x00e0+0x0100*temp,head_buf,2);
  67   1      delay(31320);
  68   1      }
  69          void read_address()
  70          {
  71   1      RdFromFRam(0xa1,0x0000+0x0100*temp,date1,32);
  72   1      delay(31320);
  73   1      RdFromFRam(0xa1,0x0020+0x0100*temp,date2,32);
  74   1      delay(31320);
  75   1      RdFromFRam(0xa1,0x0040+0x0100*temp,date3,32);
  76   1      delay(31320);
  77   1      RdFromFRam(0xa1,0x0060+0x0100*temp,date4,32);
  78   1      delay(31320);
  79   1      RdFromFRam(0xa1,0x0080+0x0100*temp,date5,32);
  80   1      delay(31320);
  81   1      RdFromFRam(0xa1,0x00a0+0x0100*temp,date6,32);
  82   1      delay(31320);
  83   1      RdFromFRam(0xa1,0x00e0+0x0100*temp,head_buf,2);
  84   1      delay(31320);
  85   1      for(i=0;i<32;i++)
  86   1        {
  87   2        arg[i]=date1[i];
  88   2        delay(312);
  89   2        arg[i+32]=date2[i];
  90   2        delay(312);
  91   2        arg[i+64]=date3[i];
  92   2        delay(312);
  93   2        arg[i+96]=date4[i];
  94   2        delay(312);
  95   2        arg[i+128]=date5[i];
  96   2        delay(312);
  97   2        arg[i+160]=date6[i];
  98   2        delay(312);
  99   2        }
 100   1      }
 101          /*******键功能函数*********/
 102            keywork()
 103            {                        
 104   1                     P10=0;
 105   1                                 temp=temp-0x40;
 106   1      
 107   1                                 read_address();
 108   1                                 
 109   1                                 ET0=1;TR0=1;ES=0;
 110   1                                 head=head_buf[0];
 111   1                                 c=head_buf[1];
 112   1                                 c=c<<8;
 113   1                                 head=head|c;                           //
 114   1                                 for(i=head;i>0;i--){;}         //
 115   1                                 remoteout=0;ET0=0;TR0=0;
 116   1                                 n=0;
 117   1                                 while(1)
C51 COMPILER V8.02   11                                                                    04/07/2009 16:11:56 PAGE 3   

 118   1                                  {
 119   2                                       if(arg[n]==0x00){delay1ms(10);temp=0;P10=1;ES=1;break;}                        //
 120   2                                       for(i=arg[n];i>0;i--)
 121   2                                       {
 122   3                                       _nop_();
 123   3                                       _nop_();
 124   3                                       _nop_();
 125   3                                       _nop_();
 126   3                                       _nop_();
 127   3                                       _nop_();
 128   3                                       _nop_();
 129   3                                       _nop_();
 130   3                                       _nop_();
 131   3                                   _nop_();
 132   3                                       _nop_();
 133   3                                       _nop_();
 134   3                                       _nop_();
 135   3                                       _nop_();
 136   3                                       _nop_();
 137   3                                       
 138   3                                       }
 139   2                                       n++;
 140   2                                       ET0=1;TR0=1;
 141   2                                       for(i=arg[n];i>0;i--){;}
 142   2                                       remoteout=0;ET0=0;TR0=0;n++;
 143   2                                      }
 144   1                                               
 145   1              
 146   1        }
 147            /********主函数**********/
 148          
 149            /********40kHz发生器**********/
 150            //定时中断T1
 151            void time_intt1(void) interrupt 1
 152            {
 153   1         remoteout=~remoteout;
 154   1        }
 155            /********学习函数**********/
 156            //外中断0
 157            void study()
 158            {
 159   1            P11=0;
 160   1                ET0=0;TR0=0;ES=0;EA=0;head=0;
 161   1      
 162   1                while(remotein==1);
 163   1                head=0;
 164   1                while(remotein==0)
 165   1                     {
 166   2                               _nop_();
 167   2                               _nop_();
 168   2                               _nop_();
 169   2                               _nop_();
 170   2                               _nop_();
 171   2                               _nop_();
 172   2                               _nop_();
 173   2                               _nop_();
 174   2                               _nop_();
 175   2                               _nop_();
 176   2                               _nop_();
 177   2                               _nop_();
 178   2                               _nop_();
 179   2                               _nop_();
C51 COMPILER V8.02   11                                                                    04/07/2009 16:11:56 PAGE 4   

 180   2                               _nop_();
 181   2                               head++;
 182   2                      }
 183   1                         head_buf[0]=head;
 184   1                         head_buf[1]=head>>8;
 185   1                         n=0;remdata=0x00;
 186   1                         while(1)
 187   1                         {
 188   2                              while(remotein==1)
 189   2                              {
 190   3                           _nop_();
 191   3                               _nop_();
 192   3                               _nop_();
 193   3                               _nop_();
 194   3                               _nop_();
 195   3                               _nop_();
 196   3                               _nop_();
 197   3                               _nop_();
 198   3                               _nop_();
 199   3                               _nop_();
 200   3                               _nop_();
 201   3                               _nop_();
 202   3                               _nop_();
 203   3                               _nop_();
 204   3                               _nop_();
 205   3                               remdata++;
 206   3                              }
 207   2                              if(remdata>334)
 208   2                              {arg[n]=0x00;ES=1;EA=1;goto end;}
 209   2                              arg[n]=remdata;n++;
 210   2                              remdata=0x00;
 211   2                              while(remotein==0)
 212   2                              {
 213   3                               _nop_();
 214   3                               _nop_();
 215   3                               _nop_();
 216   3                               _nop_();
 217   3                               _nop_();
 218   3                               _nop_();
 219   3                               _nop_();
 220   3                               _nop_();
 221   3                               _nop_();
 222   3                               _nop_();
 223   3                               _nop_();
 224   3                               _nop_();
 225   3                               _nop_();
 226   3                               _nop_();
 227   3                               _nop_();
 228   3                              remdata++;
 229   3                              }
 230   2                              arg[n]=remdata;n++;remdata=0x0000;
 231   2                         }
 232   1                         end: write_address();remotein=1;remoteout=0;temp=0;P11=1;
 233   1        }
 234          void main()
 235          {
 236   1       P10=1;
 237   1       P11=1;
 238   1       remoteout=0;                                    
 239   1       remotein=1;
 240   1              TMOD=0x22;                                        
 241   1              PCON=0x00;
C51 COMPILER V8.02   11                                                                    04/07/2009 16:11:56 PAGE 5   

 242   1              TH1=0xfd;
 243   1              TL1=0xfd;
 244   1              TH0=0xf3;                                         
 245   1              TL0=0xf3;
 246   1              TR1=1;
 247   1              TR0=1;
 248   1              SM0=0;
 249   1              SM1=1;
 250   1              REN=1;
 251   1              EA=1;
 252   1              ES=1;
 253   1              while(1)
 254   1              {
 255   2                      if(flag==1)
 256   2                      {
 257   3                              ES=0;
 258   3                              flag=0;
 259   3                              SBUF=temp;
 260   3                              while(!TI);
 261   3                              TI=0;
 262   3                              ES=1;
 263   3                      }
 264   2               if((temp>0x00)&&(temp<0x40))                                             //0x01-0x3f为学习键
 265   2                  study();                                             
 266   2               else 
 267   2                  if ((temp>0x40)&&(temp<0x80))                                        //0x41-0x7f为发射键
 268   2                      keywork();                                     
 269   2               else;
 270   2              }
 271   1      
 272   1      }
 273          void serial() interrupt 4
 274          {
 275   1              temp=SBUF;
 276   1              flag=1;
 277   1              RI=0;
 278   1      } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1550    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    192    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18      16
   IDATA SIZE       =    194    ----
   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 + -