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

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

?? drv_i2c.c

?? Enhanced LPC213x device drivers,tools ADS1.2
?? C
?? 第 1 頁 / 共 2 頁
字號:
** 入口參數 :無
** 出口參數 :無
** 說明     :注意處理子地址為2字節的情況。 
**************************************************************************
									//定義用于和I2C中斷傳遞信息的全局變量
volatile uint8 	I2C_dveAddr;			//I2C器件從地址
volatile uint32	I2C_subAddr;			//I2C器件內部子地址
volatile uint8 	I2C_subAddrNum;		//I2C子地址字節數
volatile uint8 	*I2C_dbuf_Pt;        	//數據緩沖區指針
volatile uint8  I2C_byteNum;			//要讀取/寫入的數據個數
volatile uint8 	I2C_endFlag;			//I2C總線結束標志:結束總線是置1
volatile uint8 	I2C_subAddrFlag;		// 	子地址控制。
									//	0--子地址已經處理或者不需要子地址
									//	1--讀取操作
									//	2--寫操作
*/
/////////////////////////////////////////////////////////////////////////
/* 讀取I2C狀態寄存器I2STAT */
/* 按照全局變量的設置進行操作及設置軟件標志 */
/* 清除中斷邏輯,中斷返回 */

void __irq IRQ_I2C_Serving(void)
{
	switch (I2STAT & 0xF8)	{				/* 根據狀態碼進行相應的處理 */
/*(1)*/ case 0x08:	/* 已發送起始條件 */	//will send SLA+W and receive ACK
/*[1]*/
/*[4]*/
		 	if(I2C_subAddrFlag == 1){			/* SLA+R */	/* 指定子地址,讀*/
/*[1]*/			I2DAT = I2C_dveAddr & I2C_W;	//0xFE; /* 先寫入地址 		*/

		 	}else{	//will send SLA+W or SLA+R.
/*(1)*/        	I2DAT = I2C_dveAddr;        	/* 直接發送從機地址	*/
/*[4]*/
            }
		            /* 清零SI位 */
            I2CONCLR =	I2C_SI|I2C_STA;			/* clr SI STA */
            break;
////
       	case 0x10:	/*已發送重復起始條件 */ 	/* 主發送和主接收都有 	 */
		       		//will send SLA+W or SLA+R.
       		I2DAT = I2C_dveAddr;				/* 重起總線后,重發從地址*/
       		I2CONCLR = I2C_SI|I2C_STA;			//0x28;	clr SI,STA
       		break;

/*(2)*/	case 0x18:	// sended SLA+W, got ACK. 
/*[2]*/
/*(3)*/	case 0x28:	/* 已發送I2DAT中的數據,已接收ACK */
/*(3)*/		if (I2C_subAddrFlag == 0){		//sub address have been sent out.
	       		if (I2C_byteNum > 0){		//data treatment.
	       			I2DAT = *I2C_dbuf_Pt++;
	       			I2CONCLR = I2C_STA|I2C_SI;	//0x28; /* 清零SI,STA 	*/
	       			I2C_byteNum--;
	       			
	       		}else{						//data sent over, stop I2C bus.
	       		  	I2CONSET = I2C_STO;			//(1 << 4);	/* STO */
	       			I2CONCLR = I2C_STA|I2C_SI;	//0x28; /* 清零SI,STA */
	       		  	I2C_endFlag = I2C_DEV_FREE;	//1;	/*總線已經停止*/
	       		}

/*[2]*/		}else if(I2C_subAddrFlag == 1){		/* 若是指定地址讀,則重新啟動總線 */
            	if (I2C_subAddrNum == 2){
            		I2DAT = ((I2C_subAddr >> 8) & 0xff);	//will send high address.
	       			I2CONCLR = I2C_STA|I2C_SI;	//0x28;	/* 清零SI,STA */
	       			I2C_subAddrNum--;
//	       			break;
	       		}else if(I2C_subAddrNum == 1){	
	       			I2DAT = (I2C_subAddr & 0xff);	//will send low address.
	       			I2CONCLR = I2C_STA|I2C_SI;		//0x28;	/* 清零SI,STA */
	       			I2C_subAddrNum--;
//	       			break;	
/*[3]*/   		}else if (I2C_subAddrNum == 0){			//sub address sent out.
            		I2CONSET = I2C_STA;		//0x20;		//resend START condition.
               		I2CONCLR = I2C_SI;		//0x08;
               		I2C_subAddrFlag = 0;    /* 子地址己處理 */
//             		break;
               	}
               	
/*(2)*/		}else if (I2C_subAddrFlag == 2){	//will send subaddress and get ACK
//     		 	if (I2C_subAddrNum>0){			//sub_address treatment.
            		if (I2C_subAddrNum == 2){
            			I2DAT 	 = ((I2C_subAddr>>8) & 0xff);	//will send high address
            			I2CONCLR = I2C_STA|I2C_SI;				//0x28;
            			I2C_subAddrNum--;
//            			break;
            		}else if (I2C_subAddrNum == 1){
            			I2DAT    = (I2C_subAddr & 0xff);		//will send low address.
               			I2CONCLR = I2C_STA|I2C_SI;				//0x28;
               			I2C_subAddrNum--;
               			I2C_subAddrFlag  = 0;	//have treated sub address.
//             			break;
               		}
//             	}
             }
       		break;
       		
////////////////////////////////////////////////////////////////////////////////       		
////////////////////////////////////////////////////////////////////////////////
//// read data treatment.
/*[5]*/ case 0x40:	/* 已發送SLA+R,已接收ACK */
       		if (I2C_byteNum <= 1){				/* 如果是最后一個字節 */
       			I2CONCLR = I2C_AA;	//1 << 2; 	/* 下次發送非應答信號 */
       		}else{
       		 	I2CONSET = I2C_AA;	//1 << 2; 	/* 下次發送應答信號 */
       		}
       		I2CONCLR = I2C_STA|I2C_SI;			//0x28;	/* 清零SI,STA */
       		break;

/*[6]*/	case 0x50:	/* 已接收數據字節,已返回ACK */
			*I2C_dbuf_Pt++ = I2DAT;			//get received data
			 I2C_byteNum--;

			if (I2C_byteNum == 1){			/* 接收最后一個字節 */
			  	I2CONCLR = 	I2C_STA|I2C_SI|I2C_AA;	//0x2C;	/* STA,SI,AA = 0 */
			}else{
			  	I2CONSET = I2C_AA;			//0x04;	/* AA=1	*/
			  	I2CONCLR = I2C_STA|I2C_SI;	//0x28;
			}

			break;

/*[7]*/	case 0x58:	/* 已接收數據字節,已返回非應答 */
			*I2C_dbuf_Pt++ = I2DAT;     	/* 讀取最后一字節數據 */
             I2CONSET = I2C_STO	;			//0x10;		/* 結束總線 */
             I2CONCLR = I2C_STA|I2C_SI;		//0x28;
             I2C_endFlag = I2C_DEV_FREE;	//1; 	//end I2C memory accessing.
            break;

/////////////////////////////////////////////////////////////////////////////       		
/////////////////////////////////////////////////////////////////////////////
//// erro case treatment.
       	case 0x20:	/* 已發送SLA+W,已接收非應答              */
       	case 0x30:	/* 已發送I2DAT中的數據,已接收非應答     */
       	case 0x38:	/* 在SLA+R/W或數據字節中丟失仲裁         */
   		case 0x48:	/* 已發送SLA+R,已接收非應答              */
   		
         	I2CONCLR 	= I2C_STA|I2C_SI;	//0x28;
            I2C_endFlag = I2C_DEV_FREE;	//		//0xFF; original 
       		break;   	
////
      	default:
      		break;
	}

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

/*
/////////////////////////////////////////////////////////////////////////////
** 函數名稱:I2C_SendByte()
** 函數功能:向無子地址器件發送1字節數據。
** 入口參數:sla		器件地址
**           dat		要發送的數據
** 出口參數:返回值為0時表示出錯,為1時表示操作正確。
** 說明:	 使用前要初始化好I2C引腳功能和I2C中斷,并已使能I2C主模式
/////////////////////////////////////////////////////////////////////////////
*/
/*
uint8  I2C_SendByte(uint8 sla, uint8 dat)
{
	I2C_StopAct();
	DelayMS_(10);

//  參數設置
  	I2C_dveAddr     = sla & I2C_W;	// 寫操作的器件地址
  	I2C_dbuf_Pt     = &dat;			// 待發送的數據
   	I2C_byteNum     = 1;			// 發送1字節數據
   	I2C_subAddrFlag = 0;	 		// 無子地址
   	I2C_endFlag     = I2C_DEV_BUSY;	//0;
 
   	I2CONCLR = 	I2C_STA|I2C_SI |I2C_AA;	//0x2C;
   	I2CONSET = 	I2C_EN |I2C_STA;		//0x60;	// 設置為主機,并啟動總線
   
	mSecondTick=I2C_TRANS_LIMIT;
	while((I2C_endFlag==I2C_DEV_BUSY)&&(mSecondTick>1));
	if(I2C_endFlag    ==I2C_DEV_BUSY) DB_SendString("time overflow in I2C_SendByte()");

   	if(I2C_endFlag==I2C_DEV_FREE) 	return(TRUE);
   	else 							return(FALSE);
}
*/
/*
/////////////////////////////////////////////////////////////////////////////
** 函數名稱:I2C_RcvByte()
** 函數功能:向無子地址器件讀取1字節數據。
** 入口參數:sla		器件地址
**           dat		接收數據的變量指針
** 出口參數:返回值為0時表示操作出錯,為1時表示操作正確。
** 說明:使用前要初始化好I2C引腳功能和I2C中斷,并已使能I2C主模式
/////////////////////////////////////////////////////////////////////////////
*/
/*
uint8  I2C_RcvByte(uint8 sla, uint8 *dat)
{  
	I2C_StopAct();
	DelayMS_(10);

//  參數設置
   	I2C_dveAddr		= sla | I2C_R;		//+1;	// 讀操作的器件地址
   	I2C_dbuf_Pt     = dat;
   	I2C_byteNum     = 1;
   	I2C_subAddrFlag = 0;				// 無子地址
   	I2C_endFlag     = I2C_DEV_BUSY;		//0;
  
   	I2CONCLR = 	I2C_STA|I2C_SI|I2C_AA;	//0x2C;
   	I2CONSET = 	I2C_EN |I2C_STA;		//0x60; 	// 設置為主機,并啟動總線
   
	mSecondTick=I2C_TRANS_LIMIT;
	while((I2C_endFlag==I2C_DEV_BUSY)&&(mSecondTick>1));
	if(I2C_endFlag    ==I2C_DEV_BUSY) DB_SendString("time overflow in I2C_RcvByte()");

   	if(I2C_endFlag==I2C_DEV_FREE) 	return(TRUE);
   	else 							return(FALSE);
}
*/
/////////////////////////////////////////////////////////////////////////////
//// end of file

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人性网站| 99精品热视频| 中文字幕中文字幕一区| 欧美三级乱人伦电影| 国产激情一区二区三区四区| 亚欧色一区w666天堂| 亚洲欧洲国产日韩| 久久久国产综合精品女国产盗摄| 欧美日韩另类一区| 91碰在线视频| 国产91精品久久久久久久网曝门| 美女一区二区三区在线观看| 一区二区三区**美女毛片| 2019国产精品| 日韩一区二区精品| 欧美三级在线视频| 欧美影院一区二区三区| 97久久精品人人澡人人爽| 高清不卡在线观看| 国产乱子伦视频一区二区三区| 日产欧产美韩系列久久99| 亚洲自拍与偷拍| 中文字幕一区视频| 国产精品免费免费| 国产日本欧洲亚洲| 久久久噜噜噜久久中文字幕色伊伊 | 日韩一区二区电影| 在线成人午夜影院| 欧美三级日韩在线| 欧美网站一区二区| 在线视频一区二区三| 日本韩国欧美在线| 99精品国产热久久91蜜凸| 成人毛片在线观看| 成人国产在线观看| 成人高清免费观看| 成人av资源在线| 91丨九色porny丨蝌蚪| 99精品欧美一区二区三区小说 | 精品一区二区av| 激情综合色播五月| 国内精品免费**视频| 久久99最新地址| 国产一区二区三区在线观看免费| 久久精品国产精品青草| 久久成人久久鬼色| 韩国精品主播一区二区在线观看| 韩国一区二区三区| 国产精品夜夜嗨| 成人av网站免费观看| 91免费版在线| 欧美三区在线视频| 日韩一二三四区| 精品国产成人在线影院 | 欧美一区二区三区在线观看| 91精品国产全国免费观看| 日韩三级av在线播放| 久久亚洲精华国产精华液 | 免费的成人av| 国产宾馆实践打屁股91| 99国产精品国产精品毛片| 91久久线看在观草草青青| 欧美日韩成人激情| 欧美大片日本大片免费观看| 国产肉丝袜一区二区| 亚洲精品写真福利| 久久精品久久综合| 成人午夜视频福利| 欧美亚洲一区二区三区四区| 欧美精品xxxxbbbb| 国产喂奶挤奶一区二区三区 | 国产高清不卡二三区| 大胆亚洲人体视频| 在线观看亚洲成人| 精品久久国产97色综合| 国产精品妹子av| 五月天激情综合| 国产a级毛片一区| 欧美精品色综合| 337p粉嫩大胆色噜噜噜噜亚洲| 国产欧美日韩精品a在线观看| 亚洲人妖av一区二区| 三级亚洲高清视频| 成人黄色小视频在线观看| 精品视频免费在线| 久久综合九色欧美综合狠狠| 亚洲精品成人在线| 久久国产精品第一页| 91热门视频在线观看| 久久综合99re88久久爱| 亚洲视频图片小说| 久久99久久精品| 91麻豆自制传媒国产之光| 日韩女优视频免费观看| 亚洲视频一区二区免费在线观看| 久久精品国产网站| 欧美性做爰猛烈叫床潮| 国产精品你懂的| 美国三级日本三级久久99 | 国产成人自拍网| 欧美精品在线观看一区二区| 久久久久亚洲蜜桃| 日本成人超碰在线观看| 色综合天天综合网国产成人综合天 | 福利视频网站一区二区三区| 欧美久久免费观看| 亚洲三级理论片| 国产成人精品一区二区三区四区| 欧美午夜精品久久久久久超碰| 久久久www免费人成精品| 日韩福利电影在线观看| 99综合影院在线| 国产日韩欧美高清在线| 九色porny丨国产精品| 欧美精品高清视频| 亚洲午夜久久久| 91色婷婷久久久久合中文| 国产欧美日韩另类视频免费观看| 久久超级碰视频| 日韩午夜精品视频| 日韩综合小视频| 欧美日韩三级一区| 亚洲精品美腿丝袜| 91在线免费看| 中文字幕一区二区不卡| 成人精品免费视频| 欧美国产日韩亚洲一区| 高清不卡一二三区| 亚洲国产岛国毛片在线| 国产精品资源在线| 久久亚洲精华国产精华液 | 欧美一区二区三区四区在线观看| 一区二区免费在线| 久久亚洲影视婷婷| 久久97超碰国产精品超碰| 日韩欧美国产一二三区| 久热成人在线视频| 亚洲精品在线观看网站| 国产精选一区二区三区| 国产婷婷色一区二区三区四区| 国产乱淫av一区二区三区| 中文字幕乱码亚洲精品一区| 丁香激情综合国产| 亚洲免费在线观看| 91福利在线观看| 午夜精品久久一牛影视| 欧美一卡二卡在线观看| 久久99精品国产麻豆不卡| 久久久久久久精| 成人精品国产福利| 亚洲免费资源在线播放| 欧美久久一区二区| 精品一区二区精品| 国产精品网站在线观看| 91视频国产观看| 天堂久久久久va久久久久| 欧美成人video| 粉嫩蜜臀av国产精品网站| 亚洲色图.com| 欧美疯狂做受xxxx富婆| 国产一区二区三区在线看麻豆| 国产精品区一区二区三区| 91偷拍与自偷拍精品| 性做久久久久久久免费看| 精品国产乱码久久久久久浪潮| 高清不卡在线观看| 亚洲6080在线| 国产午夜久久久久| 91黄色激情网站| 麻豆精品视频在线观看| 国产精品素人视频| 欧美亚洲日本一区| 国产精一品亚洲二区在线视频| 亚洲欧美另类久久久精品2019| 欧美日韩国产色站一区二区三区| 狠狠色丁香婷婷综合久久片| ...av二区三区久久精品| 7777精品伊人久久久大香线蕉的| 国产米奇在线777精品观看| 亚洲欧美日韩成人高清在线一区| 91精品国产麻豆| 99久久婷婷国产综合精品电影| 午夜精品影院在线观看| 国产清纯白嫩初高生在线观看91 | 亚洲.国产.中文慕字在线| 国产欧美一二三区| 欧美精品99久久久**| 成人福利视频在线看| 男人的天堂久久精品| 最近中文字幕一区二区三区| 欧美v亚洲v综合ⅴ国产v| 一本一本久久a久久精品综合麻豆| 老司机精品视频在线| 一区二区三区四区在线| 久久精品亚洲国产奇米99| 欧美一区二区在线视频| 91网站在线播放| 成人性生交大片免费看在线播放 | 亚洲精品欧美激情| 久久久久久久网|