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

📄 eeprom.lst

📁 应用KEILC写的一个C51程序
💻 LST
字号:
C51 COMPILER V8.02   EEPROM                                                                04/16/2008 22:07:30 PAGE 1   


C51 COMPILER V8.02, 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          #include "eeprom.h"
   2          void start_24c16(void)
   3          {   
   4   1         SDA=1;_nop_();
   5   1         SCL=1;
   6   1         _nop_(); _nop_();_nop_();_nop_();
   7   1         SDA=0;
   8   1         _nop_(); _nop_();_nop_();_nop_();  
   9   1         SCL=0;   
  10   1         _nop_();_nop_();
  11   1      }
  12          
  13          void stop_24c16(void)
  14          {   
  15   1         SDA=0;
  16   1         _nop_();_nop_();_nop_();_nop_();
  17   1         SCL=1;   
  18   1         _nop_();_nop_();_nop_();_nop_();
  19   1         SDA=1;   
  20   1         _nop_();_nop_();_nop_();_nop_();   
  21   1      }
  22          /*-----------------------------------------------
  23          调用方式:void ack(void)
  24          函数说明:应答函数  ack低电平脉冲
  25          -----------------------------------------------*/
  26          void ack(void)
  27          {
  28   1         SCL=0;_nop_();
  29   1         SDA=0;_nop_();
  30   1         SCL=1;_nop_();_nop_();_nop_();_nop_();
  31   1         SCL=0;_nop_();
  32   1         SDA=1;_nop_();
  33   1      }
  34          
  35          
  36          /*-----------------------------------------------
  37          调用方式:void no_ack(void)
  38          函数说明:无需应答位,在读程序中用到
  39          -----------------------------------------------*/
  40          void no_ack(void)
  41          {
  42   1         SDA=1;_nop_();
  43   1         SCL=1;_nop_();_nop_();_nop_();_nop_();   
  44   1         SCL=0;_nop_();
  45   1         SDA=0;_nop_();
  46   1      }
  47          /*-----------------------------------------------
  48          调用方式:write_8bit(uchar ch)
  49          函数说明:写一个字节(8位)数据
  50          -----------------------------------------------*/
  51          void write_8bit(uchar ch)
  52          {
  53   1         uchar i=8;
  54   1         SCL=0;_nop_();
  55   1         while(i--)
C51 COMPILER V8.02   EEPROM                                                                04/16/2008 22:07:30 PAGE 2   

  56   1         {
  57   2            SDA=(bit)(ch&0x80);_nop_();
  58   2            ch<<=1;
  59   2            SCL=1;_nop_();_nop_();_nop_();_nop_();
  60   2            SCL=0;_nop_();_nop_();_nop_();_nop_();
  61   2         }
  62   1      }
  63          /*-----------------------------------------------
  64          调用方式:void write24c16(uint address,uchar ddata)
  65          函数说明:写数据到24c16的指定地址(字节写)
  66          -----------------------------------------------*/
  67          void write24c16(uint address,uchar ddata)
  68          {
  69   1         uchar ddd;
  70   1         EA=0;  //避免与串口通讯等中断冲突
  71   1         ddd=((address&0x7ff)/256)<<1;   //7ff=2048-1
  72   1         ddd=ddd & 0x0e;//求出在第几页写
  73   1         start_24c16();
  74   1         write_8bit(0xA0|ddd); //A=1010器件地址高4位
  75   1         ack();
  76   1         write_8bit(address);
  77   1         ack();
  78   1         write_8bit(ddata);
  79   1         ack();
  80   1         stop_24c16();
  81   1         EA=1;
  82   1      }
  83          /*----------------------------------------------
  84          调用方式:uchar read24c16(uint address)
  85          函数说明:读24c16指定地址数据(字节读)
  86          -----------------------------------------------*/
  87          uchar read24c16(uint address)
  88          {
  89   1         uchar data rdata;
  90   1         uchar i=8;
  91   1         uchar ddd;
  92   1         EA=0;  //避免与串口通讯等中断冲突
  93   1         ddd=((address&0x7ff)/256)<<1;
  94   1         ddd=ddd & 0x0e; //求出在第几页写
  95   1         start_24c16();
  96   1         write_8bit(0xA0|ddd);
  97   1         ack();
  98   1         write_8bit(address);
  99   1         ack();//伪写 随机地址读前按定义伪写
 100   1         start_24c16();
 101   1         write_8bit(0xA1|ddd);//在指定的页读
 102   1         ack();
 103   1         while(i--)
 104   1         {
 105   2            rdata<<=1;
 106   2            SCL=0;_nop_(); SCL=1;
 107   2            if(SDA) rdata|=0x01;
 108   2         }
 109   1         no_ack();
 110   1         stop_24c16();
 111   1         EA=1;
 112   1         return rdata;
 113   1      }
 114          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.02   EEPROM                                                                04/16/2008 22:07:30 PAGE 3   

   CODE SIZE        =    239    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       2
   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 + -