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

📄 eeprom.lst

📁 金星车载TV PAL制频头UV7305BDI控制源代码
💻 LST
字号:
C51 COMPILER V7.20   EEPROM                                                                11/18/2004 17:33:52 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN D:\TEST\TV\EEPROM.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\TEST\TV\EEPROM.C DB SB OE

line level    source

   1          //#pragma  ot(6,SIZE)
   2          #include <REG52.H>
   3          #include <intrins.h>
   4          #include <constant.h>
   5          
   6          /*****************以下是对IIC总线的操作子程序***/
   7          /*****************启动总线**********************/
   8          void IICStart(void)
   9          {
  10   1      SCL=0;                  //
  11   1      SDA=1;
  12   1      SCL=1;
  13   1      _nop_();
  14   1      _nop_();
  15   1      SDA=0;
  16   1      _nop_();
  17   1      _nop_();
  18   1      SCL=0;
  19   1      SDA=1;                  //
  20   1      }
  21          
  22          /*****************停止IIC总线****************/
  23          void IICStop(void)
  24          {
  25   1      SCL=0;
  26   1      SDA=0;
  27   1      SCL=1;
  28   1      _nop_();
  29   1      _nop_();
  30   1      SDA=1;
  31   1      _nop_();
  32   1      _nop_();
  33   1      }
  34          
  35          /**************检查应答位*******************/
  36          bit IICRecAck(void)
  37          {
  38   1      SCL=0;
  39   1      SDA=1;
  40   1      SCL=1;
  41   1      _nop_();
  42   1      _nop_();
  43   1      CY=SDA;                 //因为返回值总是放在CY中的
  44   1      SCL=0;
  45   1      return(CY);
  46   1      }
  47          
  48          /***************对IIC总线产生应答*******************/
  49          void IICACK(void)
  50          {
  51   1      SDA=0;
  52   1      SCL=1;
  53   1      _nop_();
  54   1      _nop_();
  55   1      SCL=0;
C51 COMPILER V7.20   EEPROM                                                                11/18/2004 17:33:52 PAGE 2   

  56   1      _nop_();
  57   1      _nop_();
  58   1      SDA=1;
  59   1      }
  60          
  61          /*****************不对IIC总线产生应答***************/
  62          void IICNoAck(void)
  63          {
  64   1      SDA=1;
  65   1      SCL=1;
  66   1      _nop_();
  67   1      _nop_();
  68   1      SCL=0;
  69   1      }
  70          
  71          /*******************向IIC总线写数据*********************/
  72          void IICSendByte(unsigned char sendbyte)
  73          {
  74   1      unsigned char data j=8;
  75   1      for(;j>0;j--)
  76   1         {
  77   2         SCL=0;
  78   2         sendbyte<<=1;        //无论C51怎样实现这个操作,始终会使CY=sendbyte^7;
  79   2         SDA=CY;
  80   2         SCL=1;
  81   2         }
  82   1      SCL=0;
  83   1      }
  84          
  85          /**********************从IIC总线上读数据子程序**********/
  86          unsigned char IICReceiveByte(void)
  87          {
  88   1      register receivebyte,i=8;
  89   1      SCL=0;
  90   1      while(i--)
  91   1         {
  92   2         SCL=1;
  93   2         receivebyte=(receivebyte<<1)|SDA;
  94   2         SCL=0;
  95   2         }
  96   1      return(receivebyte);
  97   1      }
  98          
  99          /***************一个简单延时程序************************/
 100          void Delay(unsigned char DelayCount)
 101          {
 102   1      while(DelayCount--);
 103   1      }
 104          
 105          
 106          //----------------------EEPROM AT24C02 Operation----------------
 107          //#define       EEPROM_WRITE    0xA0
 108          //#define       EEPROM_READ     0xA1
 109          
 110          //raddr: 24C02 read first address
 111          //rdata: data buffer
 112          //num:   valid data num
 113          bit ReadEEPROM(unsigned char raddr,unsigned char *rdata,unsigned char num)
 114          {
 115   1              unsigned char i;
 116   1              bit errorflag=1;
 117   1              i=ERRORCOUNT;
C51 COMPILER V7.20   EEPROM                                                                11/18/2004 17:33:52 PAGE 3   

 118   1              while(i--)
 119   1              {
 120   2                      IICStart();
 121   2                      IICSendByte(EEPROM_WRITE);
 122   2                      if(IICRecAck())
 123   2                              continue;
 124   2                      IICSendByte(raddr);
 125   2                      if(IICRecAck())
 126   2                              continue;
 127   2                      IICStart();
 128   2                      IICSendByte(EEPROM_READ);
 129   2                      if(IICRecAck())
 130   2                              continue;
 131   2                      while(--num)
 132   2                      {
 133   3                              *rdata++=IICReceiveByte();
 134   3                              IICACK();
 135   3                      }
 136   2                      *rdata=IICReceiveByte();        //read last byte data
 137   2                      IICNoAck();
 138   2                      IICStop();
 139   2                      errorflag=0;
 140   2                      break;
 141   2              }
 142   1              return(errorflag);
 143   1      }
 144          
 145          
 146          //waddr: 24C02 write first address
 147          //wdata: data buffer
 148          //num:   valid data num
 149          //if success return 0,else return 1;
 150          bit WriteEEPROM(unsigned char waddr,unsigned char *wdata,unsigned char num)
 151          {
 152   1              unsigned char i;
 153   1              bit errorflag=0;
 154   1              i=ERRORCOUNT;
 155   1              while(i--)
 156   1              {
 157   2                      IICStart();
 158   2                      IICSendByte(EEPROM_WRITE);
 159   2                      if(IICRecAck())
 160   2                              continue;
 161   2                      IICSendByte(waddr);
 162   2                      if(IICRecAck())
 163   2                              continue;
 164   2                      while(num--)
 165   2                      {
 166   3                              IICSendByte(*wdata++);
 167   3                              if(!IICRecAck())
 168   3                                      continue;
 169   3                              errorflag=1;
 170   3                              break;
 171   3                      }
 172   2                      if(!errorflag)
 173   2                              break;
 174   2              }
 175   1              IICStop();
 176   1              Delay(255);
 177   1              Delay(255);
 178   1              Delay(255);
 179   1              Delay(255);
C51 COMPILER V7.20   EEPROM                                                                11/18/2004 17:33:52 PAGE 4   

 180   1              if(i==0)
 181   1                      errorflag=1;
 182   1              return(errorflag);
 183   1      }
 184          
 185          //----------------------END EEPROM AT24C02 Operation----------------
 186          
 187          
C51 COMPILER V7.20   EEPROM                                                                11/18/2004 17:33:52 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


IICStop. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
IICRecAck. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0008H  -----
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
CY . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D7H  1
IICNoAck . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
IICACK . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_ReadEEPROM. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  raddr. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  rdata. . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0001H  3
  num. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0004H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
  errorflag. . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
IICReceiveByte . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  receivebyte. . . . . . . . . . . . .  * REG *  DATA   INT      0004H  2
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   INT      0000H  2
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
_WriteEEPROM . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  waddr. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  wdata. . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0001H  3
  num. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0004H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
  errorflag. . . . . . . . . . . . . .  AUTO     DATA   BIT      0000H  1
_Delay . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0007H  -----
  DelayCount . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
SDA. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0080H  1
_IICSendByte . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  sendbyte . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
SCL. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0081H  1
IICStart . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    341    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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