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

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

?? i2cint.c

?? ARM7的LPC2200非常實用的圖形界面接口
?? C
字號:
/****************************************************************************
* 文件名:I2CINT.C
* 功能:硬件I2C軟件包,利用中斷方式操作。
* 說明:主程序要配置好I2C總線接口(I2C引腳功能和I2C中斷,并已使能I2C主模式)
****************************************************************************/
#include  "config.h" 

/* 以下為I2C操作時所需要的變量 */
volatile  uint8  I2C_sla;           // 從機地址(即器件地址)
volatile  uint8  I2C_suba;          // 子地址
volatile  uint8  *I2C_buf;          // 數據緩沖區指針 (讀操作時會被更改)
volatile  uint8  I2C_num;           // 操作數據個數 (會被更改)
volatile  uint8  I2C_end;           // 操作結束標志,為1時表示操作結束,為0xFF時表示操作失敗 (會被設置)
volatile  uint8  I2C_suba_en;       // 子地址使能控制,讀操作時請設置為1,寫操作時請設置為2 (會被更改)


/****************************************************************************
* 名稱:IRQ_I2C()
* 功能:I2C中斷,通過判斷I2C狀態字進行相應的操作。
* 入口參數:無
* 出口參數:無
****************************************************************************/
void  __irq  IRQ_I2C(void)
{  uint8  sta;

   sta = I2STAT;                    // 讀出I2C狀態字
   switch(sta)
   {  case  0x08:                   // 己發送起始條件
            if(1==I2C_suba_en) I2DAT = I2C_sla&0xFE;    // 指定子地址讀時,先寫入地址
              else I2DAT = I2C_sla;                     // 否則直接發送從機地址
            I2CONCLR = 0x28;        // SI=0
            break;
            
      case  0x10:
            I2DAT = I2C_sla;        // 重啟動總線后,發送從地址
            I2CONCLR = 0x28;        // SI=0
            break;
   
      case  0x18:                   // 已發送SLA+W,并已接收應答
            if(0==I2C_suba_en)      // 無子地址,則直接發送數據
            {  if(I2C_num>0)
               {  I2DAT = *I2C_buf++;
                  I2CONCLR = 0x28; 
                  I2C_num--;
               }
               else
               {  I2CONSET = 0x10;  // 無數據發送,結束總線
                  I2CONCLR = 0x28;
                  I2C_end = 1;      // 設置總線操作結束標志
               }
               break;
            }
            if(1==I2C_suba_en)      // 發送子地址
            {  I2DAT = I2C_suba;
               I2CONCLR = 0x28;
            }
            if(2==I2C_suba_en)
            {  I2DAT = I2C_suba;
               I2CONCLR = 0x28;
               I2C_suba_en = 0;     // 子地址己處理
            }
            break;
            
      case  0x28:                   // 已發送I2C數據,并接收到應答
            if(0==I2C_suba_en)      // 無子地址,則直接發送數據
            {  if(I2C_num>0)
               {  I2DAT = *I2C_buf++;
                  I2CONCLR = 0x28; 
                  I2C_num--;
               }
               else
               {  I2CONSET = 0x10;  // 無數據發送,結束總線
                  I2CONCLR = 0x28;
                  I2C_end = 1; 
               }
               break;
            }
            if(1==I2C_suba_en)      // 若是指定地址讀,則重新啟動總線
            {  I2CONSET = 0x20;
               I2CONCLR = 0x08;
               I2C_suba_en = 0;     // 子地址己處理
            }
            break;
   
   
      case  0x20:
      case  0x30:
      case  0x38:
            I2CONCLR = 0x28;        // 總線進入不可尋址從模式
            I2C_end = 0xFF;         // 總線出錯,設置標志
            break;
   
   
      case  0x40:                   // 己發送SLA+R,并已接收到應答
            if(1==I2C_num)          // 最后一字節,接收數據后發送非應答信號
            {  I2CONCLR = 0x2C;     // AA=0,接收到數據后產生非應答
            }
            else                    // 接收數據并發送應答信號
            {  I2CONSET = 0x04;     // AA=1,接收到數據后產生應答
               I2CONCLR = 0x28;
            }
            break;
            
      case  0x50:
            *I2C_buf++ = I2DAT;     // 讀取數據
            I2C_num--;
            if(1==I2C_num)
            {  I2CONCLR = 0x2C;     // AA=0,接收到數據后產生非應答
            }
            else
            {  I2CONSET = 0x04;     // AA=1,接收到數據后產生應答
               I2CONCLR = 0x28;
            }
            break;
      
      case  0x58:
            *I2C_buf++ = I2DAT;     // 讀取最后一字節數據
            I2CONSET = 0x10;        // 結束總線
            I2CONCLR = 0x28;
            I2C_end = 1; 
            break;
      
      case  0x48:
            I2CONCLR = 0x28;        // 總線進入不可尋址從模式
            I2C_end = 0xFF; 
            break;
            
      default: 
            break;
   }
   

   VICVectAddr = 0x00;              // 中斷處理結束
}



