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

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

?? 51 c

?? 單片機模塊C程序大全
??
字號:
C51 COMPILER V7.06   I2C                                                                   06/15/2010 22:11:02 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN .\obj\i2c.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE i2c.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\i2c.lst) OBJECT(.\obj\i2c.obj)

stmt level    source

   1          /*-----------------------------------------------
   2            名稱:IIC協議 
   3            論壇:www.doflye.net
   4            編寫:shifang
   5            修改:無
   6            內容:函數是采用軟件延時的方法產生SCL脈沖,固對高晶振頻率要作 一定的修改....(本例是1us機器
   7                          周期,即晶振頻率要小于12MHZ)
   8          ------------------------------------------------*/  
   9            
  10                        
  11          #include "i2c.h"
  12          #include "delay.h"
  13          
  14          #define  _Nop()  _nop_()  //定義空指令
  15                                   
  16          bit ack;                      //應答標志位
  17          
  18          sbit SDA=P2^1;
  19          sbit SCL=P2^0;
  20          
  21          /*------------------------------------------------
  22                              啟動總線
  23          ------------------------------------------------*/
  24          void Start_I2c()
  25          {
  26   1        SDA=1;   //發送起始條件的數據信號
  27   1        _Nop();
  28   1        SCL=1;
  29   1        _Nop();    //起始條件建立時間大于4.7us,延時
  30   1        _Nop();
  31   1        _Nop();
  32   1        _Nop();
  33   1        _Nop();    
  34   1        SDA=0;     //發送起始信號
  35   1        _Nop();    //起始條件鎖定時間大于4μ
  36   1        _Nop();
  37   1        _Nop();
  38   1        _Nop();
  39   1        _Nop();       
  40   1        SCL=0;    //鉗住I2C總線,準備發送或接收數據
  41   1        _Nop();
  42   1        _Nop();
  43   1      }
  44          /*------------------------------------------------
  45                              結束總線
  46          ------------------------------------------------*/
  47          void Stop_I2c()
  48          {
  49   1        SDA=0;    //發送結束條件的數據信號
  50   1        _Nop();   //發送結束條件的時鐘信號
  51   1        SCL=1;    //結束條件建立時間大于4μ
  52   1        _Nop();
  53   1        _Nop();
  54   1        _Nop();
  55   1        _Nop();
C51 COMPILER V7.06   I2C                                                                   06/15/2010 22:11:02 PAGE 2   

  56   1        _Nop();
  57   1        SDA=1;    //發送I2C總線結束信號
  58   1        _Nop();
  59   1        _Nop();
  60   1        _Nop();
  61   1        _Nop();
  62   1      }
  63          
  64          
  65          
  66          
  67          /*----------------------------------------------------------------
  68                           字節數據傳送函數               
  69          函數原型: void  SendByte(unsigned char c);
  70          功能:  將數據c發送出去,可以是地址,也可以是數據,發完后等待應答,并對
  71               此狀態位進行操作.(不應答或非應答都使ack=0 假)     
  72               發送數據正常,ack=1; ack=0表示被控器無應答或損壞。
  73          ------------------------------------------------------------------*/
  74          void  SendByte(unsigned char c)
  75          {
  76   1       unsigned char BitCnt;
  77   1       
  78   1       for(BitCnt=0;BitCnt<8;BitCnt++)  //要傳送的數據長度為8位
  79   1          {
  80   2           if((c<<BitCnt)&0x80)SDA=1;   //判斷發送位
  81   2             else  SDA=0;                
  82   2           _Nop();
  83   2           SCL=1;               //置時鐘線為高,通知被控器開始接收數據位
  84   2            _Nop(); 
  85   2            _Nop();             //保證時鐘高電平周期大于4μ
  86   2            _Nop();
  87   2            _Nop();
  88   2            _Nop();         
  89   2           SCL=0; 
  90   2          }
  91   1          
  92   1          _Nop();
  93   1          _Nop();
  94   1          SDA=1;               //8位發送完后釋放數據線,準備接收應答位
  95   1          _Nop();
  96   1          _Nop();   
  97   1          SCL=1;
  98   1          _Nop();
  99   1          _Nop();
 100   1          _Nop();
 101   1          if(SDA==1)ack=0;     
 102   1             else ack=1;        //判斷是否接收到應答信號
 103   1          SCL=0;
 104   1          _Nop();
 105   1          _Nop();
 106   1      }
 107          
 108          
 109          
 110          
 111          
 112          
 113          
 114          /*----------------------------------------------------------------
 115                           字節數據傳送函數               
 116          函數原型: unsigned char  RcvByte();
 117          功能:  用來接收從器件傳來的數據,并判斷總線錯誤(不發應答信號),
C51 COMPILER V7.06   I2C                                                                   06/15/2010 22:11:02 PAGE 3   

 118               發完后請用應答函數。  
 119          ------------------------------------------------------------------*/    
 120          unsigned char  RcvByte()
 121          {
 122   1        unsigned char retc;
 123   1        unsigned char BitCnt;
 124   1        
 125   1        retc=0; 
 126   1        SDA=1;             //置數據線為輸入方式
 127   1        for(BitCnt=0;BitCnt<8;BitCnt++)
 128   1            {
 129   2              _Nop();           
 130   2              SCL=0;       //置時鐘線為低,準備接收數據位
 131   2              _Nop();
 132   2              _Nop();      //時鐘低電平周期大于4.7us
 133   2              _Nop();
 134   2              _Nop();
 135   2              _Nop();
 136   2              SCL=1;       //置時鐘線為高使數據線上數據有效
 137   2              _Nop();
 138   2              _Nop();
 139   2              retc=retc<<1;
 140   2              if(SDA==1)retc=retc+1; //讀數據位,接收的數據位放入retc中
 141   2              _Nop();
 142   2              _Nop(); 
 143   2            }
 144   1        SCL=0;    
 145   1        _Nop();
 146   1        _Nop();
 147   1        return(retc);
 148   1      }
 149          
 150          
 151          
 152          /*----------------------------------------------------------------
 153                               應答子函數
 154          原型:  void Ack_I2c(void);
 155           
 156          ----------------------------------------------------------------*/
 157          void Ack_I2c(void)
 158          {
 159   1        
 160   1        SDA=0;     
 161   1        _Nop();
 162   1        _Nop();
 163   1        _Nop();      
 164   1        SCL=1;
 165   1        _Nop();
 166   1        _Nop();              //時鐘低電平周期大于4μ
 167   1        _Nop();
 168   1        _Nop();
 169   1        _Nop();  
 170   1        SCL=0;               //清時鐘線,鉗住I2C總線以便繼續接收
 171   1        _Nop();
 172   1        _Nop();    
 173   1      }
 174          /*----------------------------------------------------------------
 175                               非應答子函數
 176          原型:  void NoAck_I2c(void);
 177           
 178          ----------------------------------------------------------------*/
 179          void NoAck_I2c(void)
