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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? i2c.h

?? ICCAVR 編寫的函數(shù)庫
?? H
字號:
/*********************************************************************
	微 雪 電 子   WaveShare   http://www.waveShare.net            	
		                                                        
目    的:   建立I2C操作庫
	
目標系統(tǒng):   基于AVR單片機
		                                                                
應(yīng)用軟件:   ICCAVR
		                                                                
版    本:   Version 1.0                                                          
		                                                                
圓版時間:   2005-06-25
	
開發(fā)人員:   SEE

說    明:   若用于商業(yè)用途,請保留此段文字或注明代碼來源
	
	深 圳 微 雪 電 子 保 留 所 有 的 版 權(quán)     
*********************************************************************/

/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
版本更新記錄:

----------------------------------------------------------------------
入口參數(shù)說明:

----------------------------------------------------------------------
待定參數(shù)說明:

----------------------------------------------------------------------	
對外變量說明:

----------------------------------------------------------------------
對外函數(shù)說明:

----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/

#ifndef I2C_H
#define I2C_H

/* TWSR values (not bits) */
/* Master */
#define I2C_START			0x08
#define I2C_RESTART			0x10

/* Master Transmitter */
#define I2C_MT_SLA_ACK		0x18
#define I2C_MT_SLA_NACK		0x20
#define I2C_MT_DATA_ACK		0x28
#define I2C_MT_DATA_NACK	0x30
#define I2C_MT_ARB_LOST		0x38

/* Master Receiver */
#define I2C_MR_ARB_LOST		0x38
#define I2C_MR_SLA_ACK		0x40
#define I2C_MR_SLA_NACK		0x48
#define I2C_MR_DATA_ACK		0x50
#define I2C_MR_DATA_NACK	0x58

/* Slave Transmitter */
#define I2C_ST_SLA_ACK			0xA8
#define I2C_ST_ARB_LOST_SLA_ACK 0xB0
#define I2C_ST_DATA_ACK			0xB8
#define I2C_ST_DATA_NACK		0xC0
#define I2C_ST_LAST_DATA		0xC8

/* Slave Receiver */
#define I2C_SR_SLA_ACK				0x60
#define I2C_SR_ARB_LOST_SLA_ACK		0x68
#define I2C_SR_GCALL_ACK			0x70
#define I2C_SR_ARB_LOST_GCALL_ACK	0x78
#define I2C_SR_DATA_ACK				0x80
#define I2C_SR_DATA_NACK			0x88
#define I2C_SR_GCALL_DATA_ACK		0x90
#define I2C_SR_GCALL_DATA_NACK		0x98
#define I2C_SR_STOP					0xA0

/* Misc */
#define I2C_NO_INFO			0xF8
#define I2C_BUS_ERROR		0x00

/*
 * The lower 3 bits of TWSR are reserved on the ATmega163.
 * The 2 LSB carry the prescaler bits on the newer ATmegas.
 */
#define I2C_STATUS_MASK	(_BV(TWS7)|_BV(TWS6)|_BV(TWS5)|_BV(TWS4)|_BV(TWS3))
#define I2C_STATUS		(TWSR & I2C_STATUS_MASK)

/*
 * R/~W bit in SLA+R/W address field.
 */
#define I2C_READ		1
#define I2C_WRITE		0

#define I2CStart()    	(TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))
#define I2CStop()     	(TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))
#define I2CWaitAck()	{while(!(TWCR&(1<<TWINT)));}
#define I2CChkAck() 	(TWSR&0xf8)					//check ack
#define I2CSendAck()	(TWCR|=(1<<TWEA))
#define I2CSendNoAck()	(TWCR&=~(1<<TWEA))
#define I2CSendByte(x)	{TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);} 
#define I2CRcvNckByte()	(TWCR=(1<<TWINT)|(1<<TWEN))
#define I2CRcvAckByte()	(TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA))

/* For Program */
#define I2C_Stop()		I2CStop()
#define I2C_SendAck()	I2CSendAck()
#define I2C_SendNoAck() I2CSendNoAck()
#define I2C_WaitAck()	I2CWaitAck()

/* I2C Config */
#define I2C_ERR			0
#define I2C_CRR			1

