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

📄 240x.lst

📁 51edn开发板程序
💻 LST
字号:
C51 COMPILER V7.50   240X                                                                  06/02/2008 20:59:17 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 240X
OBJECT MODULE PLACED IN 240x.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 240x.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*--------------------------------------------------------
   2                      240x.c文件 240x-I2CROM的读写函数
   3            作者:Computer-lov     创建日期:2004.11.12    最后修改日期:2004.11.21
   4            版本:1.0
   5            Copyright (c) 2005 Computer-lov
   6          -----------------------------------------------------------*/
   7          
   8          #include "240x.h"
   9          
  10          /********************************************************************
  11          函数功能:延时子函数。
  12          入口参数:无。
  13          返    回:无。
  14          备    注:无。
  15          ********************************************************************/
  16          void delay(void)
  17          {
  18   1       int8 i;
  19   1       for(i=0;i<1;i++);
  20   1      }
  21          ////////////////////////End of function//////////////////////////////
  22          
  23          /********************************************************************
  24          函数功能:EEROM写一字节函数。
  25          入口参数:device_addr:设备地址;data_addr:数据地址;w_data:数据。
  26          返    回:是否成功。
  27          备    注:无。
  28          ********************************************************************/
  29          uint8 EepromWriteByte(uint8 device_addr,uint8 data_addr,uint8 w_data) 
  30          {
  31   1       uint8 i,Device_Addr;
  32   1       delay();
  33   1       SDA=0;                          //产生一个起始位       
  34   1       delay();
  35   1       Device_Addr=device_addr;        //EEROM的地址暂存
  36   1       for(i=0;i<7;i++)                //输出设备地址
  37   1       { 
  38   2        SCL=0;
  39   2        delay();
  40   2        SDA=device_addr&0x80;         //SDA上输出一位数据,高位在前
  41   2        device_addr<<=1;
  42   2        delay();
  43   2        SCL=1;
  44   2        delay();
  45   2       }
  46   1       SCL=0;
  47   1       delay();
  48   1       SDA=0;                          //SDA上输出0,表示写操作
  49   1       delay();
  50   1       SCL=1;
  51   1       delay();
  52   1       SCL=0;
  53   1       delay();
  54   1       SDA=1;                          //释放SDA线
  55   1       delay();
C51 COMPILER V7.50   240X                                                                  06/02/2008 20:59:17 PAGE 2   

  56   1       SCL=1;
  57   1       delay();
  58   1       if(SDA){return 1;}               //如果设备未响应,则返回出错代码1
  59   1       for(i=0;i<8;i++)                //输出数据地址
  60   1       {
  61   2        SCL=0;
  62   2        delay();
  63   2        SDA=data_addr&0x80;           //SDA上输出一位数据,高位在前
  64   2        data_addr<<=1;       
  65   2        delay();
  66   2        SCL=1;
  67   2        delay();
  68   2        delay();
  69   2       }  
  70   1       SCL=0;
  71   1       delay();
  72   1       SDA=1;                          //释放SDA线
  73   1       delay();
  74   1       SCL=1;
  75   1       delay();
  76   1       if(SDA){return 2;}             //如果设备未响应,则返回出错代码2
  77   1       for(i=0;i<8;i++)                //输出要写入的数据
  78   1       {
  79   2        SCL=0;
  80   2        delay();
  81   2        SDA=w_data&0x80;               //SDA上输出一位数据,高位在前
  82   2        w_data<<=1;
  83   2        delay();
  84   2        SCL=1;
  85   2        delay();
  86   2       }  
  87   1       SCL=0;
  88   1       delay();
  89   1       SDA=1;                          //释放SDA线
  90   1       delay();
  91   1       SCL=1;
  92   1       delay();
  93   1       if(SDA){return 3;}               //如果设备未响应,则返回出错代码3
  94   1       SCL=0;
  95   1       delay();
  96   1       SDA=0;
  97   1       delay();
  98   1       SCL=1;
  99   1       delay();
 100   1       SDA=1;                         //产生一个停止位,停止操作
 101   1       for(i=0;i<250;i++)             //等待数据写入
 102   1       {
 103   2        delay();
 104   2       }
 105   1       for(i=0;i<250;i++)delay();
 106   1       return 0;                     //正确写入,返回0
 107   1      }
 108          ////////////////////////End of function//////////////////////////////
 109          
 110          /********************************************************************
 111          函数功能:从EEROM中读取一字节函数。
 112          入口参数:device_addr:设备地址;data_addr:数据地址。
 113          返    回:无。
 114          备    注:无。
 115          ********************************************************************/
 116          uint8 EepromReadByte(uint8 device_addr,uint8 data_addr) 
 117          {
C51 COMPILER V7.50   240X                                                                  06/02/2008 20:59:17 PAGE 3   

 118   1       uint8 i,r_data,Device_Addr;
 119   1       SDA=0;                          //产生一个起始位       
 120   1       delay();
 121   1       Device_Addr=device_addr;        //EEROM的地址暂存
 122   1       for(i=0;i<7;i++)                //输出设备地址
 123   1       { 
 124   2        SCL=0;
 125   2        delay();
 126   2        SDA=device_addr&0x80;         //SDA上输出一位数据,高位在前
 127   2        device_addr<<=1;
 128   2        delay();
 129   2        SCL=1;
 130   2        delay();
 131   2       }
 132   1       SCL=0;
 133   1       delay();
 134   1       SDA=0;                    //SDA上输出0,表示写操作
 135   1       delay();
 136   1       SCL=1;
 137   1       delay();
 138   1       SCL=0;
 139   1       delay();
 140   1       SDA=1;                    //释放SDA线
 141   1       delay();
 142   1       SCL=1;
 143   1       delay();
 144   1       if(SDA) return 0x0100;   //如果设备未响应,则返回出错代码0x0100
 145   1       for(i=0;i<8;i++)         //输出数据地址
 146   1       {
 147   2        SCL=0;
 148   2        delay();
 149   2        SDA=data_addr&0x80;    //SDA上输出一位数据,高位在前
 150   2        data_addr<<=1;       
 151   2        delay();
 152   2        SCL=1;
 153   2        delay();
 154   2        delay();
 155   2       }  
 156   1       SCL=0;
 157   1       delay();
 158   1       SDA=1;                     //释放SDA线
 159   1       delay();
 160   1       SCL=1;
 161   1       delay();
 162   1       if(SDA) return 0x0200;     //如果设备未响应,则返回出错代码0x0200
 163   1       SCL=0;
 164   1       delay();
 165   1       SDA=1;
 166   1       delay();
 167   1       SCL=1;
 168   1       delay();
 169   1       SDA=0;                      //产生一个重启动位
 170   1       delay();
 171   1       device_addr=Device_Addr;    //EEROM的地址
 172   1       for(i=0;i<7;i++)            //输出设备地址,一个7位的地址
 173   1       { 
 174   2        SCL=0;
 175   2        delay();
 176   2        SDA=device_addr&0x80;     //SDA上输出一位数据,高位在前
 177   2        device_addr<<=1;
 178   2        delay();
 179   2        SCL=1;
C51 COMPILER V7.50   240X                                                                  06/02/2008 20:59:17 PAGE 4   

 180   2        delay();
 181   2       }
 182   1       SCL=0;
 183   1       delay();
 184   1       SDA=1;                     //SDA上输出1,表示读操作
 185   1       delay();
 186   1       SCL=1;
 187   1       delay();
 188   1       SCL=0;
 189   1       delay();
 190   1       SDA=1;                     //释放SDA线
 191   1       delay();
 192   1       SCL=1;
 193   1       delay();
 194   1       if(SDA) return 0x0300;    //如果设备未响应,则返回出错代码0x0300
 195   1       for(i=0;i<8;i++)          //从EEROM中读出数据
 196   1       {
 197   2        SCL=0;
 198   2        delay();
 199   2        r_data<<=1;
 200   2        delay();
 201   2        SCL=1;
 202   2        if(SDA)r_data=r_data|0x01;   //保存一位数据
 203   2        delay();
 204   2       }  
 205   1       SCL=0;
 206   1       delay();
 207   1       SDA=1;                        //置SDA高电平,表示停止读出
 208   1       delay(); 
 209   1       SCL=1;
 210   1       delay();
 211   1       SCL=0;
 212   1       delay();
 213   1       SDA=0;
 214   1       delay();
 215   1       SCL=1;
 216   1       delay();
 217   1       SDA=1;                         //产生一个停止位,停止读操作
 218   1       return r_data;                 //返回数据
 219   1      }
 220          //****************************************************************************************


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


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

⌨️ 快捷键说明

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