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

📄 fm24c16a.lst

📁 Keil单片机软件开发平台下的一个51系列单片机工程
💻 LST
字号:
C51 COMPILER V7.06   FM24C16A                                                              01/22/2007 09:50:05 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE FM24C16A
OBJECT MODULE PLACED IN .\output\FM24C16A.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FM24C16A.C OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\FM24
                    -C16A.obj)

stmt level    source

   1          #include"includes.h"
   2          bdata unsigned char aba;
   3          sbit abita0=aba^0;sbit abita1=aba^1;sbit abita2=aba^2;sbit abita3=aba^3;
   4          sbit abita4=aba^4;sbit abita5=aba^5;sbit abita6=aba^6;sbit abita7=aba^7;
   5          sbit FMSCLA = P3^3;
   6          sbit FMSDAA = P3^4;
   7          /***************************************************/
   8          //void load_work_step_infomation_from_fm(unsigned char work_step)
   9          //{
  10          //    current_ws_type    = read_f24c16_byte(FM_WORK_STEP_INFO_BASE+4+work_step*7+0);
  11          //    current_ws_current = read_f24c16_int (FM_WORK_STEP_INFO_BASE+4+work_step*7+1);
  12          //    current_ws_voltage = read_f24c16_int (FM_WORK_STEP_INFO_BASE+4+work_step*7+3);
  13          //    current_ws_minute  = read_f24c16_int (FM_WORK_STEP_INFO_BASE+4+work_step*7+5);
  14          //}
  15          
  16          void I_delayA(void)
  17          {
  18   1      //    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();
  19   1      }
  20          void I_delaylA(void)
  21          {
  22   1      //    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();
  23   1      //    _nop_();    _nop_();    _nop_();    _nop_();    _nop_();
  24   1      }
  25          /************************************************************
  26          *函数原型:void I_start(void);                     *
  27          * 功能:    提供I2C总线工作时序中的起始位。                 *
  28          ************************************************************/
  29          void I_startA(void)
  30          {
  31   1          FMSCLA = HIGH;I_delaylA();
  32   1          FMSDAA = LOW;I_delayA();
  33   1          FMSCLA = LOW;I_delayA();
  34   1      }
  35          /************************************************************
  36          *函数原型:void function I_stop(void);                      *
  37          * 功能:    提供I2C总线工作时序中的停止位。                 *
  38          ************************************************************/
  39          void I_stopA(void)
  40          {
  41   1          FMSDAA = LOW;I_delayA();
  42   1          FMSCLA = HIGH;I_delaylA();
  43   1          FMSDAA = HIGH;I_delayA();
  44   1          FMSCLA = LOW;I_delayA();
  45   1      }
  46          /**************************************************************/
  47          /*函数原型:void function I_init(void);                        *
  48          * 功能:    I2C总线初始化。在MAIN()函数中应首先调用本函数,  *
  49          *  然后再调用其它函数。                                       */
  50          /********************************** ****************************/
  51          void I_initA(void)
  52          {
  53   1          FMSCLA = LOW;I_delayA();
  54   1          I_stopA();I_delayA();
C51 COMPILER V7.06   FM24C16A                                                              01/22/2007 09:50:05 PAGE 2   

  55   1      }
  56          /*********************************************************************************************************
             -*************/
  57          /*函数原型:bit void function I_clock(void);
  58          *  功能:    提供I2C总线的时钟信号,并返回在时钟电平为高期间FMSDAA信号线上状态。本函数可用于数据发送,也可
             -用于数据接收。*/
  59          /*********************************************************************************************************
             -************/
  60          bit I_clockA(void)
  61          {
  62   1          bit sample;
  63   1          FMSCLA = HIGH;I_delaylA();
  64   1          sample = FMSDAA;I_delayA();
  65   1          FMSCLA = LOW;I_delayA();
  66   1          return (sample);
  67   1      }
  68          /*********************************************************************************************************
             -****/
  69          /*函数原型:bit void function I_send(unsigned char I_data);
  70          *  功能:    向I2C总线发送8位数据,并请求一个应答信号ACK。如果收到ACK应答则返回1(TRUE),否则返回0(FALSE
             -)。*
  71          /*********************************************************************************************************
             -****/
  72          bit I_sendA(unsigned char  I_data)
  73          {
  74   1          aba = I_data;
  75   1          FMSDAA = abita7;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
  76   1          FMSDAA = abita6;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
  77   1          FMSDAA = abita5;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
  78   1          FMSDAA = abita4;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
  79   1          FMSDAA = abita3;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
  80   1          FMSDAA = abita2;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
  81   1          FMSDAA = abita1;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
  82   1          FMSDAA = abita0;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
  83   1          FMSDAA = HIGH;I_delayA();
  84   1          return(~I_clockA());
  85   1      }
  86          /********************************************************************/
  87          /*函数原型:unsigned char function I_receive(void);                          *
  88          *功能:    从I2C总线接收8位数据,并将接收到8位数据作为一个字节返回,*
  89          *不回送应答信号ACK。主函数在调用本函数之前应保证FMSDAA信号线个于浮置状 *
  90          *态,即使8051的P1.7脚置1.                                           */
  91          /********************************************************************/
  92          unsigned char I_receiveA(void)
  93          {
  94   1          FMSCLA = HIGH;I_delaylA();abita7 = FMSDAA;FMSCLA = LOW;I_delayA();
  95   1          FMSCLA = HIGH;I_delaylA();abita6 = FMSDAA;FMSCLA = LOW;I_delayA();
  96   1          FMSCLA = HIGH;I_delaylA();abita5 = FMSDAA;FMSCLA = LOW;I_delayA();
  97   1          FMSCLA = HIGH;I_delaylA();abita4 = FMSDAA;FMSCLA = LOW;I_delayA();
  98   1          FMSCLA = HIGH;I_delaylA();abita3 = FMSDAA;FMSCLA = LOW;I_delayA();
  99   1          FMSCLA = HIGH;I_delaylA();abita2 = FMSDAA;FMSCLA = LOW;I_delayA();
 100   1          FMSCLA = HIGH;I_delaylA();abita1 = FMSDAA;FMSCLA = LOW;I_delayA();
 101   1          FMSCLA = HIGH;I_delaylA();abita0 = FMSDAA;FMSCLA = LOW;I_delayA();
 102   1          return (aba);
 103   1      }
 104          /******************************************************************/
 105          /******************************************************************/
 106          /*函数原型:void function I_ack(void);                            *
 107            功能:    向I2C总线发送一个应答案信号ACK,一般用于连续数据读取时.*/
 108          /******************************************************************/
 109          /*void function I_Ack(void)
 110          {
C51 COMPILER V7.06   FM24C16A                                                              01/22/2007 09:50:05 PAGE 3   

 111              FMSDAA = LOW;
 112              I_clock();
 113              FMSDAA = HIGH;
 114          }  */
 115          /****************************************************************************
 116          *    函数原型: bit function E_address(unsigned char Address);
 117          *    功    能: 向f24C16写入器件地址和一个指定的字节地址。
 118          *****************************************************************************/
 119          void E_addressA( unsigned char Device_Address,unsigned char Address )
 120          {
 121   1          I_startA() ;
 122   1          I_sendA( Device_Address&0xfe );
 123   1          I_sendA( Address );
 124   1      }
 125          /*********************************************************************************************************
 126          ** 函数名称: EepromReadByte
 127          ** 功能描述: 从指定的地址读出一个字节数据
 128          ** 输 入:   address,bytenumber
 129          ** 输 出:   所读数据
 130          ** 全局变量: 无
 131          ** 调用模块: SM_Receive
 132          ** 注  意:此函数不可重入,使用前要先申请信号量
 133          ** 作 者: 刘宝贵
 134          ** 日 期: 2004年5月5日
 135          **-------------------------------------------------------------------------------------------------------
 136          ** 修改人:
 137          ** 日 期:
 138          **-------------------------------------------------------------------------------------------------------
 139          *********************************************************************************************************/
 140          uint8 EepromReadByteA (uint16 address)
 141          {
 142   1          unsigned char a;
 143   1          unsigned char device_address,data_address;
 144   1          data_address=(unsigned char)address;
 145   1          device_address=(unsigned char)(address>>8);
 146   1          device_address=device_address<<1;
 147   1          device_address=device_address&0x0f;
 148   1          device_address=device_address|0xA1;
 149   1          I_initA();
 150   1          E_addressA( device_address,data_address );
 151   1          I_startA();
 152   1          I_sendA(device_address);
 153   1          a = I_receiveA();
 154   1          I_stopA();
 155   1          return(a);
 156   1      }
 157          /*********************************************************************************************************
 158          ** 函数名称: EepromReadWord
 159          ** 功能描述: 从指定的地址读出一个字节数据
 160          ** 输 入:   address,bytenumber
 161          ** 输 出:   所读数据
 162          ** 全局变量: 无
 163          ** 调用模块: SM_Receive
 164          ** 注  意:此函数不可重入,使用前要先申请信号量
 165          ** 作 者: 刘宝贵
 166          ** 日 期: 2004年5月5日
 167          **-------------------------------------------------------------------------------------------------------
 168          ** 修改人:
 169          ** 日 期:
 170          **-------------------------------------------------------------------------------------------------------
 171          *********************************************************************************************************/
 172          uint16 EepromReadWordA (uint16 address)