/****************************************************************************
* 名稱:ISendByte()
* 功能:向無子地址器件發送一字節數據。
* 入口參數:sla		器件地址
*          dat		要發送的數據
* 出口參數:返回值為0時表示出錯,為1時表示操作正確。
* 說明:使用前要初始化好I2C引腳功能和I2C中斷,并已使能I2C主模式
****************************************************************************/
uint8  ISendByte(uint8 sla, uint8 dat)
{  /* 參數設置 */
   I2C_sla = sla;		// 寫操作的器件地址
   I2C_buf = &dat;		// 待發送的數據
   I2C_num = 1;			// 發送1字節數據
   I2C_suba_en = 0;		// 無子地址
   I2C_end = 0;
   
   I2CONCLR = 0x2C;
   I2CONSET = 0x60;             // 設置為主機,并啟動總線
   
   while(0==I2C_end);
   if(1==I2C_end) return(1);
     else return(0);
}



/****************************************************************************
* 名稱:ISendStr()
* 功能:向有子地址器件發送多字節數據。
* 入口參數:sla		器件從機地址
*          suba		器件子地址
*          s		數據發送緩沖區指針
*          no		發送數據個數
* 出口參數:返回值為0時表示出錯,為1時表示操作正確。
* 說明:使用前要初始化好I2C引腳功能和I2C中斷,并已使能I2C主模式
****************************************************************************/
uint8  ISendStr(uint8 sla, uint8 suba, uint8 *s, uint8 no)
{  /* 參數設置 */
   I2C_sla = sla;		// 寫操作的器件地址
   I2C_suba = suba;		// 子地址
   I2C_buf = s;			
   I2C_num = no;	
   I2C_suba_en = 2;		// 有子地址寫
   I2C_end = 0;
   
   I2CONCLR = 0x2C;
   I2CONSET = 0x60;             // 設置為主機,并啟動總線
   
   while(0==I2C_end);
   if(1==I2C_end) return(1);
     else return(0);
}



/****************************************************************************
* 名稱:IRcvByte()
* 功能:向無子地址器件讀取一字節數據。
* 入口參數:sla		器件地址
*          dat		接收數據的變量指針
* 出口參數:返回值為0時表示操作出錯,為1時表示操作正確。
* 說明:使用前要初始化好I2C引腳功能和I2C中斷,并已使能I2C主模式
****************************************************************************/
uint8  IRcvByte(uint8 sla, uint8 *dat)
{  /* 參數設置 */
   I2C_sla = sla+1;		// 讀操作的器件地址
   I2C_buf = dat;
   I2C_num = 1;
   I2C_suba_en = 0;		// 無子地址
   I2C_end = 0;
   
   I2CONCLR = 0x2C;
   I2CONSET = 0x60;             // 設置為主機,并啟動總線
   
   while(0==I2C_end);
   if(1==I2C_end) return(1);
     else return(0);
}