C51 COMPILER V7.06   I2C                                                                   06/15/2010 22:11:02 PAGE 4   

 180          {
 181   1        
 182   1        SDA=1;
 183   1        _Nop();
 184   1        _Nop();
 185   1        _Nop();      
 186   1        SCL=1;
 187   1        _Nop();
 188   1        _Nop();              //時鐘低電平周期大于4μ
 189   1        _Nop();
 190   1        _Nop();
 191   1        _Nop();  
 192   1        SCL=0;                //清時鐘線,鉗住I2C總線以便繼續接收
 193   1        _Nop();
 194   1        _Nop();    
 195   1      }
 196          
 197          
 198          
 199          
 200          
 201          
 202          /*----------------------------------------------------------------
 203                              向無子地址器件發送字節數據函數               
 204          函數原型: bit  ISendByte(unsigned char sla,ucahr c);  
 205          功能:     從啟動總線到發送地址,數據,結束總線的全過程,從器件地址sla.
 206                     如果返回1表示操作成功,否則操作有誤。
 207          注意:    使用前必須已結束總線。
 208          ----------------------------------------------------------------*/
 209          /*bit ISendByte(unsigned char sla,unsigned char c)
 210          {
 211             Start_I2c();               //啟動總線
 212             SendByte(sla);             //發送器件地址
 213               if(ack==0)return(0);
 214             SendByte(c);               //發送數據
 215               if(ack==0)return(0);
 216            Stop_I2c();                 //結束總線
 217            return(1);
 218          }
 219          */
 220          
 221          /*----------------------------------------------------------------
 222                              向有子地址器件發送多字節數據函數               
 223          函數原型: bit  ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);  
 224          功能:     從啟動總線到發送地址,子地址,數據,結束總線的全過程,從器件
 225                    地址sla,子地址suba,發送內容是s指向的內容,發送no個字節。
 226                     如果返回1表示操作成功,否則操作有誤。
 227          注意:    使用前必須已結束總線。
 228          ----------------------------------------------------------------*/
 229          bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)
 230          {
 231   1         unsigned char i;
 232   1       for(i=0;i<no;i++)
 233   1          { 
 234   2         Start_I2c();               //啟動總線
 235   2         SendByte(sla);             //發送器件地址
 236   2           if(ack==0)return(0);
 237   2         SendByte(suba);            //發送器件子地址
 238   2           if(ack==0)return(0); 
 239   2       
 240   2           SendByte(*s);            //發送數據
 241   2             if(ack==0)return(0);
C51 COMPILER V7.06   I2C                                                                   06/15/2010 22:11:02 PAGE 5   

 242   2           Stop_I2c();                  //結束總線
 243   2               DelayMs(1);               //必須延時等待芯片內部自動處理數據完畢
 244   2               s++;
 245   2               suba++;
 246   2          } 
 247   1        return(1);
 248   1      }
 249          
 250          /*----------------------------------------------------------------
 251                              向無子地址器件讀字節數據函數               
 252          函數原型: bit  IRcvByte(unsigned char sla,ucahr *c);  
 253          功能:     從啟動總線到發送地址,讀數據,結束總線的全過程,從器件地
 254                    址sla,返回值在c.
 255                     如果返回1表示操作成功,否則操作有誤。
 256          注意:    使用前必須已結束總線。
 257          ----------------------------------------------------------------*/
 258          /*bit IRcvByte(unsigned char sla,unsigned char *c)
 259          {
 260             Start_I2c();                //啟動總線
 261             SendByte(sla+1);            //發送器件地址
 262               if(ack==0)return(0);
 263             *c=RcvByte();               //讀取數據
 264               NoAck_I2c();              //發送非就答位
 265               Stop_I2c();               //結束總線
 266            return(1);
 267          }
 268          
 269          */
 270          /*----------------------------------------------------------------
 271                              向有子地址器件讀取多字節數據函數               
 272          函數原型: bit  ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);  
 273          功能:     從啟動總線到發送地址,子地址,讀數據,結束總線的全過程,從器件
 274                    地址sla,子地址suba,讀出的內容放入s指向的存儲區,讀no個字節。
 275                     如果返回1表示操作成功,否則操作有誤。
 276          注意:    使用前必須已結束總線。
 277          ----------------------------------------------------------------*/
 278          bit IRcvStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)
 279          {
 280   1         unsigned char i;
 281   1      
 282   1         Start_I2c();               //啟動總線
 283   1         SendByte(sla);             //發送器件地址
 284   1           if(ack==0)return(0);
 285   1         SendByte(suba);            //發送器件子地址
 286   1           if(ack==0)return(0);
 287   1      
 288   1         Start_I2c();
 289   1         SendByte(sla+1);
 290   1            if(ack==0)return(0);
 291   1      
 292   1        for(i=0;i<no-1;i++)
 293   1          { 
 294   2           *s=RcvByte();              //發送數據
 295   2            Ack_I2c();                //發送就答位 
 296   2           s++;
 297   2          } 
 298   1         *s=RcvByte();
 299   1          NoAck_I2c();                 //發送非應位
 300   1          Stop_I2c();                    //結束總線
 301   1        return(1);
 302   1      }
 303          