/*--------------------------------------------------------------------
函數(shù)名稱:I2C Start
函數(shù)功能:
注意事項:
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_Start()					
{
	I2CStart();						
	I2CWaitAck();
	if( I2CChkAck()!=I2C_START ) 
		return I2C_ERR;
	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:I2C ReStart
函數(shù)功能:
注意事項:
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_Restart()					
{
	I2CStart();						
	I2CWaitAck();
	if( I2CChkAck()!=I2C_RESTART ) 
		return I2C_ERR;
	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:發(fā)送 7位 器件寫地址: XXXX XXX0
函數(shù)功能:
注意事項:
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_SendWrDAdr(uint8 wrDAdr)	
{
	I2CSendByte(wrDAdr);			//設(shè)置 器件寫地址
	I2CWaitAck();
	if( I2CChkAck()!=I2C_MT_SLA_ACK )  
		return I2C_ERR;
	return I2C_CRR;		
}
/*--------------------------------------------------------------------
函數(shù)名稱:發(fā)送 10位 器件寫地址: 1111 0XX0, XXXX XXXX
函數(shù)功能:
注意事項:
提示說明:兼容 發(fā)送 7位 器件寫地址: XXXX XXX0
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_SendWrDAdr_(uint16 wrDAdr)	
{
	if( wrDAdr&0xF000 == 0xF000 )	//判斷是否為 10位 器件地址
		if( I2C_SendWrDAdr( (uint8)wrDAdr>>8 )==I2C_ERR )	//設(shè)置 (高位)器件寫地址
			return I2C_ERR;
	if( I2C_SendWrDAdr( (uint8)wrDAdr )==I2C_ERR )	//設(shè)置 (低位)器件寫地址
		return I2C_ERR;
	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:發(fā)送 7位 器件讀地址: XXXX XXX1
函數(shù)功能:
注意事項:
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_SendRdDAdr(uint8 rdDAdr)	
{
	I2CSendByte(rdDAdr);			//設(shè)置 器件讀地址
	I2CWaitAck();
	if( I2CChkAck()!=I2C_MR_SLA_ACK )  
		return I2C_ERR;
	return I2C_CRR;	
}
/*--------------------------------------------------------------------
函數(shù)名稱:發(fā)送 10位 器件讀地址: 1111 0XX0, XXXX XXXX
函數(shù)功能:
注意事項:
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_SendRdDAdr_(uint8 rdDAdr)	
{
	if( rdDAdr&0xF000 == 0xF000 )	//判斷是否為 10位 器件地址
		if( I2C_SendWrDAdr( (uint8)rdDAdr>>8 )==I2C_ERR )	//設(shè)置 (高位)器件讀地址
			return I2C_ERR;
	if( I2C_SendWrDAdr( (uint8)rdDAdr )==I2C_ERR )	//設(shè)置 (低位)器件讀地址
		return I2C_ERR;
	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:I2C發(fā)送數(shù)據(jù)
函數(shù)功能:
注意事項:
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_SendDat(uint8 configDat)	
{
	I2CSendByte(configDat);			
	I2CWaitAck();
	if( I2CChkAck()!=I2C_MT_DATA_ACK ) 
		return I2C_ERR;
	return I2C_CRR;	
}
/*--------------------------------------------------------------------
函數(shù)名稱:I2C接收數(shù)據(jù)且不產(chǎn)生應(yīng)答
函數(shù)功能:
注意事項:
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_RcvNAckDat(uint8 *pRdDat)	
{
	I2CRcvNckByte();
	I2CWaitAck();
	if( I2CChkAck()!=I2C_MR_DATA_NACK )
		return I2C_ERR;
	*pRdDat=TWDR;
	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:I2C接收數(shù)據(jù)且產(chǎn)生應(yīng)答
函數(shù)功能:
注意事項:
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_RcvAckDat(uint8 *pRdDat)	
{
	I2CRcvAckByte();					
	I2CWaitAck();
	if( I2CChkAck()!=I2C_MR_DATA_ACK )
		return I2C_ERR;
	*pRdDat=TWDR;
	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:I2C寫器件,寫一個數(shù)據(jù)
函數(shù)功能:
注意事項:
提示說明:
輸    入:wrDAdr: write device-address 寫器件地址
		 wordAdr: word address 字地址
		 dat: data 數(shù)據(jù)
返    回:
--------------------------------------------------------------------*/
bool I2C_Write(uint16 wrDAdr,uint8 wordAdr,uint8 dat)
{
	if( I2C_Start()==I2C_ERR )
		return I2C_ERR;

	if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR )
		return I2C_ERR;

	if( I2C_SendDat(wordAdr)==I2C_ERR )
		return I2C_ERR;

	if( I2C_SendDat(dat)==I2C_ERR )
		return I2C_ERR;

	I2C_Stop();

	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:I2C寫器件,寫N個數(shù)據(jù)
函數(shù)功能:
注意事項:
提示說明:
輸    入:wrDAdr: write device-address 寫器件地址
		 wordAdr: word address 字地址
		 *pWrDat: p->write data 寫入數(shù)據(jù)指針
		 num: number 寫入數(shù)據(jù)個數(shù)
