亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? i2c.lst

?? Maria2 CarTV 20060707 Tony
?? LST
字號:
C51 COMPILER V8.01   I2C                                                                   11/28/2006 08:08:07 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN ..\..\1out\i2c.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\msFunc\i2c.c BROWSE INCDIR(..\..\inc;..\..\mslib;..\..\Device;..\..\k
                    -ernal;..\..\msFunc;..\..\pc;..\..\tv) DEBUG OBJECTEXTEND PRINT(..\..\1out\i2c.lst) OBJECT(..\..\1out\i2c.obj)

line level    source

   1          #define _I2C_C_
   2          
   3          #include "types.h"
   4          #include "board.h"
   5          #include "global.h"
   6          #include "DEBUG.h"
   7          #include "misc.h"
   8          #include "i2c.h"
   9          
  10          /////////////////////////////////////////
  11          // Set I2C SCL pin high/low.
  12          //
  13          // Arguments: bSet - high/low bit
  14          /////////////////////////////////////////
  15          void i2cSetSCL_Chk(bit bSet)
  16          {
  17   1          BYTE ucDummy; // loop dummy
  18   1      
  19   1          i2cSetSCL(bSet); // set SCL pin
  20   1      
  21   1          if (bSet == _HIGH) // if set pin high
  22   1          {
  23   2              ucDummy = I2C_CHECK_PIN_DUMMY; // initialize dummy
  24   2              while ((i2cSCL_PIN_STATUS() == _LOW) && (ucDummy--)) ; // check SCL pull high
  25   2          }
  26   1      }
  27          
  28          /////////////////////////////////////////
  29          // Set I2C SDA pin high/low
  30          //
  31          // Arguments: bSet - high/low bit
  32          /////////////////////////////////////////
  33          void i2cSetSDA_Chk(bit bSet)
  34          {
  35   1          BYTE ucDummy; // loop dummy
  36   1      
  37   1          i2cSetSDA(bSet); // set SDA pin
  38   1      
  39   1          if (bSet == _HIGH) // if set pin high
  40   1          {
  41   2              ucDummy = I2C_CHECK_PIN_DUMMY; // initialize dummy
  42   2              while ((i2cSDA_PIN_STATUS() == _LOW) && (ucDummy--)) ; // check SDA pull high
  43   2          }
  44   1      }
  45          //////////////////////////////////////////////////////////////
  46          // Delay 4us
  47          //////////////////////////////////////////////////////////////
  48          void i2c_Delay(void)
  49          {
  50   1          _nop_();
  51   1          _nop_();
  52   1          _nop_();
  53   1          _nop_();
  54   1          _nop_();
C51 COMPILER V8.01   I2C                                                                   11/28/2006 08:08:07 PAGE 2   

  55   1          _nop_();
  56   1          _nop_();
  57   1          _nop_();
  58   1      }
  59          //////////////////////////////////////////////////////
  60          // I2C start signal.
  61          // <comment>
  62          //  SCL ________
  63          //              \_________
  64          //  SDA _____
  65          //           \____________
  66          //
  67          // Return value: None
  68          //////////////////////////////////////////////////////
  69          BOOL i2c_Start(void)
  70          {
  71   1          BOOL bStatus = TRUE; // success status
  72   1      
  73   1          i2cSetSDA_Chk(_HIGH);
  74   1          i2c_Delay();
  75   1          i2cSetSCL_Chk(_HIGH);
  76   1          i2c_Delay();
  77   1              
  78   1          if ((i2cSCL_PIN_STATUS() == _LOW) || (i2cSDA_PIN_STATUS() == _LOW))
  79   1          {
  80   2              bStatus = FALSE;
  81   2          }
  82   1          else
  83   1          {
  84   2              i2cSetSDA(_LOW);
  85   2              i2c_Delay();
  86   2              i2cSetSCL(_LOW);
  87   2          }
  88   1              
  89   1          return bStatus;
  90   1      }
  91          /////////////////////////////////////////
  92          // I2C stop signal.
  93          // <comment>
  94          //              ____________
  95          //  SCL _______/
  96          //                 _________
  97          //  SDA __________/
  98          /////////////////////////////////////////
  99          void i2c_Stop(void)
 100          {
 101   1          i2cSetSCL(_LOW);
 102   1          i2c_Delay();
 103   1          i2cSetSDA(_LOW);
 104   1          i2c_Delay();
 105   1          i2cSetSCL(_HIGH);
 106   1          i2c_Delay();
 107   1          i2cSetSDA(_HIGH);
 108   1          i2c_Delay();
 109   1      }
 110          
 111          //////////////////////////////////////////////////////////////////////////
 112          // I2C send byte to device.
 113          //
 114          // Arguments: ucVal - send byte
 115          // Return value: I2C acknowledge bit
 116          //               I2C_ACKNOWLEDGE/I2C_NON_ACKNOWLEDGE
