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

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

?? isr_i2c.lst

?? 51單片機C語言常用模塊與綜合系統設計實例精講
?? LST
?? 第 1 頁 / 共 3 頁
字號:
C51 COMPILER V7.06   ISR_I2C                                                               10/29/2006 14:34:14 PAGE 1   


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

stmt level    source

   1          #include <./Atmel/at89x52.h>
   2          #include    "source.h"
   3          #define         SDA_SET()               (SDA=1)
   4          #define         SDA_CLR()               (SDA=0)
   5          //#define       SDA_VAL()               (PDDR  &0x2)
   6          
   7          #define         SCL_SET()               (SCL=1)
   8          #define         SCL_CLR()               (SCL=0)
   9          
  10          
  11          I2Cdesc I2c;    //the device decriptor
  12          
  13          extern void I2cFinish(I2Cdesc *I2C_pt);
  14          unsigned int idata I2c_timer_cnt=0;
  15          void Init_I2c_Timer(unsigned int us){//MCLK@18.432MHz
  16   1              //(((MCLK/12))*(256-TH0))us
  17   1          TH0=TIMER0H;//20us
  18   1              TL0=TH0;
  19   1              I2c_timer_cnt=us/20;
  20   1              TR0=1; // let timer 0 run      // TCON /
  21   1      }
  22          void Start_I2c_Timer(unsigned int us){
  23   1              I2c_timer_cnt=us/20;
  24   1              TL0=TH0;
  25   1              TR0=1; // let timer 0 run      // TCON /
  26   1      }
  27          void Stop_I2c_Timer(void){
  28   1              TR0=0;
  29   1      }
  30          unsigned char SDA_VAL(void){
  31   1              return SDA;     
  32   1      }
  33          //*-----------------------------------------------------------------------------
  34          //* 函數名稱  : I2CWrite (I2Cdesc *I2C_pt, u_short loadAddress, u_char nbByte)
  35          //* Object    : I2C
  36          //* 輸入參數  : <I2C_pt> =   為I2C的描述指針,其結構定義在source.h中
  37          //*                           : loadAddress  為I2C的輸入的存儲單元的地址
  38          //*                           : nbByte       為要寫入I2C的字節數
  39          //* 輸出變量  : 無
  40          //* 功能       :把TxEnd中的數據的nbByte字節寫到loadAddress地址
  41          //*-----------------------------------------------------------------------------
  42          void I2CWrite (I2Cdesc *I2C_pt, unsigned int loadAddress, unsigned int nbByte){ 
  43   1          I2C_pt->state = NOK;
  44   1                I2C_pt->operate=WRITE_BIT;
  45   1                I2C_pt->Error=0;      
  46   1                                                                                  //* initialize state
  47   1          SCL_SET();                    //* set SCL line
  48   1          SDA_SET();              //* set SDA line
  49   1      
  50   1          I2C_pt->I2CByte = I2C_pt->deviceAddress | WRITE_BIT ;           //* get byte to transmit
  51   1          I2C_pt->loadAddress = loadAddress;                                      //* get address
  52   1          I2C_pt->mode = HIGH_ADDRESS_WRITE;                                      //* next mode
  53   1          I2C_pt->nbI2CByte = nbByte;                                                     //* get number of byte to transmit
  54   1          I2C_pt->countBit = 8;                                                                   //* initialize countBit
  55   1          I2C_pt->nb_ACK = 10;                                                                    //* initialize nb_ACK
C51 COMPILER V7.06   ISR_I2C                                                               10/29/2006 14:34:14 PAGE 2   

  56   1          //* change interrupt handler to I2CTxSendStartSDA
  57   1          I2C_pt->I2CTCHandler = I2CTxSendStartSDA;
  58   1          //* Enable RC compare interrupt
  59   1          Start_I2c_Timer(I2C_pt->Timer_Gap_us);//start Timer
  60   1      }
  61          //*-----------------------------------------------------------------------------
  62          //* 函數名稱       : I2CRead (I2Cdesc *I2C_pt, u_short loadAddress, u_char nbByte)
  63          //* Object         : I2C
  64          //* 輸入參數       : <I2C_pt> =  為I2C的描述指針,其結構定義在source.h中
  65          //*                                : loadAddress 為I2C的輸入的存儲單元的地址
  66          //*                                : nbByte      為要寫入I2C的字節數
  67          //* 輸出變量       : 無
  68          //* 功能           :從loadAddress地址中讀nbByted放到RxEnd中
  69          //*-----------------------------------------------------------------------------
  70          void I2CRead (I2Cdesc *I2C_pt, unsigned int loadAddress, unsigned int nbByte){
  71   1      
  72   1          I2C_pt->state = NOK;            //* initialize state
  73   1                I2C_pt->operate=READ_BIT;
  74   1                I2C_pt->Error=0;
  75   1      
  76   1          SCL_SET();                  //* set SCL line
  77   1          SDA_SET();            //* set SDA line
  78   1      
  79   1          I2C_pt->I2CByte = I2C_pt->deviceAddress | WRITE_BIT ;     //* get byte to read
  80   1          I2C_pt->loadAddress = loadAddress;                  //* get address
  81   1          I2C_pt->mode = HIGH_ADDRESS_READ;               //* next mode
  82   1          I2C_pt->nbI2CByte = nbByte;         //* get nb byte to transmit
  83   1      
  84   1          I2C_pt->countBit = 8;       //* initialize countBit
  85   1          I2C_pt->nb_ACK = 10;        //* initialize nb_ACK
  86   1          //* change interrupt handler to I2CTxSendStartSDA 
  87   1          I2C_pt->I2CTCHandler = I2CTxSendStartSDA;
  88   1          //* Enable RC compare interrupt
  89   1               Start_I2c_Timer(I2C_pt->Timer_Gap_us);//start Timer
  90   1      }
  91          
  92          //*-----------------------------------------------------------------------------
  93          //* 函數名稱       : I2CDeviceRead (I2Cdesc *I2C_pt)
  94          //* Object         : I2C
  95          //* 輸入參數       : <I2C_pt> =  為I2C的描述指針,其結構定義在source.h中
  96          //* 輸出變量       : 無
  97          //* 功能           :為在讀字節操作時通知I2C設備,以下的操作為讀操作
  98          //*-----------------------------------------------------------------------------
  99          void I2CDeviceRead (I2Cdesc *I2C_pt){
 100   1          SDA_SET();     //* set SDA line
 101   1          SCL_SET();      //* set SCL line
 102   1          
 103   1          I2C_pt->I2CByte = I2C_pt->deviceAddress | READ_BIT;      //* get byte to transmit
 104   1          I2C_pt->mode = DATA_READ;   //* next mode
 105   1          I2C_pt->countBit = 8;       //* initialize countBit
 106   1          I2C_pt->nb_ACK = 10;           //* initialize nb_ACK
 107   1          //* change interrupt handler to I2CTxSendStartSDA
 108   1          I2C_pt->I2CTCHandler = I2CTxSendStartSDA;
 109   1      }
 110          
 111          //*-----------------------------------------------------------------------------
 112          //* 函數名稱       : I2CDeviceRead (I2Cdesc *I2C_pt)
 113          //* Object         : I2C
 114          //* 輸入參數       : <I2C_pt> =  為I2C的描述指針,其結構定義在source.h中
 115          //* 輸出變量       : 無
 116          //* 功能           :為在寫字節操作時通知I2C設備,以下的操作為寫操作
 117          //*-----------------------------------------------------------------------------
