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

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

?? 51 c

?? 單片機模塊C程序大全
??
字號:
C51 COMPILER V7.06   I2C                                                                   06/08/2010 12:52:36 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/08/2010 12:52:36 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/08/2010 12:52:36 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            
 160            SDA=0;     
 161            _Nop();
 162            _Nop();
 163            _Nop();      
 164            SCL=1;
 165            _Nop();
 166            _Nop();              //時鐘低電平周期大于4μ
 167            _Nop();
 168            _Nop();
 169            _Nop();  
 170            SCL=0;               //清時鐘線,鉗住I2C總線以便繼續接收
 171            _Nop();
 172            _Nop();    
 173          }*/
 174          /*----------------------------------------------------------------
 175                               非應答子函數
 176          原型:  void NoAck_I2c(void);
 177           
 178          ----------------------------------------------------------------*/
 179          void NoAck_I2c(void)
C51 COMPILER V7.06   I2C                                                                   06/08/2010 12:52:36 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             unsigned char i;
 232           for(i=0;i<no;i++)
 233              { 
 234             Start_I2c();               //啟動總線
 235             SendByte(sla);             //發送器件地址
 236               if(ack==0)return(0);
 237             SendByte(suba);            //發送器件子地址
 238               if(ack==0)return(0); 
 239           
 240               SendByte(*s);            //發送數據
 241                 if(ack==0)return(0);
C51 COMPILER V7.06   I2C                                                                   06/08/2010 12:52:36 PAGE 5   

 242               Stop_I2c();                  //結束總線
 243                   DelayMs(1);               //必須延時等待芯片內部自動處理數據完畢
 244                   s++;
 245                   suba++;
 246              } 
 247            return(1);
 248          }
 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             unsigned char i;
 281          
 282             Start_I2c();               //啟動總線
 283             SendByte(sla);             //發送器件地址
 284               if(ack==0)return(0);
 285             SendByte(suba);            //發送器件子地址
 286               if(ack==0)return(0);
 287          
 288             Start_I2c();
 289             SendByte(sla+1);
 290                if(ack==0)return(0);
 291          
 292            for(i=0;i<no-1;i++)
 293              { 
 294               *s=RcvByte();              //發送數據
 295                Ack_I2c();                //發送就答位 
 296               s++;
 297              } 
 298             *s=RcvByte();
 299              NoAck_I2c();                 //發送非應位
 300              Stop_I2c();                    //結束總線
 301            return(1);
 302          }
 303          */
