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

📄 iicbusc.lst

📁 单片机与DSP通信源程序
💻 LST
字号:
C51 COMPILER V7.50   IICBUSC                                                               04/07/2006 23:20:56 PAGE 1   


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

line level    source

   1          #include "52init.h"
   2          #define iicnop 2
   3          bit     bACK;
   4          sbit    pSDA=P3^7;
   5          sbit    pSCL=P3^6;
   6          
   7          void iicdelay(uchar delay_num)  //22.1184 the loop time is 0.543us
   8             {
   9   1          uchar i,k;                //delay_num 8us/num
  10   1          for(i=delay_num;i>0;i--)
  11   1           {
  12   2            for(k=15;k>0;k--)
  13   2             {;}
  14   2            }
  15   1          }
  16          void iicStart()
  17             {
  18   1          uchar i;
  19   1          pSDA=1;
  20   1          pSCL=1;
  21   1          while(pSCL==0){;}
  22   1          for(i=0;i<iicnop;i++){_nop_();}
  23   1          pSDA=0;
  24   1          for(i=0;i<iicnop;i++){_nop_();}
  25   1          pSCL=0;
  26   1          }
  27          void iicStop()
  28              {
  29   1           uchar i;
  30   1           pSDA=0;
  31   1           pSCL=1;
  32   1           while(pSCL==0){;}
  33   1           pSDA=1;
  34   1           for(i=0;i<iicnop;i++){_nop_();}
  35   1           for(i=0;i<iicnop;i++){_nop_();}
  36   1           pSCL=0; 
  37   1           }
  38          void iicMack()
  39              {
  40   1           uchar i;
  41   1           pSDA=0;
  42   1           pSCL=1;
  43   1           for(i=0;i<iicnop;i++){_nop_();}
  44   1           pSCL=0;
  45   1           pSDA=1;       
  46   1            }
  47          void iicMnack()
  48              {
  49   1            uchar i;
  50   1            pSDA=1;
  51   1            pSCL=1;
  52   1            for(i=0;i<iicnop;i++){_nop_();}  
  53   1            pSCL=0;
  54   1            pSDA=0;   
  55   1            }