C51 COMPILER V8.01   I2C                                                                   11/28/2006 08:08:07 PAGE 3   

 117          //////////////////////////////////////////////////////////////////////////
 118          BOOL i2c_SendByte(BYTE ucVal)
 119          {
 120   1          BYTE    ucMask = 0x80;
 121   1          BOOL     bAck; // acknowledge bit
 122   1      
 123   1          while(ucMask)
 124   1          {
 125   2              if (ucVal & ucMask)
 126   2                  i2cSetSDA_Chk(_HIGH);
 127   2              else
 128   2                  i2cSetSDA_Chk(_LOW);
 129   2              i2c_Delay();
 130   2              i2cSetSCL_Chk(_HIGH); // clock
 131   2              i2c_Delay();
 132   2              i2cSetSCL(_LOW);
 133   2              i2c_Delay();
 134   2      
 135   2              ucMask >>= 1; // next
 136   2          } // while
 137   1      
 138   1          // recieve acknowledge
 139   1          i2cSetSDA(_HIGH);
 140   1          i2c_Delay();
 141   1          i2cSetSCL(_HIGH);
 142   1          i2c_Delay();
 143   1          bAck = i2cSDA_PIN_STATUS(); // recieve acknowlege
 144   1          i2cSetSCL(_LOW);
 145   1              
 146   1          return (bAck);
 147   1      }
 148          //////////////////////////////////////////////////////////////////////////
 149          // I2C receive byte from device.
 150          //
 151          // Return value: receive byte
 152          //////////////////////////////////////////////////////////////////////////
 153          BYTE i2c_ReceiveByte(BOOL bAck)
 154          {
 155   1          BYTE    ucReceive = 0;
 156   1          BYTE    ucMask = 0x80;
 157   1      
 158   1          while(ucMask)
 159   1          {
 160   2                      i2cSetSDA(_HIGH);
 161   2                      i2cSetSCL(_HIGH);
 162   2                      
 163   2                      if(i2cSDA_PIN_STATUS() == _HIGH)
 164   2                              ucReceive |= ucMask;
 165   2      
 166   2                      i2cSetSCL(_LOW);
 167   2                      i2c_Delay();
 168   2      
 169   2              ucMask >>= 1;
 170   2          } // while
 171   1      
 172   1          if (bAck) // acknowledge
 173   1              i2cSetSDA_Chk(I2C_ACKNOWLEDGE);
 174   1          else // non-acknowledge
 175   1              i2cSetSDA_Chk(I2C_NON_ACKNOWLEDGE);
 176   1      
 177   1          i2c_Delay();
 178   1          i2cSetSCL(_HIGH);
C51 COMPILER V8.01   I2C                                                                   11/28/2006 08:08:07 PAGE 4   

 179   1          i2c_Delay();
 180   1          i2cSetSCL(_LOW);
 181   1      
 182   1          return ucReceive;
 183   1      }
 184          
 185          //////////////////////////////////////////////////////////////////////////
 186          // I2C access start.
 187          //
 188          // Arguments: ucSlaveAdr - slave address
 189          //            trans_t - I2C_TRANS_WRITE/I2C_TRANS_READ
 190          //////////////////////////////////////////////////////////////////////////
 191          BOOL i2c_AccessStart(BYTE ucSlaveAdr, I2C_Direction trans_t)
 192          {
 193   1          BYTE ucDummy; // loop dummy
 194   1      
 195   1          if (trans_t == I2C_READ) // check i2c read or write
 196   1              ucSlaveAdr = I2C_DEVICE_ADR_READ(ucSlaveAdr); // read
 197   1          else
 198   1              ucSlaveAdr = I2C_DEVICE_ADR_WRITE(ucSlaveAdr); // write
 199   1      
 200   1          ucDummy = I2C_ACCESS_DUMMY_TIME;
 201   1          while (ucDummy--)
 202   1          {    
 203   2              i2c_Delay();
 204   2              if (i2c_Start() == FALSE)
 205   2                  continue;
 206   2      
 207   2              if (i2c_SendByte(ucSlaveAdr) == I2C_ACKNOWLEDGE) // check acknowledge
 208   2                  return TRUE;
 209   2                      //printf("ucSlaveAdr====%x", ucSlaveAdr);
 210   2              i2c_Stop();
 211   2              Delay1ms(1);
 212   2          }
 213   1      
 214   1          return FALSE;
 215   1      }
 216          /////////////////////////////////////////////////////////////////
 217          // I2C write bytes to device.
 218          //
 219          // Arguments: ucSlaveAdr - slave address
 220          //            ucSubAdr - sub address
 221          //            pBuf - pointer of buffer
 222          //            ucBufLen - length of buffer
 223          /////////////////////////////////////////////////////////////////
 224          void i2cBurstWriteBytes(BYTE ucSlaveAdr, BYTE ucSubAdr, BYTE *pBuf, BYTE ucBufLen)
 225          {
 226   1          BYTE ucDummy; // loop dummy
 227   1      
 228   1          ucDummy = I2C_ACCESS_DUMMY_TIME;
 229   1          while(ucDummy--)
 230   1          {
 231   2              if (i2c_AccessStart(ucSlaveAdr, I2C_WRITE) == FALSE)
 232   2                  continue;
 233   2              if (i2c_SendByte(ucSubAdr) == I2C_NON_ACKNOWLEDGE) // check non-acknowledge
 234   2                  continue;
 235   2      
 236   2              while(ucBufLen--) // loop of writting data
 237   2              {
 238   3                  i2c_SendByte(*pBuf); // send byte
 239   3                  pBuf++; // next byte pointer
 240   3              } // while
C51 COMPILER V8.01   I2C                                                                   11/28/2006 08:08:07 PAGE 5   

 241   2      
 242   2              break;
 243   2          } // while
 244   1      
 245   1          i2c_Stop();
 246   1      }
 247          
 248          /////////////////////////////////////////////////////////////////
 249          // I2C read bytes from device.
 250          //
 251          // Arguments: ucSlaveAdr - slave address
 252          //            ucSubAdr - sub address
 253          //            pBuf - pointer of buffer
 254          //            ucBufLen - length of buffer
 255          /////////////////////////////////////////////////////////////////
 256          
 257          void i2cBurstReadBytes(BYTE ucSlaveAdr, BYTE ucSubAdr, BYTE *pBuf, BYTE ucBufLen)
 258          {
 259   1          BYTE ucDummy; // loop dummy
 260   1      
 261   1          ucDummy = I2C_ACCESS_DUMMY_TIME;
 262   1          while(ucDummy--)
 263   1          {
 264   2              if (i2c_AccessStart(ucSlaveAdr, I2C_WRITE) == FALSE)
 265   2                  continue;
 266   2      
 267   2              if (i2c_SendByte(ucSubAdr) == I2C_NON_ACKNOWLEDGE) // check non-acknowledge
 268   2                  continue;
 269   2      
 270   2              if (i2c_AccessStart(ucSlaveAdr, I2C_READ) == FALSE)
 271   2                  continue;
 272   2      
 273   2              while(ucBufLen--) // loop to burst read
 274   2              {
 275   3                  *pBuf = i2c_ReceiveByte(ucBufLen); // receive byte
 276   3      
 277   3                  pBuf++; // next byte pointer
 278   3              } // while
 279   2      
 280   2              break;
 281   2          } // while
 282   1      
 283   1          i2c_Stop();
 284   1      }
 285          
 286          void i2c_WriteTBL(BYTE deviceID, WORD addr, BYTE *buffer, BYTE count)
 287          { 
 288   1        i2cBurstWriteBytes( deviceID, addr,buffer, count);
 289   1      }
 290          
 291          #if 0
              void i2c_ReadTBL(BYTE deviceID, WORD addr, BYTE *buffer, BYTE count)
              { 
                i2cBurstReadBytes(deviceID, addr,buffer,count);
              }
              #endif
 297          
 298          #if TUNER_2IN1
 299          /////////////////////////////////////////////////////////////////
 300          // I2C read current bytes from device.
 301          //
 302          // Arguments: ucSlaveAdr - slave address
