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

📄 24c02读写.lst

📁 基于51单片机控制的掉电数据存储器
💻 LST
字号:
C51 COMPILER V7.08   24C02读写                                                             08/19/2000 21:33:07 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE 24C02读写
OBJECT MODULE PLACED IN 24c02读写.OBJ
COMPILER INVOKED BY: D:\单片机~1\C51\Bin\c51.exe 24c02读写.c DB OE SMALL ROM(LARGE)

line level    source

*** WARNING C500 IN LINE 1 OF 24C02读写.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
   1          //用24c02完成一个实际应用的场合,在24c02中记录按键次数并用二机
   2          //制显示在4个LED上。下次开机时,将继续显示上次的按键次数。这些工
   3          //作在工控领域有十分广泛的应用。
   4          #include <reg52.h> //包括一个52标准内核的头文件
   5          #define uchar unsigned char //定义一下方便使用
   6          #define uint unsigned int
   7          #define ulong unsigned long
   8          
   9          #define WriteDeviceAddress 0xa0 //定义器件在IIC总线中的地址
  10          #define ReadDviceAddress 0xa1
  11          
  12          sbit SCL=P2^7;
  13          sbit SDA=P2^6;
  14          sbit P10=P1^0;
  15          sbit K1=P3^2;
  16          //-----------------------------定时函数
  17          void DelayMs(unsigned int number)
  18          {
  19   1        unsigned char temp;
  20   1        for(;number!=0;number--)
  21   1          {
  22   2           for(temp=112;temp!=0;temp--);
  23   2          }
  24   1      }
  25          //----------------------------开始总线
  26          void Start()
  27          {
  28   1         SDA=1;
  29   1         SCL=1;
  30   1         SDA=0;
  31   1         SCL=0;
  32   1      }
  33          //---------------------------结束总线
  34          void Stop()
  35          {
  36   1         SCL=0;
  37   1         SDA=0;
  38   1         SCL=1;
  39   1         SDA=1;
  40   1      }
  41          //----------------------------发ACK0
  42          void NoAck()
  43          {
  44   1         SDA=1;
  45   1         SCL=1;
  46   1         SCL=0;
  47   1      }
  48          //---------------------------测试ACK
  49          bit TestAck()
  50          {
  51   1         bit ErrorBit;
  52   1         SDA=1;
  53   1         SCL=1;
  54   1         ErrorBit=SDA;
C51 COMPILER V7.08   24C02读写                                                             08/19/2000 21:33:07 PAGE 2   

  55   1         SCL=0;
  56   1         return(ErrorBit);
  57   1      }
  58          //-------------------写入8个bit到24c02
  59          Write8Bit(unsigned char input)
  60          {
  61   1        unsigned char temp;
  62   1        for(temp=8;temp!=0;temp--)
  63   1           {
  64   2             SDA=(bit)(input&0x80);
  65   2             SCL=1;
  66   2             SCL=0;
  67   2             input=input<<1;
  68   2           }
  69   1      }
  70          //-----------------写入一个字节到24c02中
  71          void Write24c02(uchar ch,uchar address)
  72          {
  73   1         Start();
  74   1         Write8Bit(WriteDeviceAddress);
  75   1         TestAck();
  76   1         Write8Bit(address);
  77   1         TestAck();
  78   1         Write8Bit(ch);
  79   1         TestAck();
  80   1         Stop();
  81   1         DelayMs(10);
  82   1      }
  83          //--------------------从24c02中读出8个bit
  84          uchar Read8Bit()
  85          {
  86   1        unsigned char temp,rbyte=0;
  87   1        for(temp=8;temp!=0;temp--)
  88   1           {
  89   2            SCL=1;
  90   2            rbyte=rbyte<<1;
  91   2            rbyte=rbyte|((unsigned char)(SDA));
  92   2            SCL=0;
  93   2           }
  94   1        return(rbyte);
  95   1      }
  96          //--------------------从24c02中读出1个字节
  97          uchar Read24c02(uchar address)
  98          {
  99   1        uchar ch;
 100   1        Start();
 101   1        Write8Bit(WriteDeviceAddress);
 102   1        TestAck();
 103   1        Write8Bit(address);
 104   1        TestAck();
 105   1        Start();
 106   1        Write8Bit(ReadDviceAddress);
 107   1        TestAck();
 108   1        ch=Read8Bit();
 109   1        NoAck();
 110   1        Stop();
 111   1        return(ch);
 112   1      }
 113          //----------------写入按键次数到24c02,并读出来显示在4个LED上
 114          void main(void) // 主程序
 115          {
 116   1        uchar c1,c2;
C51 COMPILER V7.08   24C02读写                                                             08/19/2000 21:33:07 PAGE 3   

 117   1        while(1)
 118   1             {
 119   2              c1=Read24c02(0x01); //读出24c02第一个地址数据
 120   2              P1=c1; //显示在P1口的4个LED上
 121   2              if(!K1) //按键处理
 122   2                {
 123   3                  c1++; //值加1
 124   3                  Write24c02(c1,0x01); //重新写入24c02
 125   3                  while(!K1); //等待按键松开
 126   3                  for(c2=0;c2<250;c2++); //松开按键去抖
 127   3                }
 128   2             }
 129   1      }
 130          


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


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

⌨️ 快捷键说明

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