C51 COMPILER V7.06   I2C                                                                   06/08/2010 12:52:36 PAGE 6   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    152    ----
   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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆极品一区二区三区| 国产激情一区二区三区四区| 开心九九激情九九欧美日韩精美视频电影| 国产风韵犹存在线视精品| 欧美亚洲综合色| 成人免费在线播放视频| 国产成人在线免费观看| 日韩亚洲欧美一区二区三区| 亚洲二区在线观看| 91国模大尺度私拍在线视频| 国产精品久久久久影视| 国产精品99久| 久久久影院官网| 激情综合一区二区三区| 日韩精品一区在线观看| 婷婷六月综合亚洲| 欧美久久久一区| 午夜精品一区在线观看| 欧美私模裸体表演在线观看| 亚洲欧美日韩在线播放| 色婷婷精品久久二区二区蜜臂av| 久久久久久久久一| 国产美女视频91| 精品福利一二区| 国产精品正在播放| 久久精品综合网| 风间由美一区二区三区在线观看| 精品久久一二三区| 韩国欧美国产1区| 精品国产麻豆免费人成网站| 久久精品国产99久久6| 日韩一二三四区| 激情偷乱视频一区二区三区| 精品日产卡一卡二卡麻豆| 激情综合网激情| 国产三级精品在线| 不卡一区中文字幕| 亚洲精品视频免费观看| 欧美日韩免费一区二区三区| 亚洲18色成人| 日韩视频在线一区二区| 久99久精品视频免费观看| 久久综合色8888| 成人h精品动漫一区二区三区| 国产精品福利影院| 欧美性一级生活| 久久国产麻豆精品| 国产视频911| 色天天综合久久久久综合片| 亚洲成人av一区二区| 日韩精品一区二区在线| 成人精品免费看| 一区二区三区欧美亚洲| 日韩欧美成人一区| 成人黄色小视频| 天天做天天摸天天爽国产一区| 91精品国产麻豆| 国产91精品在线观看| 伊人开心综合网| 久久亚洲精品国产精品紫薇| 99久久婷婷国产综合精品电影| 亚洲一卡二卡三卡四卡五卡| 欧美mv日韩mv亚洲| www.亚洲激情.com| av福利精品导航| 午夜影院久久久| 欧美激情综合在线| 欧美日韩亚洲高清一区二区| 国产成人小视频| 亚洲成精国产精品女| 中文字幕+乱码+中文字幕一区| 一本大道久久a久久精二百| 美女任你摸久久| 亚洲精品日韩一| 久久午夜羞羞影院免费观看| 日本丰满少妇一区二区三区| 激情综合网av| 亚洲成人午夜影院| 中文字幕中文字幕在线一区 | 日本精品视频一区二区三区| 毛片不卡一区二区| 亚洲柠檬福利资源导航| 久久嫩草精品久久久精品| 欧美日本国产一区| 99久久精品国产导航| 国产一区二区在线看| 亚洲小少妇裸体bbw| 亚洲国产高清aⅴ视频| 日韩视频免费观看高清完整版在线观看| 国产精品一区二区三区四区| 日韩福利视频导航| 亚洲国产精品一区二区久久恐怖片| 国产亚洲精品中文字幕| 日韩一区二区视频在线观看| 精品污污网站免费看| 色先锋资源久久综合| 成人黄色免费短视频| 国产精品综合二区| 国产九色精品成人porny| 蜜桃精品视频在线| 视频一区视频二区中文字幕| 亚洲女人****多毛耸耸8| 国产精品成人一区二区艾草 | 一区二区三区日韩欧美精品| 国产精品视频看| 国产欧美一区二区精品婷婷| 精品盗摄一区二区三区| 精品国产污污免费网站入口 | 极品少妇xxxx精品少妇| 蜜臀久久久久久久| 免费观看成人av| 秋霞午夜av一区二区三区| 偷拍一区二区三区四区| 亚洲h动漫在线| 日本不卡一区二区| 日本中文字幕不卡| 久色婷婷小香蕉久久| 精品亚洲成a人| 国产成人精品免费网站| 国产高清无密码一区二区三区| 国产真实乱偷精品视频免| 国产精品99久久久久久久vr| 成人丝袜视频网| 色视频一区二区| 69p69国产精品| 欧美tk—视频vk| 国产精品污网站| 亚洲精品成人精品456| 午夜精品福利一区二区三区av | 日韩视频中午一区| 日韩一级黄色大片| 久久久亚洲综合| 亚洲视频在线一区二区| 亚洲午夜在线电影| 免费高清成人在线| 国产精品66部| 一本一道久久a久久精品综合蜜臀| 日本福利一区二区| 亚洲精品一区二区三区在线观看 | 午夜欧美大尺度福利影院在线看| 日本欧美加勒比视频| 国产美女在线观看一区| 一本久道久久综合中文字幕| 91精品国产麻豆国产自产在线| 欧美韩国日本综合| 亚洲无线码一区二区三区| 激情欧美日韩一区二区| 色婷婷久久久亚洲一区二区三区 | 欧美日韩精品三区| 久久免费国产精品| 亚洲国产毛片aaaaa无费看| 麻豆国产91在线播放| 99riav一区二区三区| 欧美一级欧美三级在线观看| 中文字幕亚洲精品在线观看 | 成人教育av在线| 6080yy午夜一二三区久久| 国产精品网站在线观看| 免费久久精品视频| 一本久久综合亚洲鲁鲁五月天 | 精品欧美一区二区久久| 亚洲欧美另类久久久精品2019| 精品亚洲成av人在线观看| 在线免费观看一区| 国产女主播视频一区二区| 日本女人一区二区三区| 91在线视频播放地址| 日韩女优毛片在线| 亚洲一卡二卡三卡四卡| 成人国产一区二区三区精品| 日韩欧美国产综合| 亚洲二区在线视频| 色综合天天综合色综合av| 久久精品视频一区| 久久99精品久久只有精品| 欧美三级日韩三级国产三级| 亚洲欧美综合网| 成人午夜大片免费观看| 久久精品免视看| 激情丁香综合五月| 欧美一区二区视频免费观看| 亚洲精品欧美专区| 色婷婷久久99综合精品jk白丝| 国产午夜精品一区二区三区四区| 蓝色福利精品导航| 欧美一区二区三区小说| 亚洲成av人片一区二区| 欧美在线视频不卡| 一区二区三区欧美日| 色网综合在线观看| 亚洲精品国产无天堂网2021 | 国产精品123| 久久九九久精品国产免费直播| 精品无人区卡一卡二卡三乱码免费卡| 欧美日韩成人综合| 丝瓜av网站精品一区二区| 91精品国产综合久久久蜜臀图片| 亚洲va欧美va人人爽| 5858s免费视频成人| 麻豆成人在线观看|