返    回:
--------------------------------------------------------------------*/
//bool I2C_Write_(uint16 wrDAdr,uint8 wordAdr,
//				  uint8 *pWrDat,uint8 num)
//{
//
//} 
/*--------------------------------------------------------------------
函數(shù)名稱:I2C讀器件,讀一個數(shù)據(jù)
函數(shù)功能:
注意事項:
提示說明:
輸    入:wrDAdr: write device-address 寫器件地址
		 wordAdr: word address 字地址
		 rdDAdr: read device-address 讀器件地址
		 *pRdDat: p->read data 讀取數(shù)據(jù)指針
返    回:
--------------------------------------------------------------------*/
bool I2C_Read(uint16 wrDAdr,uint8 wordAdr,
			  uint8 rdDAdr,uint8 *pRdDat)
{
	if( I2C_Start()==I2C_ERR )
		return I2C_ERR;

	if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR )
		return I2C_ERR;

	if( I2C_SendDat(wordAdr)==I2C_ERR )
		return I2C_ERR;

	if( I2C_Restart()==I2C_ERR )
		return I2C_ERR;

	if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR )
		return I2C_ERR;

	if( I2C_RcvNAckDat(pRdDat)==I2C_ERR )
		return I2C_ERR;

	I2C_Stop();

	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:I2C讀器件,讀N個數(shù)據(jù)
函數(shù)功能:
注意事項:
提示說明:
輸    入:wrDAdr: write device-address 寫器件地址
		 wordAdr: word address 字地址
		 rdDAdr: read device-address 讀器件地址
		 *pRdDat: p->read data 讀取數(shù)據(jù)指針
		 num: number 讀取數(shù)據(jù)個數(shù)
