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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? i2c.lst

?? LM75A數(shù)字溫度計 學(xué)習(xí)I2C串行總線的基本協(xié)議; 認(rèn)識LM75A半導(dǎo)體數(shù)字溫度傳感器。
?? LST
字號:
C51 COMPILER V7.09   I2C                                                                   12/05/2007 16:14:14 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE I2C.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2                  I2C.c
   3                  標(biāo)準(zhǔn)80C51單片機模擬I2C總線的主機程序
   4                  Copyright (c) 2006,廣州周立功單片機發(fā)展有限公司
   5                  All rights reserved.
   6                  本程序僅供學(xué)習(xí)參考,不提供任何可靠性方面的擔(dān)保;請勿用于商業(yè)目的
   7          */
   8          
   9          
  10          #include "I2C.h"
  11          
  12          
  13          //定義延時變量,用于宏I2C_Delay()
  14          unsigned char data I2C_Delay_t;
  15          
  16          /*
  17          宏定義:I2C_Delay()
  18          功能:延時,模擬I2C總線專用
  19          */
  20          #define I2C_Delay()\
  21          {\
  22                  I2C_Delay_t = (I2C_DELAY_VALUE);\
  23                  while ( --I2C_Delay_t != 0 );\
  24          }
  25          
  26          
  27          /*
  28          函數(shù):I2C_Init()
  29          功能:I2C總線初始化,使總線處于空閑狀態(tài)
  30          說明:在main()函數(shù)的開始處,通常應(yīng)當(dāng)要執(zhí)行一次本函數(shù)
  31          */
  32          void I2C_Init()
  33          {
  34   1              I2C_SCL = 1;
  35   1              I2C_Delay();
  36   1              I2C_SDA = 1;
  37   1              I2C_Delay();
  38   1      }
  39          
  40          
  41          /*
  42          函數(shù):I2C_Start()
  43          功能:產(chǎn)生I2C總線的起始狀態(tài)
  44          說明:
  45                  SCL處于高電平期間,當(dāng)SDA出現(xiàn)下降沿時啟動I2C總線
  46                  不論SDA和SCL處于什么電平狀態(tài),本函數(shù)總能正確產(chǎn)生起始狀態(tài)
  47                  本函數(shù)也可以用來產(chǎn)生重復(fù)起始狀態(tài)
  48                  本函數(shù)執(zhí)行后,I2C總線處于忙狀態(tài)
  49          */
  50          void I2C_Start()
  51          {
  52   1              I2C_SDA = 1;
  53   1              I2C_Delay();
  54   1              I2C_SCL = 1;
  55   1              I2C_Delay();
C51 COMPILER V7.09   I2C                                                                   12/05/2007 16:14:14 PAGE 2   

  56   1              I2C_SDA = 0;
  57   1              I2C_Delay();
  58   1              I2C_SCL = 0;
  59   1              I2C_Delay();
  60   1      }
  61          
  62          
  63          /*
  64          函數(shù):I2C_Write()
  65          功能:向I2C總線寫1個字節(jié)的數(shù)據(jù)
  66          參數(shù):
  67                  dat:要寫到總線上的數(shù)據(jù)
  68          */
  69          void I2C_Write(unsigned char dat)
  70          {
  71   1              unsigned char t = 8;
  72   1              do
  73   1              {
  74   2                      I2C_SDA = (bit)(dat & 0x80);
  75   2                      dat <<= 1;
  76   2                      I2C_SCL = 1;
  77   2                      I2C_Delay();
  78   2                      I2C_SCL = 0;
  79   2                      I2C_Delay();
  80   2              } while ( --t != 0 );
  81   1      }
  82          
  83          
  84          /*
  85          函數(shù):I2C_Read()
  86          功能:從從機讀取1個字節(jié)的數(shù)據(jù)
  87          返回:讀取的一個字節(jié)數(shù)據(jù)
  88          */
  89          unsigned char I2C_Read()
  90          {
  91   1              unsigned char dat;
  92   1              unsigned char t = 8;
  93   1              I2C_SDA = 1;    //在讀取數(shù)據(jù)之前,要把SDA拉高
  94   1              do
  95   1              {
  96   2                      I2C_SCL = 1;
  97   2                      I2C_Delay();
  98   2                      dat <<= 1;
  99   2                      if ( I2C_SDA ) dat |= 0x01;
 100   2                      I2C_SCL = 0;
 101   2                      I2C_Delay();
 102   2              } while ( --t != 0 );
 103   1              return dat;
 104   1      }
 105          
 106          
 107          /*
 108          函數(shù):I2C_GetAck()
 109          功能:讀取從機應(yīng)答位
 110          返回:
 111                  0:從機應(yīng)答
 112                  1:從機非應(yīng)答
 113          說明:
 114                  從機在收到每個字節(jié)的數(shù)據(jù)后,要產(chǎn)生應(yīng)答位
 115                  從機在收到最后1個字節(jié)的數(shù)據(jù)后,一般要產(chǎn)生非應(yīng)答位
 116          */
 117          bit I2C_GetAck()
