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

📄 eeprom.lst

📁 程序为监测报警
💻 LST
字号:
C51 COMPILER V7.50   EEPROM                                                                01/29/2007 19:51:11 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN EEPROM.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE EEPROM.C LARGE OPTIMIZE(SIZE) DEBUG OBJECTEXTEND

line level    source

   1          /** 修改人:
   2          ** 版  本:
   3          ** 日 期:
   4          ** 描 述:
   5          **
   6          **--------------当前版本修订------------------------------------------------------------------------------
   7          ** 修改人: 陈明计 
   8          ** 日 期: 2003年3月26日
   9          ** 描 述: 增加注释
  10          **
  11          **------------------------------------------------------------------------------------------------------
  12          ********************************************************************************************************/
  13          //#include "PUMP.h"
  14          #include <reg52.h >
  15          #include<INTRINS.H>
  16          //#define SDA P3_5
  17          //#define SCL P3_4
  18          #define uchar  unsigned char
  19          #define uint   unsigned int
  20          #define TRUE    1
  21          #define FALSE   0
  22          //#define SDA     P3_5;
  23          //#define SCL     P3_4;
  24          sbit    SDA= P3^5;
  25          sbit    SCL = P3^4;
  26          
  27           void delay(void){
  28   1          unsigned char  def;
  29   1              for (def = 0; def < 70; def++ )//降低时钟频率延时
  30   1              {
  31   2      //get_ADC_val(0);         
  32   2                }
  33   1                return  ;
  34   1                }
  35          
  36          //向24XX发开始信号
  37          //
  38          void iicstart(void){
  39   1             SDA = 1;
  40   1                 delay();
  41   1                 SCL = 1;
  42   1                 delay();
  43   1                 SDA = 0;                    //发开始信号
  44   1                 delay();
  45   1                 SCL = 0;
  46   1                 delay();
  47   1             SDA = 1;                    //准备发送或接?
  48   1                 delay();
  49   1                 }
  50          //********************************************************************************************************
  51          //********************************************************************************************************
             -*
  52          //向24cxx发停止信号
  53          void  iicstop(void){
  54   1            SDA = 0;
C51 COMPILER V7.50   EEPROM                                                                01/29/2007 19:51:11 PAGE 2   

  55   1            delay();
  56   1            SCL = 1;
  57   1                delay();
  58   1            SDA = 1;
  59   1            delay();
  60   1            SCL = 0;
  61   1                delay();
  62   1                                 }
  63          
  64           void IICInit(void)
  65          {
  66   1          SCL = 0;
  67   1              delay();
  68   1          iicstop();
  69   1      }
  70          
  71          //*******************************************************************************************************
  72          //*******************************************************************************************************
  73          //发送应答信号
  74          
  75           void iicACK(void)
  76          {
  77   1          SDA = 0;
  78   1          delay();
  79   1          SCL = 1;
  80   1          delay();
  81   1          SCL = 0;
  82   1      }
  83          
  84          /*********************************************************************************************************
  85          ** ????: IIC_NO_ACK
  86          ** ????: ??IIC?????
  87          ** ? ?: ?
  88          ** ? ?: ?
  89          ** ????: ?
  90          ** ????: ?
  91          ********************************************************************************************************/
  92                  void IIC_NO_ACK(void)
  93          {
  94   1          SDA = 1;
  95   1          delay();
  96   1          SCL = 1;
  97   1          delay();
  98   1          SCL = 0;
  99   1              
 100   1          return;
 101   1      }
 102          
 103          
 104          //********************************************************************************
 105          //********************************************************************************
 106          //发送一个字节
 107          
 108          unsigned char IICSend(char IIC_data)
 109          {
 110   1          char i;
 111   1          
 112   1          for (i = 0; i < 8; i++)
 113   1          {
 114   2              IIC_data = IIC_data << 1;
 115   2              F0 = SDA = CY;
 116   2              SCL = 1;
C51 COMPILER V7.50   EEPROM                                                                01/29/2007 19:51:11 PAGE 3   

 117   2             // if (F0 != CY)
 118   2             // {
 119   2              //    SCL = 0;
 120   2             //     return FALSE;
 121   2             // }                          //此处不明原因为什么会错
 122   2              delay();
 123   2              SCL = 0;
 124   2          }
 125   1          SDA = 1;
 126   1          delay();
 127   1          SCL = 1;
 128   1          delay();
 129   1          if (SDA == 1)
 130   1          {
 131   2              SCL = 0;
 132   2              return FALSE;
 133   2          }
 134   1          else
 135   1          {
 136   2              SCL = 0;
 137   2              return TRUE;
 138   2          }
 139   1      }
 140          //********************************************************************************************************
 141          //********************************************************************************************************
 142          //接收一个字节
 143             char IICReceive(void)
 144          {
 145   1          char i,r;
 146   1          
 147   1          r = 0;
 148   1          SDA = 1;
 149   1              delay();
 150   1          for (i = 0; i < 8; i++)
 151   1          {
 152   2              r = r * 2;
 153   2              SCL = 1;
 154   2              delay();
 155   2      
 156   2              if (SDA == 1)
 157   2              {
 158   3                  r++;
 159   3                              delay();
 160   3              }
 161   2              SCL = 0;
 162   2                      delay();
 163   2          }
 164   1          return r;
 165   1      }
 166          
 167          /*********************************************************************************************************
 168          ** 函数名称: Cat24WCxxWrite
 169          ** 功能描述: 编程Cat24WCxx(仅允许一个任务可以调用)
 170          ** 输 入:  addr]:外部引脚设置的地址(将所有Cat24WCXX看成Cat24WC02)
 171          **         nbyte:编程字节数目
 172          **         index:编程起始的地址
 173          **         
 174          ** 输 出: ?
 175          ** 全局变量: 无
 176          ** 调用模块: 无
 177          ********************************************************************************************************/
 178                  char byteWrite ( char addr, char byte)  {          
C51 COMPILER V7.50   EEPROM                                                                01/29/2007 19:51:11 PAGE 4   

 179   1           char  k;
 180   1                k = 0xa0;
 181   1            EA=0;
 182   1            iicstart() ;                        
 183   1                if (IICSend(k)== FALSE)                 //发送控制字
 184   1                {
 185   2             return FALSE;
 186   2            }     
 187   1            if (IICSend(addr)== FALSE)             //发送要写入的地址
 188   1            {
 189   2              return FALSE;
 190   2            }  
 191   1             if (IICSend(byte)== FALSE)             //发送要写入数据?
 192   1             {
 193   2             return FALSE;
 194   2            }//
 195   1                iicstop();  
 196   1      //        get_ADC_val(0);
 197   1             EA=1;
 198   1            return   TRUE ; 
 199   1          }
 200          
 201          
 202          /*********************************************************************************************************
 203          ** 函数名称: Cat24WCxxRead
 204          ** 功能描述: 从Cat24WCxx读数据(仅允许一个任务可以调用)
 205          ** 输 入: Data[0]:外部引脚设置的地址(将所有Cat24WCXX看成Cat24WC02)
 206          **         Data[1]:需要读取字节数目
 207          **         Data[2]:读取的起始地址
 208          ** 输 出: Data:读取得数据
 209          ** 全局变量: 无
 210          ** 调用模块: 无
 211          ********************************************************************************************************/
 212                  char byteRead(char addr )
 213          {   
 214   1              char  k,L;
 215   1            EA=0;
 216   1                k = 0xa0;
 217   1                iicstart() ;
 218   1                  if (IICSend(k)== FALSE)                 //发送控制字
 219   1                {//
 220   2               return FALSE;//
 221   2            }
 222   1                 if (IICSend(addr)== FALSE)             //发送要写入的地址
 223   1            {
 224   2              return FALSE;
 225   2            }
 226   1                iicstart() ;
 227   1                k = 0xa1;
 228   1                if (IICSend(k)== FALSE)                 //发送控制?
 229   1            {
 230   2             return FALSE;
 231   2            }
 232   1                L = IICReceive();
 233   1                IIC_NO_ACK();
 234   1                iicstop()   ;  
 235   1      //        get_ADC_val(0);
 236   1            EA=1;
 237   1                return L;
 238   1            }
 239            //*******************************************************************************
 240            //*******************************************************************************
C51 COMPILER V7.50   EEPROM                                                                01/29/2007 19:51:11 PAGE 5   

 241              char nbyteRead(char addr, char nbyte, char *index)//  addr 要读取的地址 nbyte 读取的字节
 242               {
 243   1            for (/*nbyte++*/; nbyte !=0 ; nbyte--) {
 244   2                *index = byteRead(addr);
 245   2                index ++;
 246   2                addr++;
 247   2                
 248   2                                                   }
 249   1                return  TRUE ;
 250   1                } 
 251                   
 252            
 253           //********************************************************************************
 254           //********************************************************************************
 255             char nbyteWrite ( char addr, char nbyte,char *index)  
 256             {
 257   1            for ( /*nbyte++*/; nbyte!=0 ; nbyte--)  {
 258   2                   byteWrite(addr, *index);
 259   2                       addr++;
 260   2                       index++;
 261   2                                                        }
 262   1                 return  TRUE  ;
 263   1      
 264   1      
 265   1         }
 266          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    381    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      10
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -