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

📄 up51s007.lst

📁 UP51C开发板所有源代码
💻 LST
字号:
C51 COMPILER V7.08   UP51S007                                                              12/13/2004 09:18:33 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE UP51S007
OBJECT MODULE PLACED IN up51S007.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE up51S007.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2          *                                                                              *
   3          *    File       : uP51s007.c                                                   *
   4          *    Date       : 2004-9-5                                                     *
   5          *    Version    : 1.0                                                          *
   6          *                                                                              *
   7          *    Author     : kevin           kevin@dz51.com                               *
   8          *    Company    : Http://www.dz51.com                                          *
   9          *                                                                              *
  10          ********************************************************************************
  11          *    Descriptoon:                                                              *
  12          *                读写AT24C01演示程序                                           *
  13          *                                                                              *
  14          *    将跳线跳到流水灯,可以看到随dis_code内代码而产生的花样变化                *
  15          *                                                                              *
  16          *******************************************************************************/
  17          #include <reg51.h>
  18          #include <intrins.h>
  19          
  20          #define OP_READ 0xa1            // 器件地址以及读取操作
  21          #define OP_WRITE 0xa0           // 器件地址以及写入操作
  22          #define MAX_ADDR 0x7f           // AT24C01最大地址
  23          
  24          unsigned char code dis_code[] = {0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e,0xff};
  25                                          // 写入到AT24C01的数据串
  26                          //
  27          
  28          sbit SDA = P1^1;
  29          sbit SCL = P1^0;
  30          
  31          
  32          void start();
  33          void stop();
  34          unsigned char shin();
  35          bit shout(unsigned char write_data);
  36          unsigned char read_random(unsigned char random_addr);
  37          void write_byte( unsigned char addr, unsigned char write_data);
  38          void fill_byte(unsigned char fill_data);
  39          void delayms(unsigned char ms);
  40          
  41          main(void)
  42          {
  43   1              unsigned char i;
  44   1              SDA = 1;
  45   1              SCL = 1;
  46   1              fill_byte(0xff);                // 全部填充0xff
  47   1      
  48   1              for(i = 0 ; i < 8; i++)         //写入显示代码到AT24Cxx
  49   1              {
  50   2                      write_byte(i, dis_code[i]);
  51   2              }
  52   1      
  53   1              i = 0;
  54   1              while(1)
  55   1              {
C51 COMPILER V7.08   UP51S007                                                              12/13/2004 09:18:33 PAGE 2   

  56   2      
  57   2                      P0 = read_random(i);    // 循环读取24Cxx内容,并输出到P0口
  58   2                      i++;
  59   2                      i &= 0x07;              // 循环读取范围为0x00~0x07
  60   2                      delayms(250);
  61   2              }
  62   1      }
  63          
  64          void start()
  65          // 开始位
  66          {
  67   1              SDA = 1;
  68   1              SCL = 1;
  69   1              _nop_();
  70   1              _nop_();
  71   1              SDA = 0;
  72   1              _nop_();
  73   1              _nop_();
  74   1              _nop_();
  75   1              _nop_();
  76   1              SCL = 0;
  77   1      }
  78          
  79          void stop()
  80          // 停止位
  81          {
  82   1              SDA = 0;
  83   1              _nop_();
  84   1              _nop_();
  85   1              SCL = 1;
  86   1              _nop_();
  87   1              _nop_();
  88   1              _nop_();
  89   1              _nop_();
  90   1              SDA = 1;
  91   1      }
  92          
  93          unsigned char shin()
  94          // 从AT24Cxx移入数据到MCU
  95          {
  96   1              unsigned char i,read_data;
  97   1              for(i = 0; i < 8; i++)
  98   1              {
  99   2                      SCL = 1;
 100   2                      read_data <<= 1;
 101   2                      read_data |= (unsigned char)SDA;
 102   2                      SCL = 0;
 103   2              }
 104   1              return(read_data);
 105   1      }
 106          bit shout(unsigned char write_data)
 107          // 从MCU移出数据到AT24Cxx
 108          {
 109   1              unsigned char i;
 110   1              bit ack_bit;
 111   1              for(i = 0; i < 8; i++)          // 循环移入8个位
 112   1              {
 113   2                      SDA = (bit)(write_data & 0x80);
 114   2                      _nop_();
 115   2                      SCL = 1;
 116   2                      _nop_();
 117   2                      _nop_();
C51 COMPILER V7.08   UP51S007                                                              12/13/2004 09:18:33 PAGE 3   

 118   2                      SCL = 0;
 119   2                      write_data <<= 1;
 120   2              }
 121   1              SDA = 1;                        // 读取应答
 122   1              _nop_();
 123   1              _nop_();
 124   1              SCL = 1;
 125   1              _nop_();
 126   1              _nop_();
 127   1              _nop_();
 128   1              _nop_();
 129   1              ack_bit = SDA;
 130   1              SCL = 0;
 131   1              return ack_bit;                 // 返回AT24Cxx应答位
 132   1      }
 133          
 134          void write_byte(unsigned char addr, unsigned char write_data)
 135          // 在指定地址addr处写入数据write_data
 136          {
 137   1              start();
 138   1              shout(OP_WRITE);
 139   1              shout(addr);
 140   1              shout(write_data);
 141   1              stop();
 142   1              delayms(10);            // 写入周期
 143   1      }
 144          
 145          void fill_byte(unsigned char fill_data)
 146          // 填充数据fill_data到EEPROM内
 147          {
 148   1              unsigned char i;
 149   1              for(i = 0; i < MAX_ADDR; i++)
 150   1              {
 151   2                      write_byte(i, fill_data);
 152   2              }
 153   1      
 154   1      }
 155          
 156          unsigned char read_current()
 157          // 在当前地址读取
 158          {
 159   1              unsigned char read_data;
 160   1              start();
 161   1              shout(OP_READ);
 162   1              read_data = shin();
 163   1              stop();
 164   1              return read_data;
 165   1      }
 166          
 167          unsigned char read_random(unsigned char random_addr)
 168          // 在指定地址读取
 169          {
 170   1              start();
 171   1              shout(OP_WRITE);
 172   1              shout(random_addr);
 173   1              return(read_current());
 174   1      }
 175          
 176          void delayms(unsigned char ms)  
 177          // 延时子程序
 178          {
 179   1              unsigned char i;
C51 COMPILER V7.08   UP51S007                                                              12/13/2004 09:18:33 PAGE 4   

 180   1              while(ms--)
 181   1              {
 182   2                      for(i = 0; i < 120; i++);
 183   2              }
 184   1      }


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