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

📄 i2c-24c04与蜂鸣器.lst

📁 51单片机I2C总线E2ROM驱动程序
💻 LST
字号:
C51 COMPILER V8.02   I2C_24C04与蜂胈芲                                                     06/11/2010 16:55:12 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE I2C_24C04与蜂胈芲
OBJECT MODULE PLACED IN I2C-24C04与蜂鸣器.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE I2C-24C04与蜂鸣器.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define NOP4() {_nop_();_nop_();_nop_();_nop_();}
   6          
   7          sbit SCL=P1^0;
   8          sbit SDA=P1^1;
   9          sbit SPK=P3^0;
  10          
  11          uchar code HI_LIST[]={0,226,229,232,233,236,238,240,241,242,244,245,246,247,248};
  12          uchar code LO_LIST[]={0,4,13,10,20,3,8,6,2,23,5,26,1,4,3};
  13          uchar code Song_24C04[]={1,1,5,3,3,1,1,2,3,4,4,3,2,5};
  14          uchar sidx;
  15          
  16          //------------------------------------------------------------------------------
  17          //延时
  18          //------------------------------------------------------------------------------
  19          void DelayMS(uint x)
  20          {
  21   1      uchar i;
  22   1      while(x--) for(i=120;i>0;i--);
  23   1      }
  24          //------------------------------------------------------------------------------
  25          //I2C开始
  26          //------------------------------------------------------------------------------
  27          void start()
  28          {
  29   1      SDA=1;SCL=1;NOP4();SDA=0;NOP4();SCL=0;
  30   1      }
  31          //------------------------------------------------------------------------------
  32          //I2C停止
  33          //------------------------------------------------------------------------------
  34          void stop()
  35          {
  36   1      SDA=0;SCL=0;NOP4();SCL=1;NOP4();SDA=1;
  37   1      }
  38          //-----------------------------------------------------------------------------
  39          //读取应答
  40          //-----------------------------------------------------------------------------
  41          void RACK()
  42          {
  43   1      SDA=1;NOP4();SCL=1;NOP4();SCL=0;
  44   1      }
  45          //-----------------------------------------------------------------------------
  46          //发送非应答信号
  47          //-----------------------------------------------------------------------------
  48          void NO_ACK()
  49          {
  50   1      SDA=1;SCL=1;NOP4();SCL=0;SDA=0;
  51   1      }
  52          //-----------------------------------------------------------------------------
  53          //向24C04中写一字节数据
  54          //-----------------------------------------------------------------------------
  55          void Write_A_Byte(uchar b)
C51 COMPILER V8.02   I2C_24C04与蜂胈芲                                                     06/11/2010 16:55:12 PAGE 2   

  56          {
  57   1      uchar i;
  58   1      for(i=0;i<8;i++)
  59   1      {
  60   2      b<<=1;SDA=CY;_nop_();SCL=1;NOP4();SCL=0;
  61   2      }
  62   1      RACK();
  63   1      }
  64          //----------------------------------------------------------------------------
  65          //向指定地址写数据
  66          //----------------------------------------------------------------------------
  67          void Write_IIC(uchar addr,uchar dat)
  68          {
  69   1      start();
  70   1      Write_A_Byte(0xa0);Write_A_Byte(addr);Write_A_Byte(dat);
  71   1      stop();
  72   1      DelayMS(10);
  73   1      }
  74          //---------------------------------------------------------------------------
  75          //读24C04一字节数据
  76          //---------------------------------------------------------------------------
  77          uchar Read_A_Byte()
  78          {
  79   1      uchar i,b;
  80   1      for(i=0;i<8;i++)
  81   1      {
  82   2      SCL=1;b<<=1;b|=SDA;SCL=0;
  83   2      }
  84   1      return b;
  85   1      }
  86          //---------------------------------------------------------------------------
  87          //从当前地址读数据
  88          //---------------------------------------------------------------------------
  89          uchar Read_Current() 
  90          {
  91   1      uchar d;
  92   1      start();
  93   1      Write_A_Byte(0xa1);d=Read_A_Byte();NO_ACK();
  94   1      stop();
  95   1      return d;
  96   1      }
  97          //--------------------------------------------------------------------------
  98          //从任意地址读数据
  99          //--------------------------------------------------------------------------
 100          uchar Random_Read(uchar addr)
 101          {
 102   1      start();
 103   1      Write_A_Byte(0xa0);Write_A_Byte(addr);
 104   1      stop();
 105   1      return Read_Current();
 106   1      }
 107          //-------------------------------------------------------------------------
 108          //定时器0中断
 109          //-------------------------------------------------------------------------
 110          void T0_INT() interrupt 1
 111          {
 112   1      SPK=!SPK;
 113   1      TH0=HI_LIST[sidx];
 114   1      TL0=LO_LIST[sidx];
 115   1      }
 116          //-------------------------------------------------------------------------
 117          //主程序
C51 COMPILER V8.02   I2C_24C04与蜂胈芲                                                     06/11/2010 16:55:12 PAGE 3   

 118          //-------------------------------------------------------------------------
 119          void main()
 120          {
 121   1      uchar i;
 122   1      IE=0x82;
 123   1      TMOD=0x00;
 124   1      for(i=0;i<14;i++)
 125   1      {
 126   2      Write_IIC(i,Song_24C04[i]);
 127   2      }
 128   1      while(1)
 129   1      {
 130   2      for(i=0;i<14;i++)
 131   2      {
 132   3      sidx=Random_Read(i);
 133   3      TR0=1;
 134   3      DelayMS(300);
 135   3      }
 136   2      }
 137   1      }


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