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

📄 24c02.lst

📁 24C16读写程序,初写程序,请多多指教
💻 LST
字号:
C51 COMPILER V8.02   24C02                                                                 03/06/2007 20:21:12 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 24C02
OBJECT MODULE PLACED IN 24C02.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 24C02.C DEBUG OBJECTEXTEND

line level    source

   1          
   2          //AT24C16读写
   3          #include <reg51.h>
   4          #include <intrins.h>
   5          
   6          #define uchar unsigned char
   7          #define uint unsigned int
   8          
   9          #define READ    0xa1            // 器件地址以及读取操作
  10          #define WRITE 0xa0              // 器件地址以及写入操作
  11          
  12          uchar code dis_code[] = {0x70,0xb0,0xd1,0xe0,0xd1,0xb0,0x71,0xf2};       // 写入到AT24C01的数据串
  13          uchar code display[8];                          
  14          
  15          bit ack;        //应答标志
  16          
  17          sbit SDA = P3^0;
  18          sbit SCL = P3^1;
  19          
  20          void start();
  21          void stop();
  22          bit WriteByte(uchar write_data);
  23          uchar ReadByte(uchar random_addr);
  24          void delayms(uchar ms);
  25          void WriteStr(uchar sla,uchar StartAddr,uchar *Str,uchar num);
  26          
  27          
  28          main(void)
  29          {
  30   1              uchar i;
  31   1              delayms(250);
  32   1              
  33   1              WriteStr(0xa0,0x00,dis_code,8);
  34   1              for(i=0;i<8;i++)
  35   1              {
  36   2                      P1 = ReadByte(i);       // 循环读取24Cxx内容,并输出到P0口
  37   2                      delayms(250);
  38   2                      delayms(250); 
  39   2              } 
  40   1      
  41   1              while(1);
  42   1      }
  43          
  44                     
  45          // 开始位
  46          void start()
  47          {
  48   1              SDA = 1;
  49   1              SCL = 1;
  50   1              _nop_();
  51   1              _nop_();
  52   1              SDA = 0;
  53   1              _nop_();
  54   1              _nop_();
  55   1              _nop_();
C51 COMPILER V8.02   24C02                                                                 03/06/2007 20:21:12 PAGE 2   

  56   1              _nop_();
  57   1              SCL = 0;
  58   1      }
  59          
  60          
  61          // 停止位
  62          void stop()
  63          {
  64   1              SDA = 0;
  65   1              _nop_();
  66   1              _nop_();
  67   1              SCL = 1;
  68   1              _nop_();
  69   1              _nop_();
  70   1              _nop_();
  71   1              _nop_();
  72   1              SDA = 1;
  73   1      }
  74          
  75          
  76          // 从MCU移出数据到AT24Cxx
  77          bit WriteByte(uchar write_data)
  78          {
  79   1              uchar i;
  80   1              bit ack_bit;
  81   1              for(i = 0; i < 8; i++)          // 循环移入8个位
  82   1              {
  83   2                      SDA = (bit)(write_data & 0x80);
  84   2                      _nop_();
  85   2                      SCL = 1;
  86   2                      _nop_();
  87   2                      _nop_();
  88   2                      SCL = 0;
  89   2                      write_data <<= 1;
  90   2              }
  91   1              SDA = 1;                        // 读取应答
  92   1              _nop_();
  93   1              _nop_();
  94   1              SCL = 1;
  95   1              _nop_();
  96   1              _nop_();
  97   1              _nop_();
  98   1              _nop_();
  99   1              ack_bit = SDA;
 100   1              SCL = 0;
 101   1              return ack_bit;                 // 返回AT24Cxx应答位
 102   1      }
 103          
 104          // 在指定地址读取
 105          uchar ReadByte(uchar random_addr)
 106          {       
 107   1              uchar i,read_data;
 108   1              start();
 109   1              WriteByte(WRITE);
 110   1              WriteByte(random_addr);         
 111   1              start();
 112   1              WriteByte(READ);
 113   1              for(i = 0; i < 8; i++)
 114   1              {
 115   2                      SCL = 1;
 116   2                      read_data <<= 1;
 117   2                      read_data |= (uchar)SDA;
C51 COMPILER V8.02   24C02                                                                 03/06/2007 20:21:12 PAGE 3   

 118   2                      SCL = 0;
 119   2              }
 120   1              stop();
 121   1              return read_data;
 122   1      } 
 123          
 124          // 在指定地址addr开始写入数据write_data
 125          void WriteStr(uchar sla,uchar StartAddr, uchar *Str,uchar num)
 126          {
 127   1              uchar i;
 128   1              start();
 129   1              WriteByte(sla); 
 130   1              WriteByte(StartAddr);
 131   1      
 132   1              for(i=0;i<num;i++)
 133   1              {
 134   2                      
 135   2                      WriteByte(*Str);
 136   2                      Str++;
 137   2              }
 138   1              stop();
 139   1              delayms(10);            // 写入周期
 140   1      }
 141                   
 142          // 延时子程序
 143          void delayms(uchar ms)  
 144          {
 145   1              uchar i;
 146   1              while(ms--)
 147   1              {
 148   2                      for(i = 0; i < 120; i++);
 149   2              }
 150   1      }


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