返    回:
--------------------------------------------------------------------*/
bool I2C_Read_(uint16 wrDAdr,uint8 wordAdr,
			   uint8 rdDAdr,uint8 *pRdDat,uint8 num)
{
 	uint8 i;
	
	if( I2C_Start()==I2C_ERR )
		return I2C_ERR;

	if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR )
		return I2C_ERR;

	if( I2C_SendDat(wordAdr)==I2C_ERR )
		return I2C_ERR;

	if( I2C_Restart()==I2C_ERR )
		return I2C_ERR;

	if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR )
		return I2C_ERR;

	for(i=0;i<num-1;i++)
		if( I2C_RcvAckDat(pRdDat+i)==I2C_ERR )
			return I2C_ERR;
	
	if( I2C_RcvNAckDat(pRdDat+i)==I2C_ERR )
			return I2C_ERR;

	I2C_Stop();
	
	return I2C_CRR;
}

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人av影视| 国产亚洲成年网址在线观看| 亚洲一区中文日韩| 欧美日韩亚洲综合| 麻豆免费精品视频| 国产午夜一区二区三区| heyzo一本久久综合| 亚洲天堂成人网| 欧美日本一道本| 国产呦精品一区二区三区网站 | 色猫猫国产区一区二在线视频| 日韩一区欧美一区| 欧美精品色综合| 国产精品一二三四| 亚洲欧美日韩精品久久久久| 欧美日韩一区成人| 久久精品99国产精品日本| 欧美激情综合五月色丁香小说| 菠萝蜜视频在线观看一区| 亚洲自拍都市欧美小说| 日韩免费福利电影在线观看| 高清av一区二区| 亚洲国产精品自拍| 久久久久国产精品厨房| 91美女片黄在线观看91美女| 婷婷开心激情综合| 国产日韩欧美综合一区| 欧美三区在线观看| 国产成人一区二区精品非洲| 亚洲一区二区三区四区的| 精品国内二区三区| 在线精品视频一区二区| 激情久久五月天| 亚洲欧美日韩精品久久久久| 精品欧美一区二区三区精品久久 | 91丨porny丨中文| 男人的天堂亚洲一区| 亚洲男人天堂av| 久久日一线二线三线suv| 欧美少妇xxx| 国产成人午夜高潮毛片| 日韩国产欧美在线播放| 1024精品合集| 久久久久久久久蜜桃| 欧美日韩精品系列| 成人亚洲精品久久久久软件| 日本美女一区二区| 亚洲黄色性网站| 国产精品三级av| 欧美xxxxx裸体时装秀| 欧美日韩视频在线一区二区| eeuss鲁片一区二区三区| 国产制服丝袜一区| 免费成人美女在线观看.| 一区二区成人在线视频| 国产女同互慰高潮91漫画| 精品成人一区二区三区| 4hu四虎永久在线影院成人| 在线观看欧美黄色| 91小宝寻花一区二区三区| 国产精品一线二线三线| 韩日精品视频一区| 麻豆91在线看| 蜜臀久久久久久久| 青青草国产精品亚洲专区无| 一级日本不卡的影视| 综合网在线视频| 中文成人av在线| 国产精品网站在线播放| 久久久青草青青国产亚洲免观| 日韩欧美国产综合在线一区二区三区| 欧美视频中文一区二区三区在线观看| 99久久精品国产导航| 99麻豆久久久国产精品免费优播| 国产丶欧美丶日本不卡视频| 国产一区二区三区| 风间由美一区二区三区在线观看 | 亚洲韩国精品一区| 亚洲一区影音先锋| 亚洲国产毛片aaaaa无费看| 亚洲自拍都市欧美小说| 亚洲成人自拍网| 亚洲成人7777| 日韩精品乱码av一区二区| 午夜成人在线视频| 欧美a级一区二区| 国产在线一区二区| 国产成人精品一区二| 成人av资源站| 色欧美片视频在线观看| 91久久奴性调教| 欧洲精品视频在线观看| 在线播放中文一区| 欧美一区二区三区性视频| 2020国产精品| 成人免费一区二区三区视频| 亚洲一区影音先锋| 免费观看日韩电影| 国产精华液一区二区三区| 91网站最新地址| 欧美日韩黄色影视| 2021国产精品久久精品| 国产精品白丝在线| 午夜视黄欧洲亚洲| 国产精品99久| 日本高清无吗v一区| 日韩一区国产二区欧美三区| 精品美女被调教视频大全网站| 欧美国产精品一区| 亚洲一区二区视频在线| 另类小说视频一区二区| www.av精品| 日韩欧美第一区| 中文字幕在线不卡一区| 日本va欧美va瓶| av电影在线不卡| 91精品国产91热久久久做人人| 久久久久国产成人精品亚洲午夜| 亚洲三级电影网站| 九九九久久久精品| 91女神在线视频| 久久中文字幕电影| 亚洲大片免费看| 成人aaaa免费全部观看| 欧美精品精品一区| 国产精品国产三级国产普通话99| 亚洲电影一区二区三区| 成人国产亚洲欧美成人综合网| 欧美日韩免费高清一区色橹橹 | 中文字幕一区二区三区在线观看| 亚洲精品国产精品乱码不99 | 首页国产欧美日韩丝袜| 岛国精品在线播放| 日韩三级视频中文字幕| 亚洲欧美日韩在线| 成人性生交大片免费看中文网站| 91精品国产91久久综合桃花| 亚洲精品视频一区二区| 国产很黄免费观看久久| 日韩视频中午一区| 亚洲高清久久久| 色综合天天天天做夜夜夜夜做| 日韩女优电影在线观看| 午夜精品久久久| 色综合久久久久网| 国产精品久久综合| 国产二区国产一区在线观看| 欧美成人在线直播| 偷窥少妇高潮呻吟av久久免费| 91小视频在线| 亚洲视频图片小说| 成人国产精品免费网站| 久久久久久久性| 捆绑紧缚一区二区三区视频| 91精品久久久久久久99蜜桃 | 亚洲男人的天堂一区二区| 成人精品一区二区三区四区| 久久久.com| 国产精品88888| 国产欧美日韩激情| 国产成人免费在线观看不卡| 国产肉丝袜一区二区| 国产一区二区免费看| 久久午夜羞羞影院免费观看| 国产一区二区三区四区在线观看| 欧美成人vps| 韩国三级中文字幕hd久久精品| 精品国产乱码久久久久久老虎| 极品少妇xxxx偷拍精品少妇| 欧美mv和日韩mv国产网站| 精品午夜一区二区三区在线观看 | 成人精品免费视频| 国产女主播视频一区二区| 成人污污视频在线观看| 中文字幕乱码久久午夜不卡 | 欧美一区二区三区免费视频| 亚洲国产你懂的| 欧美高清激情brazzers| 美美哒免费高清在线观看视频一区二区| 欧美日韩精品一区二区三区| 日韩专区一卡二卡| 这里只有精品99re| 国产一二精品视频| 中文字幕一区二区在线观看| 在线视频一区二区三| 视频一区视频二区在线观看| 日韩精品一区二区三区视频播放| 国内精品国产三级国产a久久| 欧美激情中文字幕一区二区| 不卡一区二区三区四区| 一区二区三区小说| 欧美二区三区91| 精品一区免费av| 亚洲欧洲精品一区二区三区 | 欧美一区二区三区免费大片| 国产一区在线观看视频| 亚洲色图欧洲色图婷婷| 欧美乱妇一区二区三区不卡视频| 韩国中文字幕2020精品| 亚洲欧洲综合另类在线|