C51 COMPILER V7.06   I2C                                                                   06/15/2010 22:11:02 PAGE 6   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    340    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      13
   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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲嫩草精品久久| 亚洲欧美中日韩| 日韩欧美中文字幕精品| 欧美日韩精品一区二区| 欧美中文字幕一二三区视频| 色哟哟一区二区在线观看| 91国内精品野花午夜精品| 精品视频免费在线| 欧美一区二区三区啪啪| 欧美大片拔萝卜| 欧美精品一区男女天堂| 国产女主播一区| 亚洲欧美电影一区二区| 丝袜诱惑亚洲看片| 国产在线视频精品一区| 懂色av一区二区在线播放| 91啦中文在线观看| 欧美高清精品3d| 国产亚洲成aⅴ人片在线观看| 欧美高清在线视频| 亚洲午夜免费视频| 久久国产精品一区二区| 成人av电影免费在线播放| 在线观看一区不卡| 欧美一区二区女人| 欧美国产综合色视频| 亚洲免费伊人电影| 精品亚洲国内自在自线福利| 本田岬高潮一区二区三区| 欧美三级午夜理伦三级中视频| 精品va天堂亚洲国产| 亚洲欧美日韩一区二区三区在线观看 | 日韩av一区二区三区四区| 久久成人综合网| 91免费看视频| 欧美哺乳videos| 伊人性伊人情综合网| 国产在线日韩欧美| 欧美亚洲国产怡红院影院| 久久亚洲精品小早川怜子| 一区二区三区日韩精品| 国产一区二区三区日韩| 欧美日韩精品高清| 国产精品女主播av| 久久97超碰国产精品超碰| 日本高清无吗v一区| 久久久www免费人成精品| 久久精品国产亚洲一区二区三区| 色综合天天狠狠| 精品成人一区二区三区四区| 亚洲妇熟xx妇色黄| 成人av午夜电影| 2022国产精品视频| 日韩电影一区二区三区四区| 日本精品裸体写真集在线观看| 国产色产综合产在线视频| 免费成人在线观看视频| 日本高清不卡一区| 1区2区3区国产精品| 国产一区二区在线看| 欧美一区二区三区在线电影| 亚洲丰满少妇videoshd| 色综合av在线| 亚洲私人黄色宅男| 成人黄色网址在线观看| 国产视频911| 丰满亚洲少妇av| 国产精品日韩精品欧美在线| 国产一区二区调教| 精品国产免费人成在线观看| 三级在线观看一区二区| 在线观看不卡一区| 亚洲精品自拍动漫在线| 日本高清不卡在线观看| 一区二区三国产精华液| 97se狠狠狠综合亚洲狠狠| 亚洲视频在线观看三级| 一本一道久久a久久精品综合蜜臀| 国产精品久久久久久久裸模| 成人自拍视频在线观看| 国产精品高潮久久久久无| 久久网站热最新地址| 国内一区二区在线| 久久久精品免费免费| 岛国精品在线播放| 自拍偷拍国产亚洲| 欧美丝袜丝nylons| 奇米在线7777在线精品| 久久色视频免费观看| 成人理论电影网| 一区二区三区精品在线观看| 欧美片网站yy| 韩国v欧美v亚洲v日本v| 国产精品久久久久影院亚瑟 | 日韩二区三区在线观看| 精品日韩一区二区三区| 福利一区福利二区| 一区二区成人在线视频| 欧美成人三级在线| 成人高清av在线| 亚洲国产精品欧美一二99| 精品欧美久久久| 91小视频在线观看| 日本色综合中文字幕| 五月激情综合色| 久久久久久久久久久久久女国产乱 | 欧美一区二区二区| 国产一区二区按摩在线观看| 亚洲同性同志一二三专区| 欧美色综合网站| 国产成人精品1024| 亚洲国产精品视频| 中文字幕精品一区二区三区精品| 欧美日韩综合在线| 丁香亚洲综合激情啪啪综合| 亚洲午夜一区二区三区| 欧美高清在线精品一区| 欧美一级黄色录像| 一本一本久久a久久精品综合麻豆| 蜜臀av性久久久久蜜臀aⅴ流畅 | 精品一区二区免费看| 亚洲欧美色一区| 久久色成人在线| 91精品国产综合久久久久久| www.亚洲免费av| 国产乱色国产精品免费视频| 亚洲一区二区精品久久av| 国产精品久久久久三级| 久久亚洲精品国产精品紫薇| 欧美人妇做爰xxxⅹ性高电影| 99re热这里只有精品视频| 狠狠色2019综合网| 日韩福利视频导航| 亚洲高清免费视频| 亚洲自拍另类综合| 亚洲欧洲精品一区二区精品久久久| 精品噜噜噜噜久久久久久久久试看| 在线日韩av片| 色综合 综合色| 色综合一区二区| 欧日韩精品视频| 成人黄色av电影| 风间由美一区二区三区在线观看 | 国产亚洲一二三区| 91精品在线麻豆| 欧美精品久久久久久久久老牛影院| 91丨九色丨蝌蚪富婆spa| www.亚洲人| 色天使色偷偷av一区二区| 91玉足脚交白嫩脚丫在线播放| 东方aⅴ免费观看久久av| 国产99久久精品| bt7086福利一区国产| 成人免费看的视频| 成人av免费在线播放| 99精品欧美一区二区三区小说| 成人激情免费网站| 91在线观看视频| 在线观看视频一区二区欧美日韩| 一本一本大道香蕉久在线精品 | 色综合久久综合网97色综合| 99久久婷婷国产综合精品电影| 波波电影院一区二区三区| 色拍拍在线精品视频8848| 色吧成人激情小说| 91精品国产综合久久蜜臀| 日韩精品自拍偷拍| 国产欧美日韩综合| 亚洲视频在线观看三级| 亚洲国产成人91porn| 美女视频黄久久| 国产91清纯白嫩初高中在线观看| 91丨porny丨蝌蚪视频| 欧美日韩国产成人在线91| 日韩欧美在线综合网| 日本一区二区综合亚洲| 亚洲乱码国产乱码精品精可以看| 亚洲国产视频一区二区| 精品一区二区在线观看| 9i在线看片成人免费| 欧美男生操女生| 久久精品日产第一区二区三区高清版 | 久久女同精品一区二区| 国产精品成人免费精品自在线观看 | 亚洲综合男人的天堂| 麻豆91小视频| 成人性视频免费网站| 69精品人人人人| 欧美国产丝袜视频| 午夜激情一区二区三区| 国产成人午夜精品5599| 欧美日韩一级片网站| 久久久五月婷婷| 午夜视频一区在线观看| 岛国一区二区在线观看| 欧美一区二区三区的| 亚洲视频免费在线观看| 蜜桃精品视频在线| 色综合久久中文字幕| 26uuu久久天堂性欧美|