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

📄 iic.lst

📁 使用FT245开发的USB接口的质谱仪
💻 LST
字号:
C51 COMPILER V7.06   IIC                                                                   07/18/2004 12:07:16 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN IIC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE IIC.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include        <reg52.h>
   2          #include        <absacc.h>
   3          #include        <intrins.h>
   4          
   5          sbit    IIC_SDA=P1^4;//IIC的数据线
   6          sbit    IIC_SCL=P1^3;//IIC的时钟信号
   7          
   8          void IIC_Delay(void)//延时
   9          {
  10   1              _nop_();
  11   1              _nop_();
  12   1              //_nop_();
  13   1              //_nop_();
  14   1              //_nop_();
  15   1              //_nop_();
  16   1              //_nop_();
  17   1      }
  18          
  19          void IIC_Start(void)//IIC的启动信号
  20          {
  21   1              IIC_SDA=1;
  22   1              IIC_SCL=1;
  23   1              IIC_Delay();
  24   1              IIC_SDA=0;
  25   1              IIC_Delay();
  26   1              IIC_SCL=0;
  27   1              IIC_Delay();
  28   1              IIC_SDA=1;
  29   1              IIC_Delay();
  30   1      }       
  31          
  32          void IIC_End(void)//提供IIC的结束信号
  33          {
  34   1              IIC_SDA=0;
  35   1              IIC_Delay();
  36   1              IIC_SCL=1;
  37   1              IIC_Delay();
  38   1              IIC_SDA=1;
  39   1              IIC_Delay();
  40   1      } 
  41          void IIC_Write(unsigned char data1)//向IIC总线发送8位数据,并请求一个应答信号
  42          {
  43   1              unsigned char i;
  44   1              for(i=0;i<8;i++)//向IIC总线发送8位数据
  45   1              {       
  46   2                      if((data1&128)==128) IIC_SDA=1;
  47   2                              else IIC_SDA=0;
  48   2                      IIC_Delay();
  49   2                      IIC_SCL=1;
  50   2                      data1=data1<<1;
  51   2                      IIC_Delay();
  52   2                      IIC_SCL=0;
  53   2                      IIC_Delay();
  54   2              }
  55   1              IIC_SDA=1;//请求一个应答信号
C51 COMPILER V7.06   IIC                                                                   07/18/2004 12:07:16 PAGE 2   

  56   1      }
  57          unsigned char IIC_Read(void)//从IIC总线上读出一个8位的数
  58          {
  59   1              unsigned char i,j;
  60   1              j=0;
  61   1              for(i=0;i<8;i++)
  62   1              {
  63   2                      j=j<<1;
  64   2                      IIC_SCL=1;
  65   2                      IIC_Delay();
  66   2                      if(IIC_SDA==1) j++;
  67   2                      IIC_SCL=0;
  68   2                      IIC_Delay();
  69   2              }
  70   1              return(j);
  71   1      }                      
  72          unsigned char IIC_RandomRead(unsigned char Address)//给定一个地址,从这个地址读出内容
  73          {
  74   1               unsigned char T_Byte;
  75   1               bit Ack=1;
  76   1               while(Ack==1)          //dummy write ,select current address
  77   1               {
  78   2                       IIC_Start();   
  79   2                       IIC_Write(0xa2);       /*写入写控制字*/
  80   2                       IIC_SCL=1;
  81   2                       IIC_Delay();
  82   2                       if(IIC_SDA)
  83   2                              Ack=1;          //EEPROM busy,need retrs
  84   2                              else Ack=0;     //EEPROM Acknowledge
  85   2                              IIC_SCL=0;
  86   2              }
  87   1              Ack=1;                          //设置地址
  88   1              while(Ack==1)
  89   1              {
  90   2                      IIC_Write(Address);
  91   2                      IIC_SCL=1;
  92   2                      IIC_Delay();
  93   2                      if(IIC_SDA==1) Ack=1;
  94   2                              else Ack=0;
  95   2                      IIC_SCL=0;
  96   2              }
  97   1              IIC_Start();
  98   1              Ack=1;
  99   1              while(Ack==1)                    //读指令
 100   1              {
 101   2                      IIC_Write(0xa3);        /*写入读控制字*/
 102   2                      IIC_SCL=1;
 103   2                      IIC_Delay();
 104   2                      if(IIC_SDA==1)
 105   2                              Ack=1;
 106   2                      else Ack=0;
 107   2                      IIC_SCL=0;
 108   2              }
 109   1              T_Byte=IIC_Read();              //从IIC总线上读出一个8位的数
 110   1              IIC_SDA=1;//do not Acknowledge
 111   1              IIC_Delay();
 112   1              IIC_SCL=1;
 113   1              IIC_Delay();
 114   1              IIC_SCL=0;
 115   1              IIC_Delay(); 
 116   1              IIC_End();
 117   1              return T_Byte;
C51 COMPILER V7.06   IIC                                                                   07/18/2004 12:07:16 PAGE 3   

 118   1      }   
 119          void IIC_RandomWrite(unsigned char Address,unsigned char Data) //给定一个地址和数据,将数据写入到地址中
 120          {
 121   1              bit Ack=1;
 122   1              while(Ack==1)/*测试是否能写入*/
 123   1              {       
 124   2                      IIC_Start();
 125   2                      IIC_Write(0xa2);/*写入写控制字*/
 126   2                      IIC_SCL=1;
 127   2                      IIC_Delay();
 128   2                      if(IIC_SDA==1) Ack=1;
 129   2                              else Ack=0;
 130   2                      IIC_SCL=0;
 131   2              }
 132   1              IIC_Write(Address);/*写入8位地址*/
 133   1              IIC_SCL=1;
 134   1              IIC_Delay();
 135   1              IIC_SCL=0;
 136   1              IIC_Write(Data);/*写入数据*/
 137   1              IIC_SCL=1;
 138   1              IIC_Delay(); 
 139   1              IIC_SCL=0;
 140   1              IIC_End();/*送停止位,启动写入时序*/ 
 141   1      }


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


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

⌨️ 快捷键说明

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