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

📄 eeprom.lst

📁 mtv230 的源程序,供大家参考.
💻 LST
字号:
C51 COMPILER V7.50   EEPROM                                                                07/11/2005 15:03:03 PAGE 1   


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

line level    source

   1          /***********************************************************************
   2          * Project:      MTV230+CS7110+UPS017                                                        
   3          *                                                                                                         
             -                 
   4          * File:         EEPROM.c (Source)                                                                         
             -         
   5          *                                                                                                         
             -                 
   6          * Version:      V1.0                                                                                      
             -         
   7          *                                                                                                         
             -                 
   8          * Created:      2004.11.2                                                                                 
             -     
   9          * Last Change:    2005.7.11                                                                               
             -  
  10          *                                                                                                         
             -                 
  11          * Author:       Yuan K                                                                                    
             -     
  12          *                                                                                                                           
  13          * Company:              MYSON                                                                                       
  14          *                                                                                                         
             -                
  15          * Compiler:     KEIL C51 V7.04                                                                            
             -  
  16          *                                                                                                         
             -                
  17          * Description:                                                                                                                 
  18          *                                                                                                                              
  19          * MTV230(@12MHz)                                                                                    
  20          *
  21          *Copyright (c) Century Integration Technology, Inc.
  22          *All rights reserved.
  23          *
  24          ***********************************************************************/
  25          
  26          #include "Globe.h"
  27          
  28          
  29          
  30          
  31          
  32          
  33          
  34          bit EEPROM_Error ;
  35          BYTE idata EEPROMDelay;
  36          
  37          void InitialIIC(void)
  38          {    
  39   1              
  40   1         IICBufPtr=IICBuf.ByteArray;
  41   1      }
  42          
  43          //=============================================================
C51 COMPILER V7.50   EEPROM                                                                07/11/2005 15:03:03 PAGE 2   

  44          void I2cStart(void)
  45          {
  46   1          byM230_IIC_CTR =0x00;
  47   1         ShortDelay(1);
  48   1         byM230_IIC_CTR=byM230_IIC_CTR|0x01;   //S rise
  49   1      }
  50          
  51          //=============================================================
  52          bit wait_IIC(void)
  53          {
  54   1         IICWait=IIC_WAIT_TIME;
  55   1         error=0;
  56   1         //check MBuf sent/received
  57   1         while( (byM230_IIC_INTFLG&0x01)==0)   // Wait for byM230_IIC_MBUFl                  
  58   1         {
  59   2            if(IICWait==0)
  60   2            {
  61   3               error=1;
  62   3               break;
  63   3            }
  64   2         }
  65   1         // check ack.
  66   1            if(byM230_IIC_STUS2&0x80)
  67   1              {
  68   2                      error=1;
  69   2              }
  70   1         
  71   1         byM230_IIC_INTFLG=byM230_IIC_INTFLG&0xfe;
  72   1         return(error); 
  73   1      }
  74          
  75          
  76          
  77          //=============================================================
  78          void I2cStop(void)
  79          {
  80   1         byM230_IIC_CTR=0x00;
  81   1         ShortDelay(1);
  82   1         byM230_IIC_CTR=byM230_IIC_CTR|0x02;   //P rise
  83   1      }  
  84          
  85          
  86          //=============================================================
  87          void IICRead(BYTE slave, BYTE address, BYTE count)
  88          {
  89   1         BYTE data i;
  90   1         InitialIIC();
  91   1         byM230_IIC_INTFLG=byM230_IIC_INTFLG&0xfe;
  92   1         //start
  93   1        byM230_IIC_CTR=0x00;   // S=0,P=0
  94   1         byM230_IIC_MBUF=slave;   // slave address (dummy write) 
  95   1         //I2cStart();
  96   1         ShortDelay(1);
  97   1        byM230_IIC_CTR=0x01;   // S=1,P=0
  98   1         error=wait_IIC(); 
  99   1         //dummy write
 100   1        // ShortDelay(1);
 101   1         byM230_IIC_MBUF=address;   //address
 102   1         error=wait_IIC(); 
 103   1         //restart
 104   1         byM230_IIC_CTR=byM230_IIC_CTR & 0xfe;   // S set 0
 105   1         byM230_IIC_MBUF=slave|0x01;   //restart + slave address (read)
C51 COMPILER V7.50   EEPROM                                                                07/11/2005 15:03:03 PAGE 3   

 106   1         ShortDelay(1);
 107   1         byM230_IIC_CTR=byM230_IIC_CTR | 0x01;   // S set 1
 108   1         error=wait_IIC(); 
 109   1         //dummy read
 110   1         ShortDelay(1);
 111   1         IICBuf.ByteArray[0]=byM230_IIC_MBUF;
 112   1         error=wait_IIC();
 113   1         i=0;
 114   1         while(count!=0)
 115   1         {                    
 116   2            if(count==1)
 117   2            {
 118   3               byM230_IIC_CTR=0x05;   //Ack=1 
 119   3            }
 120   2            ShortDelay(1);
 121   2           *IICBufPtr=byM230_IIC_MBUF;
 122   2           IICBufPtr++;
 123   2            error=wait_IIC();
 124   2            if(error==1)   break; 
 125   2            count--;
 126   2            i++;
 127   2         } 
 128   1         I2cStop();
 129   1      
 130   1      }
 131          
 132          
 133          
 134          //=============================================================
 135          void IICWrite(BYTE slave,BYTE address,BYTE count)
 136          {
 137   1         BYTE  data i;
 138   1         InitialIIC();
 139   1         byM230_IIC_INTFLG=byM230_IIC_INTFLG&0xfe;
 140   1         byM230_IIC_MBUF=slave;   // First byte of IIC data:slave address
 141   1         I2cStart();
 142   1         error=wait_IIC(); 
 143   1         byM230_IIC_MBUF=address;   // Send next byte:sub address
 144   1         error=wait_IIC(); 
 145   1      
 146   1         for(i=0; i<count; i++)
 147   1         {                                                             
 148   2            byM230_IIC_MBUF=*IICBufPtr;   // Send next byte
 149   2            IICBufPtr++;
 150   2           error=wait_IIC(); 
 151   2           if(error==1) break; 
 152   2         } 
 153   1      
 154   1         I2cStop();
 155   1         DelayX1ms(1);
 156   1      }
 157          
 158          
 159          BYTE EEPROM_Rd_Byte(BYTE address)
 160          {
 161   1              while(EEPROMDelay);
 162   1               IICRead(EEPROM_ADDRESS, address, 1);
 163   1               EEPROMDelay=EEPROM_WAIT;
 164   1              InitialIIC();
 165   1             return IICBuf.ByteArray[0];
 166   1      }
 167          
C51 COMPILER V7.50   EEPROM                                                                07/11/2005 15:03:03 PAGE 4   

 168          void EEPROM_Wr_Byte(BYTE address, BYTE datasheet)
 169          {      
 170   1              IICBuf.ByteArray[0]=datasheet;
 171   1               while(EEPROMDelay);                    
 172   1              IICWrite(EEPROM_ADDRESS, address, 1);   
 173   1                EEPROMDelay=EEPROM_WAIT;              
 174   1      }
 175          


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