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

📄 ini_ram.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   INI_RAM                                                               05/25/2006 16:31:10 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE INI_RAM
OBJECT MODULE PLACED IN D:\NEWMACHINE\060123\INI_RAM\INI_RAM.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\NEWMACHINE\060123\INI_RAM\INI_RAM.C DB SB OE

stmt level    source

   1          #include <ini_ram.h>
   2          
   3          bit writeEEP,save_PRG;
   4          unsigned char PRG;
   5          unsigned int mainDDR,nums,delt,nums1;
   6          unsigned char COMM,SLA,FF,GET,times;
   7          unsigned int *point;
   8          bit readEEPpage;
   9          
  10          void start_i2a()
  11          {
  12   1         P1_6=1;              //SCL
  13   1         P1_7=1;              //SDA
  14   1         S1CON=0x47;          //ENS1=1 STA=0 STO=0 SI=0 AA=1
  15   1         PS1=1;
  16   1         EA=1;
  17   1         ES1=1;
  18   1         STA=1;
  19   1      }
  20          
  21          void delay(int num)
  22          {
  23   1        data unsigned int i,ii;
  24   1        for(i=0;i<num;i++)
  25   1         {
  26   2           for(ii=0;ii<255;ii++);
  27   2         }
  28   1      }
  29          
  30          void get_SLA1()
  31          {
  32   1              unsigned char temp_PRG;
  33   1              if(PRG<50)
  34   1              {
  35   2                      SLA=0XA0;
  36   2                      temp_PRG=PRG;
  37   2              }
  38   1              else
  39   1              {
  40   2                      if(PRG<100)
  41   2                      {
  42   3                              SLA=0XA2;
  43   3                              temp_PRG=PRG-50;
  44   3                      }
  45   2                      else
  46   2                      {
  47   3                              if(PRG<150)
  48   3                              {
  49   4                                      SLA=0XA4;
  50   4                                      temp_PRG=PRG-100;
  51   4                              }
  52   3                              else
  53   3                              {
  54   4                                      SLA=0XA6;
  55   4                                      temp_PRG=PRG-150;
C51 COMPILER V7.06   INI_RAM                                                               05/25/2006 16:31:10 PAGE 2   

  56   4                              }
  57   3                      }
  58   2              }
  59   1              mainDDR=temp_PRG*768;
  60   1      }
  61          
  62          void writeEEP_word()
  63          {
  64   1              nums=0;
  65   1              writeEEP=1;
  66   1              SLA=0XA0;
  67   1              COMM=0XFF;
  68   1              start_i2a();
  69   1              while(writeEEP==1);
  70   1      }
  71          
  72          void writeEEP_page(unsigned char t)                     //将指定专家参数复制到目的程序号下
  73          {
  74   1              nums=0;
  75   1              delt=2;
  76   1              writeEEP=1;
  77   1              get_SLA1();
  78   1              COMM=(mainDDR+t*128)/256;
  79   1              start_i2a();
  80   1              while(writeEEP==1);
  81   1      }
  82          
  83          void S1_INT (void) interrupt 5      //I2C
  84          {
  85   1              ES1=0;
  86   1              if(S1STA==0x00)
  87   1              {
  88   2                      FF=1;
  89   2                      S1CON=0xD5;//STA=0   STO=1    SI=0     AA=1
  90   2              }
  91   1              if(S1STA==0X08)
  92   1              {
  93   2                      S1DAT=SLA;
  94   2                      S1CON=0xC5;//STA=0   STO=0    SI=0     AA=1
  95   2              }
  96   1              if(S1STA==0X10)
  97   1              {
  98   2                      S1DAT=SLA;
  99   2                      S1CON=0xC5;//STA=0   STO=0    SI=0     AA=1
 100   2              }
 101   1              if(S1STA==0X18)
 102   1              {
 103   2                      S1DAT=COMM;
 104   2                      S1CON=0xC5;//STA=0   STO=0    SI=0     AA=1
 105   2              }
 106   1              if(S1STA==0X20)
 107   1              {
 108   2                      FF=1;
 109   2                      S1CON=0xD5;//STA=0   STO=1    SI=0     AA=1
 110   2              }
 111   1              if(S1STA==0X28)
 112   1              {
 113   2                      nums++;
 114   2                      if(readEEPpage==1)
 115   2                              {
 116   3                                      if(times<6&&nums<130)
 117   3                                      {
C51 COMPILER V7.06   INI_RAM                                                               05/25/2006 16:31:10 PAGE 3   

 118   4                                              if(nums==1)
 119   4                                              {
 120   5                                                      COMM=(mainDDR+times*128)%256;
 121   5                                                      S1DAT=COMM;
 122   5                                                      S1CON=0xC5;//STA=0   STO=0    SI=0     AA=1
 123   5                                              }
 124   4                                              if(nums==2)
 125   4                                              {
 126   5                                                      SLA=SLA+1;
 127   5                                                      S1CON=0XE5;
 128   5                                              }
 129   4                                      }
 130   3                              }
 131   2                      else
 132   2                      {
 133   3                              if(save_PRG==1)
 134   3                              {
 135   4                                      if(nums<3)
 136   4                                      {
 137   5                                              if(nums==1)
 138   5                                                      COMM=0X00;
 139   5                                              else
 140   5                                                      COMM=PRG;
 141   5                                              S1DAT=COMM;
 142   5                                              S1CON=0xC5;//STA=0   STO=0    SI=0     AA=1
 143   5                                      }
 144   4                                      else
 145   4                                      {
 146   5                                              S1CON=0xD5;
 147   5                                              writeEEP=0;
 148   5                                      }
 149   4                              }
 150   3                              else
 151   3                              {
 152   4                                      if(times<6&&nums<130)
 153   4                                      {
 154   5                                              if(nums==1)
 155   5                                                      COMM=(mainDDR+times*128)%256;
 156   5                                              else
 157   5                                              {
 158   6              
 159   6                                                      if(times==5&&nums>=114)
 160   6                                                              COMM=0xFF;
 161   6                                                      else
 162   6                                                      {
 163   7                                                              if(nums%2==0)
 164   7                                                              {
 165   8                                                                      COMM=*(point+(times*64+nums-delt))/256;
 166   8                                                                      delt++;
 167   8                                                              }
 168   7                                                              else
 169   7                                                                      COMM=*(point+(times*64+nums-delt))%256;
 170   7                                                      }
 171   6              
 172   6                                              }
 173   5                                              S1DAT=COMM;
 174   5                                              S1CON=0xC5;//STA=0   STO=0    SI=0     AA=1
 175   5                                      }
 176   4                                      else
 177   4                                      {
 178   5                                              S1CON=0xD5;
 179   5                                              writeEEP=0;
C51 COMPILER V7.06   INI_RAM                                                               05/25/2006 16:31:10 PAGE 4   

 180   5                                      }
 181   4                              }
 182   3                      }
 183   2              }
 184   1              if(S1STA==0x30)
 185   1              {
 186   2                      FF=1;
 187   2                      S1CON=0xD5;//STA=0   STO=1    SI=0     AA=1
 188   2              }
 189   1              if(S1STA==0x38)
 190   1                      S1CON=0xE5;//STA=1   STO=0    SI=0     AA=1
 191   1              if(S1STA==40)
 192   1                      S1CON=0xC5;//STA=0   STO=0    SI=0     AA=1
 193   1              if(S1STA==0x48)
 194   1              {
 195   2                      FF=1;
 196   2                      S1CON=0xD5;//STA=0   STO=1    SI=0     AA=1
 197   2              }
 198   1              if(S1STA==0x50)
 199   1              {
 200   2      //              j++;
 201   2                      GET=S1DAT;
 202   2      //              if(j%2==1)
 203   2      //                      temp_GET=(int)(GET*256);
 204   2      //              else
 205   2      //              {
 206   2      //                      jj++;
 207   2      //                      temp_GET=temp_GET+GET;
 208   2      //                      *(point+j-jj)=temp_GET;
 209   2      //              }
 210   2      //              if(j<numbers)
 211   2                              S1CON=0XC5;
 212   2      //              else
 213   2      //                      S1CON=0XC1;
 214   2              }
 215   1              if(S1STA==0x58)
 216   1              {
 217   2                      GET=S1DAT;
 218   2      //              temp_GET=temp_GET+GET;
 219   2      //              if(getPRG==1)                           //获取上次使用的程序号
 220   2      //              {
 221   2      //                      PRG=temp_GET;                   //当前程序号
 222   2      //                      lastPRG=temp_GET;               //上次使用的程序号
 223   2      //                      readEEPword=0;
 224   2                              S1CON=0xD5;//STA=0   STO=1    SI=0     AA=1
 225   2      //              }
 226   2      //              else
 227   2      //              {
 228   2      //                      if(readEEPpage==1)              //按页读取EEPROM
 229   2                              {
 230   3      //                              *(point+j-jj)=temp_GET;
 231   3                                      FF=1;
 232   3      //                              readEEPpage=0;
 233   3                                      S1CON=0xD5;//STA=0   STO=1    SI=0     AA=1
 234   3                              }
 235   2      //              }
 236   2              }
 237   1              ES1=1;
 238   1      }
 239          
 240          main()
 241          {
C51 COMPILER V7.06   INI_RAM                                                               05/25/2006 16:31:10 PAGE 5   

 242   1              unsigned char m,n;
 243   1              save_PRG=0;
 244   1              
 245   1              pp.t01=20;
 246   1              pp.t02=50;
 247   1              pp.gas2=OFF;
 248   1              pp.t03=20;
 249   1              pp.t04=50;
 250   1              pp.k1=PDC;
 251   1              pp.ignit=HF;
 252   1              pp.i11=200;
 253   1              pp.t12=20;
 254   1              pp.i12=400;
 255   1              pp.t13=2;
 256   1              pp.t13_sd=0;
 257   1              pp.t14=20;
 258   1              pp.i14=1000;
 259   1              pp.t15=20;
 260   1              pp.i15=400;

⌨️ 快捷键说明

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