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

📄 24c02.lst

📁 52单片机开发板的实例程序
💻 LST
字号:
C51 COMPILER V7.20   24C02                                                                 09/18/2011 12:06:24 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE 24C02
OBJECT MODULE PLACED IN 24c02.OBJ
COMPILER INVOKED BY: C:\keil\C51\BIN\C51.EXE 24c02.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #define uint unsigned int
   3          #define uchar unsigned char 
   4          sbit a=P1^0;
   5          sbit b=P1^1;
   6          sbit c=P1^2;
   7          sbit clk=P3^6;
   8          sbit sda=P3^7;
   9          const uchar table[]={
  10                    0x3f,0x06,0x5b,0x4f,0x66,
  11                    0x6d,0x7d,0x07,0x7f,0x6f};
  12          void delay_24C02()
  13          { ; ; ; ; }
  14          void delay(uint k)
  15          {
  16   1        uint i;
  17   1        for(;k>0;k--)
  18   1        for(i=110;i>0;i--);
  19   1      }
  20          void HC138(uchar i)
  21          {
  22   1        a=i&0x01;
  23   1        b=i&0x02;
  24   1        c=i&0x04;
  25   1      }
  26          /**************************************
  27          数码管显示函数,带参数
  28          要实现显示时,调用函数带一个实参即可
  29          ******************************/
  30          void display(uchar num)
  31          {
  32   1         uchar ge,shi,bai;
  33   1         bai=num/100;
  34   1         shi=num%100/10;
  35   1         ge=num%10;
  36   1         HC138(0);
  37   1         P2=table[ge];
  38   1         delay(2);
  39   1         HC138(1);
  40   1         P2=table[shi];
  41   1         delay(2);
  42   1         HC138(2);
  43   1         P2=table[bai];
  44   1         delay(2);
  45   1         
  46   1      }
  47          void init_24C02()//24C02初始化
  48          {
  49   1              sda=1;
  50   1              delay_24C02();
  51   1              clk=1;
  52   1              delay_24C02();
  53   1      }
  54          void start()//24C02启动信号
  55          {
C51 COMPILER V7.20   24C02                                                                 09/18/2011 12:06:24 PAGE 2   

  56   1              sda=1;delay_24C02();
  57   1              clk=1;delay_24C02();
  58   1              sda=0;delay_24C02();
  59   1      }
  60          void stop()//24C02终止信号
  61          {
  62   1              sda=0;delay_24C02();
  63   1              clk=1;delay_24C02();
  64   1              sda=1;delay_24C02();
  65   1      }
  66          void respons()//应答信号
  67          {
  68   1              uchar i=0;
  69   1              clk=1;delay_24C02();
  70   1              while((sda==1)&&(i<255)) i++;
  71   1              clk=0;
  72   1              delay_24C02();
  73   1      }
  74          void No_ack()
  75          {
  76   1              sda=1;
  77   1              clk=1;
  78   1              delay_24C02();
  79   1              clk=0;
  80   1              delay_24C02();
  81   1      }
  82          void write_byte(uchar date)//写一个字节,共8位
  83          {
  84   1              uchar i,temp;
  85   1              temp=date;
  86   1              for(i=0;i<8;i++)
  87   1                      {
  88   2                              clk=0;
  89   2                              delay_24C02();
  90   2                              if(temp&0x80)
  91   2                                      sda=1;
  92   2                              else
  93   2                                      sda=0;
  94   2                              clk=1;
  95   2                              delay_24C02();
  96   2                              temp<<=1;
  97   2                      }
  98   1                      clk=0;delay_24C02();
  99   1                      sda=1;delay_24C02();
 100   1      }
 101          uchar read_byte()//读一个字节
 102          {
 103   1              uchar i,k;
 104   1              for(i=0;i<8;i++)
 105   1              {
 106   2                      clk=1;
 107   2                      delay_24C02();
 108   2                      k<<=1;  
 109   2                  if(sda)
 110   2                        k++;
 111   2                      clk=0;
 112   2                      delay_24C02();  
 113   2              }
 114   1              return k;
 115   1      }
 116          void write_add(uchar address,uchar date)//指定地址写一个数据
 117          {
C51 COMPILER V7.20   24C02                                                                 09/18/2011 12:06:24 PAGE 3   

 118   1              start();
 119   1              write_byte(0xa0);
 120   1              respons();
 121   1              write_byte(address);
 122   1              respons();
 123   1              write_byte(date);
 124   1              respons();
 125   1              stop();
 126   1      }
 127          uchar read_add(uchar address)//读出指定地址的数据
 128          {
 129   1              uchar date;
 130   1              start();
 131   1              write_byte(0xa0);
 132   1              respons();
 133   1              write_byte(address);
 134   1              respons();
 135   1              start();
 136   1              write_byte(0xa1);
 137   1              respons();
 138   1              date=read_byte();
 139   1              No_ack();
 140   1              stop();
 141   1              return date;
 142   1      }
 143          void main()
 144          {
 145   1         uchar temp,i,j;
 146   1         init_24C02();
 147   1      for(i=0;i<40;i++)//往AT24C02地址0到20分别写入0至20数据
 148   1          {
 149   2            write_add(i,i+20);
 150   2            delay(20);
 151   2          }
 152   1        
 153   1         delay(2000);
 154   1         while(1)
 155   1         { 
 156   2            for(i=0;i<40;i++)//分别从0至20地址读出数据进行显示
 157   2           {
 158   3             temp=read_add(i);
 159   3             for(j=0;j<50;j++)//相当于延时,因为数码管要实现动态扫描
 160   3             display(temp);
 161   3           }
 162   2         }
 163   1      }


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