C51 COMPILER V7.09   I2C                                                                   12/05/2007 16:14:14 PAGE 3   

 118          {
 119   1              bit ack;
 120   1              I2C_SDA = 1;
 121   1              I2C_Delay();
 122   1              I2C_SCL = 1;
 123   1              I2C_Delay();
 124   1              ack = I2C_SDA;
 125   1              I2C_SCL = 0;
 126   1              I2C_Delay();
 127   1              return ack;
 128   1      }
 129          
 130          
 131          /*
 132          函數(shù):I2C_PutAck()
 133          功能:主機產(chǎn)生應(yīng)答位或非應(yīng)答位
 134          參數(shù):
 135                  ack=0:主機產(chǎn)生應(yīng)答位
 136                  ack=1:主機產(chǎn)生非應(yīng)答位
 137          說明:
 138                  主機在接收完每一個字節(jié)的數(shù)據(jù)后,都應(yīng)當(dāng)產(chǎn)生應(yīng)答位
 139                  主機在接收完最后一個字節(jié)的數(shù)據(jù)后,應(yīng)當(dāng)產(chǎn)生非應(yīng)答位
 140          */
 141          void I2C_PutAck(bit ack)
 142          {
 143   1              I2C_SDA = ack;
 144   1              I2C_Delay();
 145   1              I2C_SCL = 1;
 146   1              I2C_Delay();
 147   1              I2C_SCL = 0;
 148   1              I2C_Delay();
 149   1      }
 150          
 151          
 152          /*
 153          函數(shù):I2C_Stop()
 154          功能:產(chǎn)生I2C總線的停止?fàn)顟B(tài)
 155          說明:
 156                  SCL處于高電平期間,當(dāng)SDA出現(xiàn)上升沿時停止I2C總線
 157                  不論SDA和SCL處于什么電平狀態(tài),本函數(shù)總能正確產(chǎn)生停止?fàn)顟B(tài)
 158                  本函數(shù)執(zhí)行后,I2C總線處于空閑狀態(tài)
 159          */
 160          void I2C_Stop()
 161          {
 162   1              unsigned int t = I2C_STOP_WAIT_VALUE;
 163   1              I2C_SDA = 0;
 164   1              I2C_Delay();
 165   1              I2C_SCL = 1;
 166   1              I2C_Delay();
 167   1              I2C_SDA = 1;
 168   1              I2C_Delay();
 169   1              while ( --t != 0 );             //在下一次產(chǎn)生Start之前,要加一定的延時
 170   1      }
 171          
 172          
 173          /*
 174          函數(shù):I2C_Puts()
 175          功能:主機通過I2C總線向從機發(fā)送多個字節(jié)的數(shù)據(jù)
 176          參數(shù):
 177                  SlaveAddr:從機地址(高7位是從機地址,最低位是寫標(biāo)志0)
 178                  SubAddr:從機的子地址
 179                  Size:數(shù)據(jù)的字節(jié)數(shù)
C51 COMPILER V7.09   I2C                                                                   12/05/2007 16:14:14 PAGE 4   

 180                  *dat:要發(fā)送的數(shù)據(jù)
 181          返回:
 182                  0:發(fā)送成功
 183                  1:在發(fā)送過程中出現(xiàn)異常
 184          */
 185          bit I2C_Puts(unsigned char SlaveAddr, unsigned char SubAddr, unsigned char Size, char *dat)
 186          {
 187   1      //檢查長度
 188   1              if ( Size == 0 ) return 0;
 189   1      //確保從機地址最低位是0
 190   1              SlaveAddr &= 0xFE;
 191   1      //啟動I2C總線
 192   1              I2C_Start();
 193   1      //發(fā)送從機地址
 194   1              I2C_Write(SlaveAddr);
 195   1              if ( I2C_GetAck() )
 196   1              {
 197   2                      I2C_Stop();
 198   2                      return 1;
 199   2              }
 200   1      //發(fā)送子地址
 201   1              I2C_Write(SubAddr);
 202   1              if ( I2C_GetAck() )
 203   1              {
 204   2                      I2C_Stop();
 205   2                      return 1;
 206   2              }
 207   1      //發(fā)送數(shù)據(jù)
 208   1              do
 209   1              {
 210   2                      I2C_Write(*dat++);
 211   2                      if ( I2C_GetAck() )
 212   2                      {
 213   3                              I2C_Stop();
 214   3                              return 1;
 215   3                      }
 216   2              } while ( --Size != 0 );
 217   1      //發(fā)送完畢,停止I2C總線,并返回結(jié)果
 218   1              I2C_Stop();
 219   1              return 0;
 220   1      }
 221          
 222          
 223          /*
 224          函數(shù):I2C_Put()
 225          功能:主機通過I2C總線向從機發(fā)送1個字節(jié)的數(shù)據(jù)
 226          參數(shù):
 227                  SlaveAddr:從機地址(高7位是從機地址,最低位是寫標(biāo)志0)
 228                  SubAddr:從機的子地址
 229                  dat:要發(fā)送的數(shù)據(jù)
 230          返回:
 231                  0:發(fā)送成功
 232                  1:在發(fā)送過程中出現(xiàn)異常
 233          */
 234          bit I2C_Put(unsigned char SlaveAddr, unsigned char SubAddr, char dat)
 235          {
 236   1              return I2C_Puts(SlaveAddr,SubAddr,1,&dat);
 237   1      }
 238          
 239          
 240          /*
 241          函數(shù):I2C_Gets()
C51 COMPILER V7.09   I2C                                                                   12/05/2007 16:14:14 PAGE 5   

 242          功能:主機通過I2C總線從從機接收多個字節(jié)的數(shù)據(jù)
 243          參數(shù):
 244                  SlaveAddr:從機地址(高7位是從機地址,最低位是讀標(biāo)志1)
 245                  SubAddr:從機的子地址
 246                  Size:數(shù)據(jù)的字節(jié)數(shù)
 247                  *dat:保存接收到的數(shù)據(jù)
 248          返回:
 249                  0:接收成功
 250                  1:在接收過程中出現(xiàn)異常
 251          */
 252          bit I2C_Gets(unsigned char SlaveAddr, unsigned char SubAddr, unsigned char Size, char *dat)
 253          {
 254   1      //檢查長度
 255   1              if ( Size == 0 ) return 0;
 256   1      //確保從機地址最低位是0
 257   1              SlaveAddr &= 0xFE;      //確保最低位是0
 258   1      //啟動I2C總線
 259   1              I2C_Start();
 260   1      //發(fā)送從機地址
 261   1              I2C_Write(SlaveAddr);
 262   1              if ( I2C_GetAck() )
 263   1              {
 264   2                      I2C_Stop();
 265   2                      return 1;
 266   2              }
 267   1      //發(fā)送子地址
 268   1              I2C_Write(SubAddr);
 269   1              if ( I2C_GetAck() )
 270   1              {
 271   2                      I2C_Stop();
 272   2                      return 1;
 273   2              }
 274   1      //發(fā)送重復(fù)起始條件
 275   1              I2C_Start();
 276   1      //發(fā)送從機地址
 277   1              SlaveAddr |= 0x01;
 278   1              I2C_Write(SlaveAddr);
 279   1              if ( I2C_GetAck() )
 280   1              {
 281   2                      I2C_Stop();
 282   2                      return 1;
 283   2              }
 284   1      //接收數(shù)據(jù)
 285   1              for (;;)
 286   1              {
 287   2                      *dat++ = I2C_Read();
 288   2                      if ( --Size == 0 )
 289   2                      {
 290   3                              I2C_PutAck(1);
 291   3                              break;
 292   3                      }
 293   2                      I2C_PutAck(0);
 294   2              }
 295   1      //接收完畢,停止I2C總線,并返回結(jié)果
 296   1              I2C_Stop();
 297   1              return 0;
 298   1      }
 299          
 300          
 301          /*
 302          函數(shù):I2C_Get()
 303          功能:主機通過I2C總線從從機接收1個字節(jié)的數(shù)據(jù)
C51 COMPILER V7.09   I2C                                                                   12/05/2007 16:14:14 PAGE 6   

 304          參數(shù):
 305                  SlaveAddr:從機地址(高7位是從機地址,最低位是讀標(biāo)志1)
 306                  SubAddr:從機的子地址
 307                  *dat:保存接收到的數(shù)據(jù)
 308          返回:
 309                  0:接收成功
 310                  1:在接收過程中出現(xiàn)異常
 311          */
 312          bit I2C_Get(unsigned char SlaveAddr, unsigned char SubAddr, char *dat)
 313          {
 314   1              return I2C_Gets(SlaveAddr,SubAddr,1,dat);
 315   1      }
 316          


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


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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线不卡| 美女网站视频久久| 日韩视频一区二区| www.亚洲激情.com| 免费成人你懂的| 亚洲女厕所小便bbb| 欧美不卡在线视频| 在线欧美日韩国产| 国产成人av在线影院| 日韩精品免费专区| 1024国产精品| 久久青草国产手机看片福利盒子 | 国产午夜精品一区二区 | 色琪琪一区二区三区亚洲区| 久久99深爱久久99精品| 亚洲国产日韩a在线播放| 亚洲嫩草精品久久| 国产成a人无v码亚洲福利| 日韩欧美中文字幕制服| 欧美图片一区二区三区| 国产主播一区二区| 国产精品国产馆在线真实露脸 | 国产91精品一区二区麻豆网站| 亚洲一区二区五区| 欧美激情一区二区三区不卡| 日韩精品综合一本久道在线视频| 在线观看日韩av先锋影音电影院| 成人午夜短视频| 韩国三级电影一区二区| 日本三级亚洲精品| 午夜精品影院在线观看| 亚洲中国最大av网站| 亚洲欧美电影一区二区| 最新国产成人在线观看| 国产精品天干天干在线综合| 久久久美女毛片| 久久影院午夜论| 日韩视频123| 日韩欧美一区二区久久婷婷| 91精品国模一区二区三区| 欧美日韩一二三区| 欧美三日本三级三级在线播放| 91福利在线看| 在线看日韩精品电影| 在线观看国产精品网站| 欧美午夜精品久久久久久孕妇| 91麻豆视频网站| 91蝌蚪porny成人天涯| 97久久精品人人澡人人爽| 99精品视频免费在线观看| www.亚洲国产| 欧美在线视频全部完| 欧美丝袜丝nylons| 4438x成人网最大色成网站| 欧美久久久久免费| 日韩欧美一级精品久久| 欧美一区二区美女| 久久午夜羞羞影院免费观看| 久久精品一区二区三区不卡牛牛| 久久精品在线观看| 亚洲精品中文在线| 日韩专区中文字幕一区二区| 免费精品视频在线| 国产真实精品久久二三区| 国产成人高清视频| 色综合久久66| 欧美这里有精品| 精品免费日韩av| 欧美国产日本韩| 一区二区三区在线高清| 日韩国产精品久久| 国产成人免费av在线| 91丝袜美腿高跟国产极品老师| 欧美日韩一区二区三区不卡| 欧美大片一区二区| 最新久久zyz资源站| 亚洲午夜激情网站| 久久精品久久99精品久久| 成人午夜伦理影院| 欧美高清精品3d| 国产午夜一区二区三区| 亚洲高清免费一级二级三级| 激情五月激情综合网| a亚洲天堂av| 欧美日本一区二区| 亚洲国产精品成人久久综合一区| 亚洲激情自拍视频| 精品一区二区精品| 91论坛在线播放| 精品久久久久一区| 亚洲激情校园春色| 韩国av一区二区| 91黄色免费版| 国产日韩欧美精品一区| 亚洲国产精品欧美一二99| 久久99国产乱子伦精品免费| 色综合天天综合色综合av| 日韩午夜av一区| 亚洲欧美另类小说视频| 国精产品一区一区三区mba桃花| 91蝌蚪国产九色| 国产人成一区二区三区影院| 日韩激情一二三区| 色综合网色综合| 国产欧美一区二区精品性色超碰| 午夜精品久久一牛影视| av成人免费在线| 久久综合精品国产一区二区三区| 视频在线观看国产精品| 99re亚洲国产精品| 国产日韩欧美精品在线| 精品一区免费av| 在线观看一区日韩| 亚洲欧洲性图库| 国产乱人伦偷精品视频免下载| 欧美日韩中文字幕一区二区| 亚洲欧洲日产国码二区| 国产精品一品二品| 欧美mv日韩mv| 青青草伊人久久| 欧美日韩成人综合天天影院| 最新久久zyz资源站| 成人在线综合网| ww久久中文字幕| 奇米色一区二区三区四区| 欧美日韩精品一区二区三区四区| 中文一区在线播放| 国产ts人妖一区二区| 久久影院午夜论| 国产九色sp调教91| 欧美精品一区二区蜜臀亚洲| 日韩影院在线观看| 欧美电影在哪看比较好| 午夜精品成人在线视频| 在线免费视频一区二区| 亚洲午夜久久久久久久久电影网| 在线观看视频一区| 亚洲妇熟xx妇色黄| 欧美人妇做爰xxxⅹ性高电影| 一二三四区精品视频| 91黄色免费观看| 无码av中文一区二区三区桃花岛| 欧美系列日韩一区| 午夜精品福利久久久| 欧美一卡在线观看| 精品在线播放免费| 国产欧美日韩一区二区三区在线观看| 国产在线国偷精品免费看| 久久久久国产精品麻豆| 成人性生交大片免费看中文网站| 国产欧美日韩麻豆91| 不卡视频一二三四| 一区二区三区日韩欧美精品| 在线观看国产91| 日韩高清不卡一区| 欧美精品一区二区三区蜜臀| 国产99久久久国产精品| 综合久久久久久| 91久久精品网| 午夜精彩视频在线观看不卡| 日韩欧美高清dvd碟片| 国产精品综合一区二区三区| 国产精品久久久久久久久久久免费看 | 欧美日韩免费观看一区三区| 日本女优在线视频一区二区| 久久女同精品一区二区| 99久精品国产| 男女男精品视频| 久久精品欧美日韩精品| 色综合视频在线观看| 丝袜美腿成人在线| 国产欧美日韩精品a在线观看| 色综合视频在线观看| 日韩电影免费一区| 国产亚洲精品资源在线26u| 成人h版在线观看| 亚洲视频综合在线| 日韩视频在线你懂得| 国产激情一区二区三区桃花岛亚洲| 欧美激情自拍偷拍| 欧美高清视频不卡网| 激情文学综合网| 亚洲人成小说网站色在线| 日韩片之四级片| 粉嫩在线一区二区三区视频| 一区二区三区四区亚洲| 91一区在线观看| 午夜私人影院久久久久| 久久综合久久综合九色| 国产成人午夜99999| 五月激情综合婷婷| 国产精品欧美精品| 欧美日韩一区成人| 91视频.com| 日韩av高清在线观看| 中文字幕av资源一区| 精品国产百合女同互慰| 国产一区二区三区四区在线观看| 亚洲精品videosex极品| 日本一区二区成人在线|