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

📄 iic.lst

📁 手机短信的protues仿真,带有串口及液晶显示,拿来分享,感兴趣的拿去研究研究.
💻 LST
字号:
C51 COMPILER V8.02   IIC                                                                   10/13/2008 11:41:32 PAGE 1   


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

line level    source

   1          #include <reg52.h>
   2          #include<intrins.h>
   3          #include"IIC.h"
   4          //#include"common.h"
   5          extern uchar m_count;
   6          
   7          void mDelay(uint t) //延时
   8          {
   9   1          uchar i;
  10   1          while(t--)
  11   1          {
  12   2              for(i=0;i<125;i++)
  13   2              {
  14   3                  ;
  15   3              }
  16   2          }
  17   1      }
  18          
  19          
  20          void Nop(void)            //空操作
  21          {
  22   1          _nop_();
  23   1          _nop_();
  24   1          _nop_();
  25   1          _nop_();
  26   1      }
  27          
  28          
  29          /*起始条件*/
  30          
  31          void Start(void)
  32          {
  33   1          Sda=1;
  34   1          Scl=1;
  35   1          Nop();
  36   1          Sda=0;
  37   1          Nop();
  38   1      }
  39          
  40          
  41          /*停止条件*/
  42          
  43          void Stop(void)
  44          {
  45   1          Sda=0;
  46   1          Scl=1;
  47   1          Nop();
  48   1          Sda=1;
  49   1          Nop();
  50   1      }
  51          
  52          /*应答位*/
  53          
  54          void Ack(void)
  55          {
C51 COMPILER V8.02   IIC                                                                   10/13/2008 11:41:32 PAGE 2   

  56   1          Sda=0;
  57   1          Nop();
  58   1          Scl=1;
  59   1          Nop();
  60   1          Scl=0;
  61   1      }
  62          
  63          /*反向应答位*/
  64          
  65          void NoAck(void)
  66          {
  67   1          Sda=1;
  68   1          Nop();
  69   1          Scl=1;
  70   1          Nop();
  71   1          Scl=0;
  72   1      }
  73          
  74          /*发送数据子程序,Data为要求发送的数据*/
  75          void Send(uchar Data)
  76          {
  77   1          uchar BitCounter=8;
  78   1          uchar temp;
  79   1          do
  80   1          {
  81   2              temp=Data;
  82   2              Scl=0;
  83   2              Nop();
  84   2              if((temp&0x80)==0x80)
  85   2              Sda=1;
  86   2              else 
  87   2              Sda=0;
  88   2              Scl=1;
  89   2              temp=Data<<1;
  90   2              Data=temp;
  91   2              BitCounter--;
  92   2          }
  93   1          while(BitCounter);
  94   1          Scl=0;
  95   1      }
  96          
  97          /*读一字节的数据,并返回该字节值*/
  98          uchar Read(void)
  99          {
 100   1          uchar temp=0;
 101   1          uchar temp1=0;
 102   1          uchar BitCounter=8;
 103   1          Sda=1;
 104   1          do
 105   1          {
 106   2              Scl=0;
 107   2              Nop();
 108   2              Scl=1;
 109   2              Nop();
 110   2              if(Sda)
 111   2              temp=temp|0x01;
 112   2              else
 113   2              temp=temp&0xfe;
 114   2              if(BitCounter-1)
 115   2              {
 116   3                  temp1=temp<<1;
 117   3                  temp=temp1;
C51 COMPILER V8.02   IIC                                                                   10/13/2008 11:41:32 PAGE 3   

 118   3              }
 119   2              BitCounter--;
 120   2          }
 121   1          while(BitCounter);
 122   1          return(temp);
 123   1      }
 124          
 125          void WrToROM(uchar Data[],uchar Address,uchar Num)
 126          {
 127   1          uchar i;
 128   1          uchar *PData;
 129   1          PData=Data;
 130   1          for(i=0;i<Num;i++)
 131   1          {
 132   2              Start();
 133   2              Send(0xa0);
 134   2              Ack();
 135   2              Send(Address+i);
 136   2              Ack();
 137   2              Send(*(PData+i));
 138   2              Ack();
 139   2              Stop();
 140   2              mDelay(20);
 141   2          }
 142   1      }
 143          /*
 144          void WrToROMBlok(uchar Data[],uchar Address,uchar LowNum,uchar Num)
 145          {
 146              uchar i;
 147              uchar *PData;
 148              PData=Data;
 149              for(i=LowNum;i<Num;i++)
 150              {
 151                  Start();
 152                  Send(0xa0);
 153                  Ack();
 154                  Send(Address+i);
 155                  Ack();
 156                  Send(*(PData+i));
 157                  Ack();
 158                  Stop();
 159                  mDelay(20);
 160              }
 161          }
 162          
 163          void RdFromROMblok(uchar Data[],uchar Address,uchar LowNum,uchar Num)
 164          {
 165              uchar i;
 166              uchar *PData;
 167              PData=Data;
 168              for(i=LowNum;i<Num;i++)
 169              {
 170                  Start();
 171                  Send(0xa0);
 172                  Ack();
 173                  Send(Address+i);
 174                  Ack();
 175                  Start();
 176                  Send(0xa1);
 177                  Ack();
 178                  *(PData+i)=Read();
 179                  Scl=0;
C51 COMPILER V8.02   IIC                                                                   10/13/2008 11:41:32 PAGE 4   

 180                  NoAck();
 181                  Stop();
 182              }
 183          }
 184          */
 185          void RdFromROM(uchar Data[],uchar Address,uchar Num)
 186          {
 187   1          uchar i;
 188   1          uchar *PData;
 189   1          PData=Data;
 190   1          for(i=0;i<Num;i++)
 191   1          {
 192   2              Start();
 193   2              Send(0xa0);
 194   2              Ack();
 195   2              Send(Address+i);
 196   2              Ack();
 197   2              Start();
 198   2              Send(0xa1);
 199   2              Ack();
 200   2              *(PData+i)=Read();
 201   2              Scl=0;
 202   2              NoAck();
 203   2              Stop();
 204   2          }
 205   1      }
 206          void init_iic(void)
 207          {
 208   1              uchar temp1[1];
 209   1              RdFromROM(temp1,2000,1);  
 210   1              m_count=temp1[0];
 211   1              if((m_count<0)||(m_count>6))  
 212   1              {
 213   2                      temp1[0]=0;
 214   2                      WrToROM(temp1,2000,1);  
 215   2              }       
 216   1      }


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