C51 COMPILER V7.06   FM24C16A                                                              01/22/2007 09:50:05 PAGE 4   

 173          {
 174   1          unsigned int a;
 175   1          unsigned char b,c;
 176   1          b =  EepromReadByteA(address);
 177   1          c =  EepromReadByteA(address+1);
 178   1          a=b;
 179   1          a=a<<8;
 180   1          a=a|c;
 181   1          return(a);
 182   1      }
 183          /*********************************************************************************************************
 184          ** 函数名称: EepromWriteByte
 185          ** 功能描述: 在指定的地址写入指定的字节
 186          ** 输 入:   address,temp
 187          ** 输 出:   无
 188          ** 全局变量: 
 189          ** 调用模块: SM_Send
 190          ** 注  意:此函数不可重入,使用前要先申请信号量
 191          ** 作 者: 刘宝贵
 192          ** 日 期: 2004年5月5日
 193          **-------------------------------------------------------------------------------------------------------
 194          ** 修改人:
 195          ** 日 期:
 196          **-------------------------------------------------------------------------------------------------------
 197          *********************************************************************************************************/
 198          void EepromWriteByteA(uint16 address ,uint8 temp)
 199          {
 200   1          uint8 device_address,data_address;
 201   1          data_address=(uint8)address;
 202   1          device_address=(uint8)(address>>8);
 203   1          device_address=device_address<<1;
 204   1          device_address=device_address&0xe;
 205   1          device_address=device_address|0xA0;
 206   1          I_initA();
 207   1          E_addressA( device_address,data_address );
 208   1          I_sendA(temp);
 209   1          I_stopA();
 210   1       }
 211          /*********************************************************************************************************
 212          ** 函数名称: EepromWriteWord
 213          ** 功能描述: 在指定的地址写入指定的字节
 214          ** 输 入:   address,temp16
 215          ** 输 出:   无
 216          ** 全局变量: 
 217          ** 调用模块: SM_Send
 218          ** 注  意:此函数不可重入,使用前要先申请信号量
 219          ** 作 者: 刘宝贵
 220          ** 日 期: 2004年5月5日
 221          **-------------------------------------------------------------------------------------------------------
 222          ** 修改人:
 223          ** 日 期:
 224          **-------------------------------------------------------------------------------------------------------
 225          *********************************************************************************************************/
 226          void EepromWriteWordA(uint16 address ,uint16 pata_data)
 227          {
 228   1          uint8 high_byte,low_byte;
 229   1          high_byte =(uint8)( pata_data>>8);
 230   1          EepromWriteByteA(address,high_byte);
 231   1          low_byte =(uint8)( pata_data&0xff);
 232   1          EepromWriteByteA( address+1, low_byte);
 233   1      }
 234          
C51 COMPILER V7.06   FM24C16A                                                              01/22/2007 09:50:05 PAGE 5   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    465    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       4
   IDATA SIZE       =   ----    ----
   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 + -