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

📄 24c02-shumaguan-play.lst

📁 基于51的DS18B20_1Wire温度控制等C,ASM源程序
💻 LST
字号:
C51 COMPILER V7.08   24C02_SHUMAGUAN_PLAY                                                  12/20/2006 21:42:45 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE 24C02_SHUMAGUAN_PLAY
OBJECT MODULE PLACED IN 24c02-shumaguan-play.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24c02-shumaguan-play.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************/
   2          /*                                                                 */
   3          /* ME500单片机开发系统演示程序 - 24C04读写                         */
   4          /*                                                                 */
   5          /* 8位数码管显示                                                   */
   6          /*                                                                 */
   7          /* 将0-7显示数据先写入24C04芯片,再将其数据逐个读出送数码管显示。  */
   8          /*                                                                 */
   9          /* 版本: V1.0 (2006/11/20)                                        */
  10          /* 作者: gguoqing (Email: gguoqing@willar.com)                    */
  11          /* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) */
  12          /* 时间: 2006/11/20                                               */
  13          /*                                                                 */
  14          /*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved */
  15          /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       */
  16          /*                                                                 */
  17          /*******************************************************************/
  18          
  19          #include <reg51.h>
  20          #include <intrins.h>
  21          
  22          #define uchar unsigned char
  23          #define uint unsigned int
  24          
  25          #define OP_READ  0xa1          // 器件地址以及读取操作
  26          #define OP_WRITE 0xa0          // 器件地址以及写入操作
  27          
  28          uchar code discode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  29          
  30          uchar data display[]={0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0};
  31          
  32          sbit SDA = P3^5;    //ME500
  33          sbit SCL = P3^4;
  34          
  35          
  36          unsigned char shift ;
  37          unsigned char count=0 ;
  38          
  39          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
  40          
  41          /**********************************************************
  42           延时子程序
  43          **********************************************************/
  44          void delayms(uint ms) 
  45          
  46          {
  47   1       uchar k;
  48   1       while(ms--)
  49   1       {
  50   2        for(k = 0; k < 120; k++);
  51   2       }
  52   1      }
  53          
  54          /**********************************************************
  55           开始位
C51 COMPILER V7.08   24C02_SHUMAGUAN_PLAY                                                  12/20/2006 21:42:45 PAGE 2   

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

 118   1       SCL = 0;
 119   1       return ack_bit; // 返回AT24C02应答位
 120   1      }
 121          
 122          /**********************************************************
 123           在指定地址addr处写入数据write_data
 124          **********************************************************/
 125          void write_byte(uchar addr, uchar write_data)
 126          {
 127   1        start();
 128   1        shout(OP_WRITE);
 129   1        shout(addr);
 130   1        shout(write_data);
 131   1        stop();
 132   1        delayms(10);  // 写入周期
 133   1      }
 134          
 135          /**********************************************************
 136           在当前地址读取
 137          **********************************************************/
 138          uchar read_current()
 139          {
 140   1        uchar read_data;
 141   1        start();
 142   1        shout(OP_READ);
 143   1        read_data = shin();
 144   1        stop();
 145   1        return read_data;
 146   1      }
 147          
 148          /**********************************************************
 149           在指定地址读取
 150          **********************************************************/
 151          uchar read_random(uchar random_addr)
 152          
 153          {
 154   1         start();
 155   1         shout(OP_WRITE);
 156   1         shout(random_addr);
 157   1         return(read_current());
 158   1      }
 159          
 160          /**********************************************************
 161          
 162          **********************************************************/
 163          main(void)
 164          {
 165   1         uchar k;
 166   1      
 167   1         SDA = 1;
 168   1         SCL = 1;
 169   1        
 170   1         for(k=0; k<8; k++)     //写入显示代码到AT24C02
 171   1         write_byte(k, discode[k]);
 172   1         
 173   1         delayms(100);
 174   1      
 175   1         for(k=0; k<8; k++)      
 176   1         display[k]=read_random(k);  //从AT24C02读出显示代码
 177   1      
 178   1         while(1)
 179   1         {
C51 COMPILER V7.08   24C02_SHUMAGUAN_PLAY                                                  12/20/2006 21:42:45 PAGE 4   

 180   2           shift=0xfe;
 181   2           P2=0xff ;
 182   2           for(k=0; k<8; k++)
 183   2           {  
 184   3             P0=display[k];
 185   3             P2=shift;
 186   3             shift=_crol_(shift,1);
 187   3                 delayms(1);
 188   3           }
 189   2               
 190   2         }
 191   1      }
 192          
 193          /**********************************************************/


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