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

📄 main.lst

📁 环境:keil c51 i2c调度工具
💻 LST
字号:
C51 COMPILER V7.07   MAIN                                                                  04/14/2005 16:26:10 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #include <string.h>
   3          #include <main.h>
   4          #include <intrins.h>
   5          //#define TEST
   6          
   7          
   8          //定时器0用来辅助电脑串口发送数据
   9          void timer0_isr   (void) interrupt 1
  10          {
  11   1      if(receive_total!=0xff)
  12   1          read_flag=1;
  13   1      else
  14   1          receive_total=0xff;
  15   1      }
  16          
  17          
  18          //向串口发送一个字符
  19          void send_char_com(void)
  20          {
  21   1          unsigned char i;
  22   1          EA=0;
  23   1      //------------------------------------------------------
  24   1      //----------------SET I2C_ADDRESS-----------------------
  25   1      //------0XFF,0XFF,ADDRESS--------------------------------
  26   1      //--IF FAIL,DISPLAY;IF SUCCESS,NO DISPLAY
  27   1              if((receive_total==2)&serial_data[0]==0xff&serial_data[1]==0xff)
  28   1                      {
  29   2                      i2c_device_address=serial_data[2];
  30   2                      i2c_device_sub_data_r(i2c_device_address+1,00);
  31   2                      serial_data[3]=i2c_data;                
  32   2                      i2c_device_sub_data(i2c_device_address,00,serial_data[3]);
  33   2                              if(IIC_ERROR)
  34   2                                      {
  35   3                                      SBUF=SBUF;
  36   3                                      while(TI==0);
  37   3                                     TI=0;
  38   3                                      }
  39   2                                      receive_total=0xff;
  40   2                      }
  41   1      //--------------------------------------------------------
  42   1              else
  43   1                      {
  44   2      //-------------------------------------------------------
  45   2      //------------IF SEND 10 11 12 13,--->I2CADDRESS1011,I2CADDRESS1213
  46   2      //------------IF FAIL,DISPLAY ADDRESS,ELSE NO DISPLAY-------------------------
  47   2                              if(~READ_WRITE_SET)
  48   2                              {
  49   3                                       for(i=0;i<receive_total;)
  50   3                                              {
  51   4                                              i2c_device_sub_data(i2c_device_address,serial_data[i],serial_data[i+1]);
  52   4                                                      if(IIC_ERROR)
  53   4                                                      {
  54   5                                                      SBUF=serial_data[i];
  55   5                                                      while(TI==0);
C51 COMPILER V7.07   MAIN                                                                  04/14/2005 16:26:10 PAGE 2   

  56   5                                                TI=0;
  57   5                                                      }
  58   4                                              i=i+2;
  59   4                                              }
  60   3                                                      SBUF=0x33;//发完标志
  61   3                                                      while(TI==0);
  62   3                                                     TI=0;
  63   3                              }
  64   2      //-------------READ FROM I2C_DEVICE--------------------------------
  65   2      //-------------DISPLAY ADDRESS AND DATA---------------------------
  66   2                              if(READ_WRITE_SET)
  67   2                                      {
  68   3                                      for(i=0;i<=receive_total;i++)
  69   3                                              {
  70   4                                              SBUF=serial_data[i];
  71   4                                              while(TI==0);
  72   4                                             TI=0;
  73   4                                              i2c_device_sub_data_r(i2c_device_address+1,serial_data[i]);
  74   4                                              SBUF=i2c_data;
  75   4                                              while(TI==0);
  76   4                                             TI=0;
  77   4                                              }
  78   3                                      }
  79   2                              receive_total=0xff;
  80   2                      }
  81   1      EA=1;
  82   1      }
  83          
  84          
  85          //串口接收中断函数
  86          void serial () interrupt 4
  87          {
  88   1          if(RI)
  89   1          {
  90   2              RI = 0;TH0=0;
  91   2                               receive_total++;
  92   2              serial_data[receive_total]=SBUF;
  93   2      /*//----------SET ADDRESS------------------------------
  94   2      //---------------------------------------------------
  95   2                      if(receive_total==2)
  96   2                        {//0xff,0xff+address
  97   2                              if(serial_data[0]==0xff&serial_data[1]==0xff)
  98   2                                      {i2c_device_address=serial_data[2];}
  99   2                        }*/
 100   2      //-----------------------------------------------------
 101   2      //-----------------------------------------------------
 102   2      //----------GOTOISP_prom------------------------------
 103   2                      if(receive_total==2)
 104   2                              {
 105   3                              if(serial_data[0]==0xa0&serial_data[1]==0x00&serial_data[2]==0x0a)
 106   3                                      GOTOISP_prom();
 107   3                              }
 108   2      //-----------------------------------------------------
 109   2      //----------SET I2C WRITE------------------------------
 110   2                      if(receive_total==2)
 111   2                              {
 112   3                              if(serial_data[0]==0xa0&serial_data[1]==0x00&serial_data[2]==0x01)
 113   3                                      {READ_WRITE_SET=0;receive_total=0XFF;}
 114   3                              }
 115   2      //-----------------------------------------------------
 116   2      //----------SET I2C READ------------------------------
 117   2                      if(receive_total==2)
C51 COMPILER V7.07   MAIN                                                                  04/14/2005 16:26:10 PAGE 3   

 118   2                              {
 119   3                              if(serial_data[0]==0xa0&serial_data[1]==0x00&serial_data[2]==0x02)
 120   3                                      {READ_WRITE_SET=1;receive_total=0XFF;}
 121   3                              }
 122   2      
 123   2      //------------------------------------------------------
 124   2      #ifdef TEST
                     if(serial_data[receive_total]!=receive_total)
                     _nop_();
              #endif
 128   2      
 129   2          }
 130   1      }
 131          
 132          
 133          main()
 134          {
 135   1          initi_system();  //初始化串口
 136   1          while(1)
 137   1          {
 138   2                if(read_flag)  //如果取数标志已置位,就将读到的数从串口发出
 139   2                {
 140   3                     read_flag=0; //取数标志清0
 141   3                      send_char_com();
 142   3      
 143   3      
 144   3                }
 145   2          }
 146   1      
 147   1      }
 148          
 149          
 150          
 151          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    570    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    256    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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