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

📄 at24c256.lst

📁 包括ARM开发环境的使用和一些调试用的源程序
💻 LST
字号:
C51 COMPILER V7.06   AT24C256                                                              06/14/2003 10:03:08 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE AT24C256
OBJECT MODULE PLACED IN AT24C256.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AT24C256.c BROWSE DEBUG OBJECTEXTEND TABS(3)

stmt level    source

   1          #include "reg52.h"
   2          #include<intrins.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          
   6          sbit WP= P3^5;
   7          sbit SDA=P3^7;
   8          sbit SCL=P3^6;
   9          
  10          bit ACK;
  11          void STOP_I2C();
  12          void START_I2C();
  13          void SENDBYTE(uchar c);
  14          uchar RCVBYTE();
  15          void ACK_I2C(bit A);
  16          /*+++++++++++++++++++++++++
  17          写数据到256中(SUB);
  18          +++++++++++++++++++++++++*/
  19          bit WRITE_256_SUB(uchar ADDR_CS,uchar ADDR_HI,uchar ADDR_LO,unsigned char *SP,unsigned int NO)
  20          {
  21   1         uchar idata I;
  22   1              WP=0;
  23   1         START_I2C();
  24   1         SENDBYTE(ADDR_CS);
  25   1         if(ACK==0){WP=1;return(0);}
  26   1         SENDBYTE(ADDR_HI);
  27   1         if(ACK==0){WP=1;return(0);}
  28   1         SENDBYTE(ADDR_LO);
  29   1         if(ACK==0){WP=1;return(0);}
  30   1         for(I=0;I<NO;I++)
  31   1            {
  32   2               SENDBYTE(*SP);
  33   2               if(ACK==0){WP=1;return(0);}
  34   2               SP++;
  35   2            }
  36   1         STOP_I2C();
  37   1              WP=1;
  38   1         return(1);
  39   1      }
  40          /*++++++++++++++++++++++++++
  41          从256中读数据(SUB);
  42          ++++++++++++++++++++++++++*/
  43          bit READ_256_SUB(uchar ADDR_CS,uchar ADDR_HI,uchar ADDR_LO,unsigned char *SP,unsigned int NO)
  44          {
  45   1         uchar idata I;
  46   1              START_I2C();
  47   1         SENDBYTE(ADDR_CS);
  48   1         if(ACK==0){return(0);}
  49   1         SENDBYTE(ADDR_HI);
  50   1         if(ACK==0){return(0);}
  51   1         SENDBYTE(ADDR_LO);
  52   1         if(ACK==0){return(0);}
  53   1         START_I2C();
  54   1         SENDBYTE(ADDR_CS+1);
  55   1         if(ACK==0){return(0);}
C51 COMPILER V7.06   AT24C256                                                              06/14/2003 10:03:08 PAGE 2   

  56   1         for(I=0;I<(NO-1);I++)
  57   1            {
  58   2               *SP=RCVBYTE();
  59   2               ACK_I2C(0);
  60   2               SP++;
  61   2            }
  62   1         *SP=RCVBYTE();
  63   1         ACK_I2C(1);
  64   1         STOP_I2C();
  65   1         return(1);
  66   1      }
  67          /*++++++++++++++++
  68          空指令;
  69          +++++++++++++++++*/
  70          void _NOP(void)
  71          {
  72   1             _nop_();
  73   1      }
  74          /*++++++++++++++++
  75          发送开始信号;
  76          ++++++++++++++*/
  77          void START_I2C()
  78          {
  79   1         SDA=1;
  80   1         _NOP();
  81   1         SCL=1;
  82   1         _NOP();
  83   1         SDA=0;
  84   1         _NOP();
  85   1         SCL=0;
  86   1         _NOP();
  87   1      }
  88          /*+++++++++++++
  89          发送停止信号;
  90          ++++++++++++*/
  91          void STOP_I2C()
  92          {
  93   1         SDA=0;
  94   1         _NOP();
  95   1         SCL=1;
  96   1         _NOP();
  97   1         SDA=1;
  98   1         _NOP();
  99   1      }
 100          /*+++++++++++++
 101          发送字节;
 102          ++++++++++++++*/
 103          void SENDBYTE(uchar c)
 104          {
 105   1         uchar idata bitcnt;
 106   1         for(bitcnt=0;bitcnt<8;bitcnt++)
 107   1            {
 108   2               if((c<<bitcnt)&0x80)SDA=1;
 109   2                  else SDA=0;
 110   2               _NOP();
 111   2               SCL=1;
 112   2               _NOP();
 113   2               SCL=0;
 114   2            }
 115   1         _NOP();
 116   1         SDA=1;
 117   1         _NOP();
C51 COMPILER V7.06   AT24C256                                                              06/14/2003 10:03:08 PAGE 3   

 118   1         SCL=1;
 119   1         _NOP();
 120   1         if (SDA==1)ACK=0;
 121   1            else ACK=1;
 122   1         SCL=0;
 123   1         _NOP();
 124   1      }
 125          /*+++++++++++++++++
 126          接收字节;
 127          ++++++++++++*/
 128          uchar RCVBYTE()
 129          {
 130   1         uchar idata RETC;
 131   1         uchar idata bitcnt;
 132   1         RETC=0;
 133   1         SDA=1;
 134   1         for(bitcnt=0;bitcnt<8;bitcnt++)
 135   1            {
 136   2               _NOP();
 137   2               SCL=0;
 138   2               _NOP();
 139   2               SCL=1;
 140   2               _NOP();
 141   2               RETC=RETC<<1;
 142   2               if(SDA==1)RETC=RETC+1;
 143   2               _NOP();
 144   2            }
 145   1         SCL=0;
 146   1         _NOP();
 147   1         return(RETC);
 148   1      }
 149          /*+++++++++++++++++
 150          应答信号;
 151          ++++++++++++++*/
 152          void ACK_I2C(bit A)
 153          {
 154   1         if (A==0) SDA=0;
 155   1         else SDA=1;
 156   1         _NOP();
 157   1         SCL=1;
 158   1         _NOP();
 159   1         SCL=0;
 160   1         _NOP();
 161   1      }


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


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

⌨️ 快捷键说明

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