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

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

?? i2c.h

?? 一些LCD庫(kù) 分享給大家了 哈哈~
?? H
字號(hào):
/*********************************************************************
	微 雪 電 子   WaveShare   http://www.waveShare.net            	
		                                                        
目    的:   建立I2C操作庫(kù)
	
目標(biāo)系統(tǒng):   基于AVR單片機(jī)
		                                                                
應(yīng)用軟件:   ICCAVR
		                                                                
版    本:   Version 1.0                                                          
		                                                                
圓版時(shí)間:   2005-06-25
	
開發(fā)人員:   SEE

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

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

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

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

----------------------------------------------------------------------	
對(duì)外變量說明:

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

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

#ifndef I2C_H
#define I2C_H

#include "D:\ICC_H\CmmICC.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ù)功能:
注意事項(xiàng):
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_Start()					
{
	I2CStart();						
	I2CWaitAck();
	if( I2CChkAck()!=I2C_START ) 
		return I2C_ERR;
	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:I2C ReStart
函數(shù)功能:
注意事項(xiàng):
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_Restart()					
{
	I2CStart();						
	I2CWaitAck();
	if( I2CChkAck()!=I2C_RESTART ) 
		return I2C_ERR;
	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:發(fā)送 7位 器件寫地址: XXXX XXX0
函數(shù)功能:
注意事項(xiàng):
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
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ù)功能:
注意事項(xiàng):
提示說明:兼容 發(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ù)功能:
注意事項(xiàng):
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
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ù)功能:
注意事項(xiàng):
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
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ù)功能:
注意事項(xiàng):
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
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ù)功能:
注意事項(xiàng):
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
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ù)功能:
注意事項(xiàng):
提示說明:
輸    入:
返    回:
--------------------------------------------------------------------*/
bool I2C_RcvAckDat(uint8 *pRdDat)	
{
	I2CRcvAckByte();					
	I2CWaitAck();
	if( I2CChkAck()!=I2C_MR_DATA_ACK )
		return I2C_ERR;
	*pRdDat=TWDR;
	return I2C_CRR;
}
/*--------------------------------------------------------------------
函數(shù)名稱:I2C寫器件,寫一個(gè)數(shù)據(jù)
函數(shù)功能:
注意事項(xiàng):
提示說明:
輸    入: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個(gè)數(shù)據(jù)
函數(shù)功能:
注意事項(xiàng):
提示說明:
輸    入:wrDAdr: write device-address 寫器件地址
		 wordAdr: word address 字地址
		 *pWrDat: p->write data 寫入數(shù)據(jù)指針
		 num: number 寫入數(shù)據(jù)個(gè)數(shù)
返    回:
--------------------------------------------------------------------*/
//bool I2C_Write_(uint16 wrDAdr,uint8 wordAdr,
//				  uint8 *pWrDat,uint8 num)
//{
//
//} 
/*--------------------------------------------------------------------
函數(shù)名稱:I2C讀器件,讀一個(gè)數(shù)據(jù)
函數(shù)功能:
注意事項(xiàng):
提示說明:
輸    入: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個(gè)數(shù)據(jù)
函數(shù)功能:
注意事項(xiàng):
提示說明:
輸    入:wrDAdr: write device-address 寫器件地址
		 wordAdr: word address 字地址
		 rdDAdr: read device-address 讀器件地址
		 *pRdDat: p->read data 讀取數(shù)據(jù)指針
		 num: number 讀取數(shù)據(jù)個(gè)數(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
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久久电影| www.亚洲精品| 日韩美女一区二区三区| 毛片不卡一区二区| 久久久久99精品国产片| 国产不卡在线视频| 亚洲欧美成人一区二区三区| 欧美三级电影一区| 蜜臀久久99精品久久久画质超高清| 日韩视频国产视频| 国产成人av一区| 一区二区三区中文在线观看| 欧美精品自拍偷拍| 国内精品在线播放| 国产精品久久久久婷婷二区次| 91丨九色porny丨蝌蚪| 亚洲国产精品久久不卡毛片| 日韩女优av电影在线观看| 国产成人免费在线观看| 亚洲精品亚洲人成人网| 欧美久久久久久久久| 麻豆国产精品官网| 国产精品国产三级国产三级人妇 | 欧美激情综合网| 在线视频你懂得一区二区三区| 免费看黄色91| 国产精品色哟哟| 欧美美女黄视频| 国产高清在线观看免费不卡| 怡红院av一区二区三区| 91麻豆精品国产自产在线观看一区 | 在线区一区二视频| 极品瑜伽女神91| 一区二区三区欧美日韩| 日韩欧美中文字幕精品| 国产91在线观看| 日韩激情一二三区| 亚洲国产精品二十页| 欧美三级电影在线看| 国产精品中文字幕日韩精品| 一区2区3区在线看| 久久精品水蜜桃av综合天堂| 在线观看亚洲a| 国产精品一区一区| 亚洲高清免费一级二级三级| 亚洲精品在线观| 欧美体内she精高潮| 精品一区二区三区免费| 亚洲日本va在线观看| 777久久久精品| 91麻豆swag| 国产尤物一区二区| 丝袜亚洲精品中文字幕一区| 国产精品国产三级国产aⅴ原创| 91精品国产欧美一区二区18| 99精品国产视频| 国产精品一区二区不卡| 婷婷综合另类小说色区| 国产精品久久久久久久久免费樱桃| 欧美一区二区三区性视频| 91网站最新地址| 国产一区亚洲一区| 偷拍一区二区三区| 亚洲激情在线播放| 国产精品免费免费| 精品不卡在线视频| 欧美一区二区三区免费大片| 99国内精品久久| 国产高清无密码一区二区三区| 奇米影视7777精品一区二区| 一区二区三区四区国产精品| 中日韩av电影| 久久九九久精品国产免费直播| 欧美一级在线视频| 在线免费亚洲电影| www.亚洲激情.com| 成人在线一区二区三区| 免费观看在线综合色| 亚洲午夜成aⅴ人片| 亚洲人吸女人奶水| 欧美韩国日本不卡| 久久精品男人天堂av| 日韩免费一区二区| 欧美一区二区免费视频| 欧美三级电影在线观看| 欧洲一区二区av| 91黄视频在线观看| 色综合天天综合网天天看片| 国产成人av网站| 国产剧情一区二区| 国模娜娜一区二区三区| 麻豆久久久久久久| 美日韩黄色大片| 美女高潮久久久| 男人操女人的视频在线观看欧美 | 一区二区三区四区在线免费观看 | a在线欧美一区| www.欧美亚洲| 成人v精品蜜桃久久一区| 国产黑丝在线一区二区三区| 国产伦精一区二区三区| 久久精品久久精品| 美女高潮久久久| 久久精品二区亚洲w码| 美腿丝袜亚洲综合| 激情综合网av| 国产美女在线精品| 国产精品伊人色| 国产成人av一区| 成人精品小蝌蚪| 91丝袜美腿高跟国产极品老师 | 久久久国产精品麻豆| 久久免费精品国产久精品久久久久| 精品少妇一区二区三区免费观看 | 欧美日韩视频第一区| 欧美性色综合网| 7777精品伊人久久久大香线蕉的| 欧美夫妻性生活| 日韩欧美成人午夜| 久久久久久久综合狠狠综合| 久久精品日产第一区二区三区高清版| 国产亚洲午夜高清国产拍精品| 国产女同性恋一区二区| 国产精品久久久久一区二区三区| 日韩美女精品在线| 亚洲成人免费av| 蜜桃视频在线观看一区| 国产乱码精品一区二区三| 高清beeg欧美| 欧美做爰猛烈大尺度电影无法无天| 欧美日韩久久一区| 欧美成人aa大片| 中文文精品字幕一区二区| 亚洲视频电影在线| 亚洲大片一区二区三区| 久久国产尿小便嘘嘘| 高清国产一区二区| 色av成人天堂桃色av| 欧美福利视频导航| 国产丝袜美腿一区二区三区| 欧美国产日韩亚洲一区| 亚洲美女免费在线| 日本v片在线高清不卡在线观看| 精品亚洲成a人| jizz一区二区| 欧美精品三级日韩久久| 久久婷婷色综合| 亚洲色图一区二区三区| 婷婷综合另类小说色区| 国产麻豆午夜三级精品| 色综合久久中文综合久久97| 欧美一区二区三级| 国产精品国产三级国产三级人妇| 亚洲电影视频在线| 国产最新精品免费| 色综合天天综合狠狠| 欧美二区三区91| 国产女人18毛片水真多成人如厕 | 综合激情成人伊人| 丝袜国产日韩另类美女| 国产成人免费在线| 欧美日韩成人在线一区| 久久嫩草精品久久久精品| 一区二区三区四区在线播放 | 91免费版在线| 精品少妇一区二区三区免费观看 | 极品尤物av久久免费看| 99精品久久免费看蜜臀剧情介绍| 91精品国产91久久久久久一区二区| 日本一区二区三区高清不卡| 一区二区三区在线观看网站| 精品一区免费av| 色偷偷88欧美精品久久久| 日韩欧美一区二区视频| 亚洲欧美激情小说另类| 精品一二三四在线| 欧美日韩免费一区二区三区视频| 久久精品人人做人人爽人人| 一区二区三区欧美视频| 国产精品亚洲一区二区三区妖精| 欧美丝袜自拍制服另类| 国产欧美一区二区三区在线看蜜臀 | 日韩视频一区二区三区在线播放 | 亚洲午夜精品网| 成人免费av在线| 欧美大片顶级少妇| 亚洲一区二区三区四区五区黄| 国产成人综合视频| 91精品国产麻豆国产自产在线 | 亚洲一二三区在线观看| 国产精品一二三区在线| 欧美日本一道本在线视频| 中日韩免费视频中文字幕| 蜜乳av一区二区| 欧美日韩视频第一区| 成人欧美一区二区三区黑人麻豆| 国产一区二区三区免费播放| 欧美高清hd18日本| 一区二区在线观看不卡| 国产成人精品免费网站|