C51 COMPILER V7.06   ISR_I2C                                                               10/29/2006 14:34:14 PAGE 3   

 118          void I2CDeviceWrite (I2Cdesc *I2C_pt){
 119   1          SDA_SET();;     //* set SDA line
 120   1          SCL_SET();;        //* set SCL line
 121   1      
 122   1          I2C_pt->I2CByte = I2C_pt->deviceAddress | WRITE_BIT;      //* get byte to transmit
 123   1          I2C_pt->mode = DATA;                //* next mode
 124   1          I2C_pt->countBit = 8;       //* initialize countBit
 125   1          I2C_pt->nb_ACK = 10;           //* initialize nb_ACK
 126   1          //* change interrupt handler to I2CTxSendStartSDA
 127   1          I2C_pt->I2CTCHandler = I2CTxSendStartSDA;
 128   1      }
 129          //*-----------------------------------------------------------------------------
 130          //* 函數名稱       : I2CTxSendByte (I2Cdesc *I2C_pt)
 131          //* Object         : I2C
 132          //* 輸入參數       : <I2C_pt> =  為I2C的描述指針,其結構定義在source.h中
 133          //* 輸出變量       : 無
 134          //* 功能           :為把狀態字節,數據,地址等字節寫到I2C設備中
 135          //*-----------------------------------------------------------------------------
 136          void I2CTxSendByte (I2Cdesc *I2C_pt){
 137   1      
 138   1          SDA_SET();;        //* set SDA line
 139   1          switch(I2C_pt->mode){           //* get byte to transmit
 140   2                  case DATA :     //Writing data byte now...
 141   2                      I2C_pt->I2CByte = *(I2C_pt->TxEnd++);
 142   2                  I2C_pt->nbI2CByte--;
 143   2                      if(I2C_pt->nbI2CByte == 0)
 144   2                      I2C_pt->mode = STOP;               //* next mode
 145   2                  break;
 146   2              case HIGH_ADDRESS_WRITE :   //Write high byte of address (Write operation)...
 147   2                      I2C_pt->I2CByte = (unsigned char)(I2C_pt->loadAddress >> 8);
 148   2                  I2C_pt->mode    = LOW_ADDRESS_WRITE;   //* next mode
 149   2                      break;
 150   2                  case LOW_ADDRESS_WRITE :    //Write low byte of address (Write operation)...
 151   2                      I2C_pt->I2CByte = (unsigned char) I2C_pt->loadAddress;
 152   2                      I2C_pt->mode    = DATA;                //* next mode
 153   2                      break;
 154   2                  case HIGH_ADDRESS_READ :    //Write high byte of address (Read operation)... 
 155   2                      I2C_pt->I2CByte = (unsigned char) (I2C_pt->loadAddress >> 8);
 156   2                  I2C_pt->mode    = LOW_ADDRESS_READ;    //* next mode
 157   2                      break;
 158   2                  case LOW_ADDRESS_READ :     //Write low byte of address (Read operation)...
 159   2                      I2C_pt->I2CByte = (unsigned char) I2C_pt->loadAddress;
 160   2                      I2C_pt->mode    = DEVICE_READ;         //* next mode
 161   2                      break;
 162   2          }
 163   1          I2C_pt->countBit = 8;         //* initialize countBit
 164   1          I2C_pt->nb_ACK   = 10;        //* initialize nb_ACK
 165   1          //* change interrupt handler to I2CTxSendBit
 166   1          I2C_pt->I2CTCHandler = I2CTxSendBit;
 167   1      }
 168          
 169          
 170          //*-----------------------------------------------------------------------------
 171          //* 函數名稱       : I2CTxSendBit (I2Cdesc *I2C_pt)
 172          //* Object         : I2C
 173          //* 輸入參數       : <I2C_pt> =  為I2C的描述指針,其結構定義在source.h中
 174          //* 輸出變量       : 無
 175          //* 功能           :根據發送數據的BIT位來判斷要發送什么數據在SDA線上
 176          //*-----------------------------------------------------------------------------
 177          void I2CTxSendBit (I2Cdesc *I2C_pt){
 178   1          unsigned char bit_val;
 179   1          SCL_CLR();              //* Clear SCL line
C51 COMPILER V7.06   ISR_I2C                                                               10/29/2006 14:34:14 PAGE 4   

 180   1          I2C_pt->countBit--;                                                                     //* decrement countBit
 181   1          if(I2C_pt->countBit >= 0){                              //* if bit counter = 0 ...
 182   2                      bit_val = (I2C_pt->I2CByte >> I2C_pt->countBit) & 1;    //* get bit to transfert
 183   2                      //* Send 0 or 1
 184   2                      if (bit_val){
 185   3                  SDA_SET();          //* Set SDA line
 186   3                      }
 187   2         else{
 188   3                          SDA_CLR();      //* Clear SDA line
 189   3                      }
 190   2                      //* change interrupt handler to I2CTxSetSCL

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区欧美激情| 欧美精品欧美精品系列| 五月婷婷久久丁香| 日本一区二区在线不卡| 国产 日韩 欧美大片| 视频一区二区国产| 亚洲一二三区在线观看| 国产精品理论在线观看| 在线欧美日韩国产| 91捆绑美女网站| 99久久综合精品| 亚洲电影一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 久久久91精品国产一区二区三区| 精品精品国产高清a毛片牛牛 | 白白色亚洲国产精品| 蜜桃视频免费观看一区| 亚洲国产sm捆绑调教视频| 一区二区三区免费网站| 亚洲精品欧美综合四区| 一区二区三区在线免费观看| 亚洲免费观看高清| 亚洲国产精品嫩草影院| 亚洲一区二区在线观看视频 | 亚洲在线中文字幕| 亚洲精品美国一| 夜夜亚洲天天久久| 婷婷成人综合网| 美女视频黄久久| 国产成人av资源| 91在线无精精品入口| 91搞黄在线观看| 欧美亚洲国产bt| 日韩亚洲欧美一区| 国产日韩三级在线| 精品久久久久久亚洲综合网 | 欧美在线三级电影| 在线成人av网站| 欧美刺激午夜性久久久久久久| 欧美一级二级在线观看| 久久这里只有精品首页| 亚洲婷婷国产精品电影人久久| 一区二区三区精密机械公司| 污片在线观看一区二区| 国内精品不卡在线| 成人一道本在线| 欧美色图天堂网| 欧美精品在线一区二区三区| 久久嫩草精品久久久久| 亚洲特黄一级片| 中文字幕人成不卡一区| 亚洲成在人线免费| 国产一区二区三区四区五区美女| 欧美在线观看一区二区| 国产三级精品三级在线专区| 日本欧洲一区二区| 欧美中文字幕亚洲一区二区va在线| 国产偷国产偷精品高清尤物| 日本欧美一区二区在线观看| 欧美精品一二三区| 亚洲大片在线观看| 欧美在线观看一二区| 樱花草国产18久久久久| 99riav一区二区三区| 国产精品污网站| 国产91在线|亚洲| 亚洲精品在线三区| 青娱乐精品视频| 91精品国模一区二区三区| 亚洲成a人v欧美综合天堂| 欧洲另类一二三四区| 一区二区高清在线| 色悠悠久久综合| 亚洲精品一卡二卡| 91久久一区二区| 一片黄亚洲嫩模| 欧美日韩激情一区| 日韩电影免费一区| 日韩丝袜美女视频| 国产综合色视频| 久久九九全国免费| eeuss鲁一区二区三区| 亚洲男人天堂av网| 在线视频一区二区三| 一区二区三区欧美视频| 欧美片网站yy| 激情久久五月天| 国产精品天美传媒| 91浏览器在线视频| 三级影片在线观看欧美日韩一区二区 | 欧美一区二区三区在线观看 | 免费在线观看视频一区| 久久品道一品道久久精品| 国产福利精品一区| 亚洲精品视频一区二区| 日韩一区二区在线看片| 国产精品自拍一区| 亚洲日本va在线观看| 717成人午夜免费福利电影| 日韩av高清在线观看| 欧美高清在线一区| 欧美性视频一区二区三区| 日韩成人精品视频| 欧美极品美女视频| 91精品欧美一区二区三区综合在 | 蜜桃久久av一区| 国产精品网站导航| 欧美日韩一本到| 国产一区二区在线影院| 亚洲激情第一区| 精品久久久久久久人人人人传媒| 国产成人免费视频网站| 亚洲永久精品大片| 久久久久久一级片| 欧美丰满美乳xxx高潮www| 国产成人综合网| 日本系列欧美系列| 一区二区三区资源| 久久九九国产精品| 日韩欧美一区在线观看| 91免费看`日韩一区二区| 精品一区二区在线观看| 亚洲va国产va欧美va观看| 国产日韩三级在线| 日韩欧美国产成人一区二区| 日本韩国一区二区三区视频| 国产成人小视频| 另类综合日韩欧美亚洲| 亚洲一区二区三区激情| 国产精品你懂的| 久久精品亚洲精品国产欧美kt∨| 欧美精品99久久久**| 91浏览器打开| 国产成人精品一区二| 精品一二线国产| 青娱乐精品视频| 麻豆精品久久久| 蜜桃视频第一区免费观看| 亚洲成人综合在线| 亚洲午夜久久久久中文字幕久| 亚洲人xxxx| 亚洲欧美乱综合| 亚洲女同一区二区| 亚洲男人的天堂一区二区| 最新高清无码专区| 亚洲人成网站影音先锋播放| 亚洲天堂网中文字| 亚洲免费观看高清完整版在线观看 | 久久精品免费观看| 日本午夜精品视频在线观看| 天天影视涩香欲综合网| 亚洲成av人片一区二区梦乃| 亚洲国产日日夜夜| 日日夜夜精品视频免费| 天天综合色天天综合色h| 日本不卡一区二区三区高清视频| 亚洲综合色成人| 丝袜脚交一区二区| 免费精品视频在线| 久久99久久精品欧美| 国精产品一区一区三区mba视频| 精品一区二区三区香蕉蜜桃| 国产自产v一区二区三区c| 国产一区二区三区在线观看免费视频| 国模无码大尺度一区二区三区| 国产一区二区三区在线观看免费| 国产.精品.日韩.另类.中文.在线.播放| 国产制服丝袜一区| www.亚洲在线| 欧美伦理电影网| 欧美一级免费观看| 久久品道一品道久久精品| 成人欧美一区二区三区视频网页| 亚洲老司机在线| 婷婷国产v国产偷v亚洲高清| 久久成人免费日本黄色| 成人av动漫网站| 欧美日高清视频| 久久久久久影视| 性感美女久久精品| 国产一区二区三区免费| 色婷婷一区二区三区四区| 制服丝袜中文字幕一区| 国产婷婷一区二区| 亚洲一区二区综合| 国产99久久久精品| 欧美三级欧美一级| 国产精品视频在线看| 午夜精品免费在线| 成人国产精品免费观看视频| 欧美日韩激情一区二区三区| 国产日韩精品一区二区浪潮av| 亚洲色图19p| 国产麻豆成人传媒免费观看| 日本韩国视频一区二区| 久久综合国产精品| 日韩电影在线一区| 91麻豆免费看片| 中文字幕精品在线不卡| 麻豆精品视频在线观看视频|