/****************************************************************************
* 名稱:IRcvStr()
* 功能:向有子地址器件讀取多字節數據。
* 入口參數:sla		器件地址
*          suba		器件子地址
*          s		數據接收緩沖區指針
*	   	   no 		讀取數據個數
* 出口參數:返回值為0時表示操作出錯,為1時表示操作正確。
* 說明:使用前要初始化好I2C引腳功能和I2C中斷,并已使能I2C主模式
****************************************************************************/
uint8  IRcvStr(uint8 sla, uint8 suba, uint8 *s, uint8 no)
{  if(0==no) return(0);
   
   /* 參數設置 */
   I2C_sla = sla+1;		// 讀操作的器件地址
   I2C_suba = suba;		
   I2C_buf = s;
   I2C_num = no;
   I2C_suba_en = 1;		// 有子地址讀
   I2C_end = 0;
   
   I2CONCLR = 0x2C;
   I2CONSET = 0x60;             // 設置為主機,并啟動總線
   
   while(0==I2C_end);
   if(1==I2C_end) return(1);
     else return(0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久网站最新地址| 国产色综合一区| av毛片久久久久**hd| 精品中文av资源站在线观看| 日韩—二三区免费观看av| 亚洲影院久久精品| 偷拍与自拍一区| 午夜视频一区二区三区| 亚洲成人av一区| 免费观看成人鲁鲁鲁鲁鲁视频| 石原莉奈在线亚洲二区| 老司机精品视频一区二区三区| 天天色综合天天| 久久www免费人成看片高清| 国产在线精品免费| 成人福利电影精品一区二区在线观看| 成人午夜短视频| 91福利视频在线| 欧美久久高跟鞋激| 亚洲精品在线观| 国产精品短视频| 天天av天天翘天天综合网 | 亚洲欧美另类图片小说| 亚洲精品中文在线影院| 亚洲国产欧美在线人成| 精品无人码麻豆乱码1区2区| 成人午夜视频在线观看| 在线观看一区不卡| 欧美大片在线观看一区二区| 国产欧美视频一区二区| 亚洲精品亚洲人成人网在线播放| 亚洲成人手机在线| 国产一区二区三区在线观看精品| 94-欧美-setu| 日韩精品一区二区三区在线 | 五月综合激情日本mⅴ| 久久99久久99| 色成人在线视频| 久久影院视频免费| 亚洲自拍偷拍九九九| 韩国一区二区视频| 欧洲色大大久久| 久久综合色鬼综合色| 一区二区在线电影| 国产成人精品网址| 69堂亚洲精品首页| 亚洲裸体xxx| 国产一区二区三区日韩| 欧美三级韩国三级日本三斤| 日韩欧美亚洲一区二区| 国产精品亚洲а∨天堂免在线| 99re在线视频这里只有精品| 日韩三级精品电影久久久| 亚洲黄色av一区| 成人精品视频一区二区三区 | 亚洲一级在线观看| 岛国精品一区二区| 精品日产卡一卡二卡麻豆| 亚洲高清不卡在线观看| 91在线视频观看| 国产午夜亚洲精品午夜鲁丝片 | 国产一区二区女| 欧美区在线观看| 亚洲午夜影视影院在线观看| 91在线精品一区二区三区| 欧美激情中文不卡| 国产高清不卡一区二区| 久久久噜噜噜久久中文字幕色伊伊| 日本亚洲视频在线| 欧美精品第1页| 日韩精品一级中文字幕精品视频免费观看| 99视频国产精品| 国产精品久久久久国产精品日日| 国产成人亚洲综合色影视| 欧美精品一区二区蜜臀亚洲| 麻豆久久久久久| 欧美不卡一区二区三区四区| 麻豆传媒一区二区三区| 精品国产亚洲在线| 黑人巨大精品欧美一区| 久久精品一区二区三区av| 美女视频黄a大片欧美| 日韩欧美一二三| 国产一区在线观看麻豆| 国产欧美精品一区| 99久久综合精品| 一区二区三区中文字幕电影| 色诱视频网站一区| 亚洲成a人片综合在线| 欧美三电影在线| 免费看欧美美女黄的网站| 欧美tickling挠脚心丨vk| 国产剧情一区二区| 亚洲日本青草视频在线怡红院 | 丁香五精品蜜臀久久久久99网站| 国产欧美一区在线| 91网页版在线| 日韩电影在线一区二区三区| 久久婷婷色综合| 91在线视频在线| 午夜激情综合网| 精品对白一区国产伦| 99久久精品国产网站| 性做久久久久久久久| 精品国产不卡一区二区三区| youjizz久久| 强制捆绑调教一区二区| 亚洲国产高清在线| 欧美综合天天夜夜久久| 精品在线观看免费| 亚洲区小说区图片区qvod| 91精品国产91热久久久做人人| 国产乱码精品一区二区三区忘忧草| 国产午夜精品理论片a级大结局| caoporen国产精品视频| 日韩激情视频在线观看| 中文字幕在线观看不卡视频| 欧美巨大另类极品videosbest | 欧美色国产精品| 国产乱码精品一区二区三区忘忧草| 亚洲欧美日韩在线不卡| 欧美xxxx老人做受| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 老汉av免费一区二区三区| 亚洲乱码中文字幕综合| 久久一留热品黄| 8x福利精品第一导航| 99久久久精品| 国产成人免费网站| 久久国产成人午夜av影院| 亚洲成人久久影院| 亚洲乱码精品一二三四区日韩在线| 久久午夜免费电影| 日韩一区二区视频| 欧美日韩精品一区二区三区| gogogo免费视频观看亚洲一| 国产一区999| 美女看a上一区| 爽好久久久欧美精品| 亚洲高清免费在线| 亚洲综合免费观看高清在线观看| 国产精品成人一区二区艾草| 国产欧美综合在线观看第十页| 日韩免费性生活视频播放| 6080日韩午夜伦伦午夜伦| 欧美日本高清视频在线观看| 欧美唯美清纯偷拍| 欧美日韩中文字幕精品| 欧美亚洲动漫制服丝袜| 日本韩国精品在线| 色婷婷综合久久久中文一区二区| 成人丝袜视频网| 97精品久久久午夜一区二区三区| 粉嫩av一区二区三区在线播放| 国内外精品视频| 国产精品一区二区免费不卡| 国产精品亚洲人在线观看| 国产高清在线精品| 风流少妇一区二区| 成人av电影免费在线播放| 99re8在线精品视频免费播放| 99久久免费视频.com| 91麻豆精品秘密| 欧美群妇大交群中文字幕| 制服丝袜成人动漫| 久久久五月婷婷| 中文字幕在线观看不卡| 亚洲自拍偷拍麻豆| 免费观看日韩电影| 国产不卡视频在线观看| 91美女视频网站| 欧美日韩一区在线观看| 日韩精品综合一本久道在线视频| 精品国产三级a在线观看| 国产三级一区二区| 亚洲精品国产一区二区精华液| 亚洲一级片在线观看| 毛片一区二区三区| 不卡av在线网| 欧美乱妇一区二区三区不卡视频| 日韩欧美不卡在线观看视频| 中文字幕电影一区| 亚洲国产精品久久人人爱蜜臀| 蜜桃久久久久久| 成年人国产精品| 日韩一区二区三| 中文字幕视频一区| 久久国内精品自在自线400部| 盗摄精品av一区二区三区| 欧美日韩一区二区三区免费看| 欧美tickle裸体挠脚心vk| 亚洲人成7777| 国产一区不卡精品| 欧美日韩国产一区| 日本一区二区视频在线观看| 天天操天天综合网| 97久久人人超碰| 精品久久一区二区三区| 一区二区三区高清在线| 国产99久久久国产精品免费看|