C51 COMPILER V8.01   I2C                                                                   11/28/2006 08:08:07 PAGE 6   

 303          //            pBuf - pointer of buffer
 304          //            ucBufLen - length of buffer
 305          /////////////////////////////////////////////////////////////////
 306          void i2cBurstCurrentBytes(BYTE ucSlaveAdr, BYTE *pBuf, BYTE ucBufLen)
 307          {
 308   1          BYTE ucDummy; // loop dummy
 309   1            
 310   1          ucDummy = I2C_ACCESS_DUMMY_TIME;
 311   1          while(ucDummy--)
 312   1          {
 313   2              if (i2c_AccessStart(ucSlaveAdr, I2C_READ) == FALSE)
 314   2                  continue;
 315   2      
 316   2              while(ucBufLen--) // loop to burst read
 317   2              {
 318   3                  *pBuf = i2c_ReceiveByte(ucBufLen); // receive byte
 319   3      
 320   3                  pBuf++; // next byte pointer
 321   3              } // while
 322   2      
 323   2              break;
 324   2          } // while
 325   1      
 326   1          i2c_Stop();
 327   1      }
 328          
 329          void i2cWriteByte(BYTE deviceID, BYTE addr, BYTE value)
 330          { 
 331   1        i2c_WriteTBL(deviceID, addr, &value, 1);
 332   1      }
 333          
 334          #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    516    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      30
   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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道亚洲精品aⅴ| 国产亚洲精久久久久久| 一区二区三区不卡视频在线观看| 久久精品国产秦先生| 91麻豆精品国产91| 国产精品麻豆欧美日韩ww| 激情五月婷婷综合| 7777精品伊人久久久大香线蕉最新版| 欧美国产丝袜视频| 国产成人aaaa| 五月天激情综合网| 五月激情六月综合| 欧美日韩视频一区二区| 亚洲精品美国一| 91在线观看美女| 亚洲国产你懂的| 91精品视频网| 日韩中文字幕一区二区三区| 欧美一区二区播放| 国产精品1区二区.| 国产拍欧美日韩视频二区| 国产成人av网站| |精品福利一区二区三区| 91小视频在线观看| 亚洲www啪成人一区二区麻豆| 欧美色视频在线| 日韩精品国产欧美| 国产蜜臀av在线一区二区三区| youjizz国产精品| 丝袜a∨在线一区二区三区不卡| 日韩欧美一级片| 波多野结衣中文字幕一区二区三区| 亚洲精品国产a| 精品国产三级电影在线观看| 国产乱码精品一区二区三区av| 亚洲欧洲另类国产综合| 欧美电影免费观看高清完整版在线| 精品在线播放午夜| 亚洲免费资源在线播放| 91精品黄色片免费大全| 国产一区二区三区| 麻豆一区二区三| 亚洲一区二区三区四区在线免费观看 | 99国内精品久久| 国产精品亚洲成人| 久久aⅴ国产欧美74aaa| 日本最新不卡在线| 日韩av在线发布| 一区二区三区欧美在线观看| 久久久久久久久久久久久久久99| 972aa.com艺术欧美| 福利一区二区在线| 国产精品一二三| 激情久久久久久久久久久久久久久久| 亚洲综合一二三区| 亚洲人123区| 亚洲婷婷在线视频| 夜夜操天天操亚洲| 亚洲黄色免费网站| 日韩电影免费在线看| 亚洲欧洲一区二区三区| 亚洲伦在线观看| 一区二区三区四区五区视频在线观看 | 99国产精品久久久久久久久久久| 成人avav影音| 欧美一区二区三区喷汁尤物| 91精品国产aⅴ一区二区| 精品福利av导航| 久久久久久久综合日本| 亚洲欧美偷拍另类a∨色屁股| 亚洲美女精品一区| 亚洲一区二区在线观看视频 | 欧美精品1区2区| 亚洲精品在线三区| 亚洲精品欧美激情| 久久精品国产77777蜜臀| 成人免费av资源| 欧美丰满美乳xxx高潮www| 国产亚洲自拍一区| 亚瑟在线精品视频| a美女胸又www黄视频久久| 538prom精品视频线放| 国产精品美女久久久久久久久久久 | 欧美成人a∨高清免费观看| 国产精品乱码一区二区三区软件 | 黄色资源网久久资源365| 国产精品久久久久aaaa樱花| 亚洲中国最大av网站| 黄色资源网久久资源365| 久久亚洲影视婷婷| 国产91精品露脸国语对白| 亚洲丝袜制服诱惑| 欧美日高清视频| 亚洲欧洲在线观看av| 91亚洲精华国产精华精华液| 亚洲欧美日韩国产综合| 欧美高清一级片在线| 国产一区二区伦理片| 亚洲免费av观看| 日韩亚洲欧美成人一区| 99精品久久99久久久久| 亚洲成a人v欧美综合天堂| 久久久影视传媒| 91麻豆精品国产综合久久久久久| 国产一区二区成人久久免费影院 | 日韩免费一区二区| 91国在线观看| 粗大黑人巨茎大战欧美成人| 天天色图综合网| 中文字幕一区二区三区四区不卡 | 国产精品福利一区| 国产制服丝袜一区| 在线观看一区日韩| 国产性色一区二区| 不卡av电影在线播放| 亚洲福利视频导航| 欧美精品一区二区三区在线 | 国产酒店精品激情| 亚洲视频图片小说| 欧美videos中文字幕| 福利电影一区二区| 午夜精品久久久| 欧美激情一区二区在线| 欧美日韩和欧美的一区二区| 老司机免费视频一区二区三区| 综合婷婷亚洲小说| 日韩精品专区在线| 欧美亚洲综合色| 成人精品视频.| 看片的网站亚洲| 国产视频一区二区在线| 777欧美精品| 欧美在线啊v一区| 成人黄色a**站在线观看| 日韩激情视频网站| 一区二区三区在线视频免费观看| 国产夜色精品一区二区av| 欧美一区在线视频| 欧美优质美女网站| 91美女在线视频| 丁香另类激情小说| 激情久久久久久久久久久久久久久久| 国产精品超碰97尤物18| 日韩西西人体444www| 91麻豆精品国产91久久久资源速度 | 日韩精品一区二区三区老鸭窝 | 国产拍揄自揄精品视频麻豆| 日韩欧美国产综合| 2024国产精品| 久久久久久久久蜜桃| 国产亚洲一区二区三区在线观看 | 日韩午夜电影在线观看| 日韩午夜激情av| 久久久久9999亚洲精品| 国产丝袜美腿一区二区三区| 国产精品无人区| 亚洲一区二区三区在线看| 午夜激情一区二区| 99精品视频中文字幕| 粉嫩一区二区三区性色av| 日韩高清不卡在线| 最好看的中文字幕久久| 精品免费日韩av| 在线播放中文一区| 国产一区二区三区四区在线观看 | 国产成人免费视频精品含羞草妖精| 亚洲成年人影院| 日韩av在线免费观看不卡| 国产一区在线看| 99riav久久精品riav| 制服丝袜亚洲播放| 国产欧美日韩综合精品一区二区| 亚洲婷婷综合色高清在线| 婷婷开心久久网| 99精品久久久久久| 欧美一区二区三区在线看| 国产亚洲一本大道中文在线| 亚洲一区二区三区精品在线| 国产一区二区精品久久| 欧美三区在线视频| 国产精品短视频| 精一区二区三区| 欧美卡1卡2卡| 亚洲乱码中文字幕| 成人午夜在线免费| 精品国产乱码久久| 亚洲一区二区在线播放相泽| 成人综合在线观看| 欧美不卡一区二区三区四区| 亚洲一区二区三区小说| 91农村精品一区二区在线| 国产欧美日韩在线视频| 看片的网站亚洲| 精品国产乱码久久久久久1区2区 | 亚洲国产成人午夜在线一区| 久久国产夜色精品鲁鲁99| 欧美一区二区在线观看| 午夜久久久久久电影| 欧美视频在线不卡| 午夜视频在线观看一区二区|