C51 COMPILER V7.50   IICBUSC                                                               04/07/2006 23:20:56 PAGE 2   

  56          void iicCack()
  57               {
  58   1             uchar i;
  59   1             pSDA=1;
  60   1             pSCL=1;
  61   1             bACK=0;
  62   1             if(pSDA==0)
  63   1               {
  64   2                 pSCL=0;
  65   2                 for(i=0;i<iicnop;i++){_nop_();}            
  66   2                 }
  67   1             else
  68   1               {
  69   2                 bACK=1;
  70   2                 pSCL=0;       
  71   2                 for(i=0;i<iicnop;i++){_nop_();}  
  72   2                 }
  73   1             }
  74          void iicwrbyt0()
  75               {
  76   1              uchar i;
  77   1              pSDA=0;
  78   1              pSCL=1;
  79   1              for(i=0;i<iicnop;i++){_nop_();}
  80   1              pSCL=0;       
  81   1             }
  82          void iicwrbyt1()
  83               {
  84   1              uchar i;
  85   1              pSDA=1;
  86   1              pSCL=1;
  87   1              for(i=0;i<iicnop;i++){_nop_();} 
  88   1              pSCL=0;
  89   1              pSDA=0;     
  90   1             }
  91          void iicwrbyt(uchar WrData)
  92                {
  93   1              uchar i,j;
  94   1              if((WrData&0x80)>0)
  95   1                 {pSDA=1;}
  96   1              else
  97   1                 {pSDA=0;}
  98   1              pSCL=1;
  99   1              while(pSCL==0){;}
 100   1              for(i=0;i<iicnop;i++){_nop_();}
 101   1              pSCL=0;
 102   1              pSDA=0;
 103   1              WrData=_crol_(WrData,1);
 104   1              for(j=1;j<8;j++)
 105   1               {
 106   2                 if((WrData&0x80)>0)
 107   2                    {iicwrbyt1();}
 108   2                 else
 109   2                    {iicwrbyt0();}
 110   2                 WrData=_crol_(WrData,1);
 111   2                 }  
 112   1              }
 113          uchar iicrdbyt()
 114               {
 115   1             uchar RdData=0xff,j;
 116   1             for(j=0;j<8;j++)
 117   1               {
C51 COMPILER V7.50   IICBUSC                                                               04/07/2006 23:20:56 PAGE 3   

 118   2                pSDA=1;
 119   2                pSCL=1;
 120   2                if(pSDA==0)
 121   2                  {
 122   3                   RdData=RdData&0x7f;
 123   3                   RdData=_crol_(RdData,1);
 124   3                   pSCL=0;
 125   3                    } 
 126   2                else
 127   2                  {
 128   3                   RdData=RdData|0x80;
 129   3                   RdData=_crol_(RdData,1);
 130   3                   pSCL=0; 
 131   3                    }
 132   2                }
 133   1             return(RdData);
 134   1             }
 135          
 136          void iic24cxxwr(uchar WrAddr,uchar WrData)
 137               {
 138   1                 do{
 139   2                    do{ 
 140   3                   do{
 141   4                          iicStart();
 142   4                              iicwrbyt(0xa0);
 143   4                              iicCack();
 144   4                         }while(bACK==1);
 145   3                            iicwrbyt(WrAddr);
 146   3                                iicCack();
 147   3                   }while(bACK==1);
 148   2                        iicwrbyt(WrData);
 149   2                        iicCack();
 150   2               }while(bACK==1);
 151   1                       iicStop();
 152   1                       //LcdPrintf("debug position \n");
 153   1                }
 154          uchar iic24cxxrd(uchar RdAddr)
 155               {
 156   1                uchar temp;
 157   1                do{
 158   2                   do{
 159   3                          do{
 160   4                                  iicStart();
 161   4                              iicwrbyt(0xa0);
 162   4                              iicCack();
 163   4                                }while(bACK==1);
 164   3                             iicwrbyt(RdAddr);
 165   3                                 iicCack();
 166   3                          }while(bACK==1);
 167   2                          iicStart();
 168   2                          iicwrbyt(0xa1);
 169   2                          iicCack();            
 170   2                    }while(bACK==1);
 171   1                 temp=iicrdbyt();
 172   1             iicMnack();
 173   1                 iicStop();
 174   1                 return(temp);
 175   1                }
 176          void iic4221wr(uchar WrAddr,uchar WrData)
 177               {
 178   1                      do{
 179   2                        do{
C51 COMPILER V7.50   IICBUSC                                                               04/07/2006 23:20:56 PAGE 4   

 180   3                               do{
 181   4                                      iicStart();
 182   4                                      iicwrbyt(0x20);
 183   4                                      iicCack();
 184   4                                 }while(bACK==1);
 185   3                                  iicwrbyt(WrAddr);
 186   3                                  iicCack();
 187   3                          }while(bACK==1);
 188   2                          iicwrbyt(WrData);
 189   2                          iicCack();
 190   2                     }while(bACK==1);
 191   1                 iicStop();
 192   1                }
 193          uchar iic4221rd(uchar RdAddr)
 194               {
 195   1                      uchar temp;
 196   1              do{
 197   2                        do{
 198   3                               do{
 199   4                                      iicStart();
 200   4                                      iicwrbyt(0x20);
 201   4                                      iicCack();
 202   4                                 }while(bACK==1);
 203   3                            iicwrbyt(RdAddr);
 204   3                                iicCack();
 205   3                           }while(bACK==1);
 206   2                          iicStart();
 207   2                          iicwrbyt(0x21);
 208   2                              iicCack();
 209   2                     }while(bACK==1);
 210   1                  temp=iicrdbyt();
 211   1                  iicStop();
 212   1                  return(temp);
 213   1                 }
 214          void iic4221wrb(uchar WrAddr,uchar WrData)
 215               {
 216   1                      do{
 217   2                        do{
 218   3                               do{
 219   4                                      iicStart();
 220   4                                      iicwrbyt(0x22);
 221   4                                      iicCack();
 222   4                                 }while(bACK==1);
 223   3                                  iicwrbyt(WrAddr);
 224   3                                  iicCack();
 225   3                          }while(bACK==1);
 226   2                          iicwrbyt(WrData);
 227   2                          iicCack();
 228   2                     }while(bACK==1);
 229   1                 iicStop();
 230   1                }
 231          uchar iic4221rdb(uchar RdAddr)
 232               {
 233   1                      uchar temp;
 234   1              do{
 235   2                        do{
 236   3                               do{
 237   4                                      iicStart();
 238   4                                      iicwrbyt(0x22);
 239   4                                      iicCack();
 240   4                                 }while(bACK==1);
 241   3                            iicwrbyt(RdAddr);
C51 COMPILER V7.50   IICBUSC                                                               04/07/2006 23:20:56 PAGE 5   

 242   3                                iicCack();
 243   3                           }while(bACK==1);
 244   2                          iicStart();
 245   2                          iicwrbyt(0x23);
 246   2                              iicCack();
 247   2                     }while(bACK==1);
 248   1                  temp=iicrdbyt();
 249   1                  iicStop();
 250   1                  return(temp);
 251   1                 }
 252          
 253          
 254          
 255          
 256          
 257          
 258          
 259          
 260          
 261          
 262          


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


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

⌨️ 快捷键说明

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