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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? i2c.c

?? WinCE5.0BSP for Renesas SH7770
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	)
{
DWORD	Length;
PBYTE	pWrite = (PBYTE)pBuf;
RegMCR	mcr;
RegMIER	mier;
RegMSR	msr;
PI2C_DRIVER_INFO	pI2c = pOpen -> pI2CHandle;

	if ( dwLen < 2 ) return 0;

	if ( InitializeI2C(pOpen, TRUE) == FALSE )
		goto write_failure;
	if ( SetCCR(pOpen) == FALSE )
		goto write_failure;

	try {
		mcr.AsDWORD = READ_REGISTER_ULONG(pI2c -> MCR);
		mcr.bits.ESG = 0;
		mcr.bits.MIE = 1;
		mcr.bits.TSBE = 0;
		mcr.bits.FSB = 0;
		if ( pOpen -> bSingleStage == TRUE ){
			mcr.bits.MDBS = 1;
		}else{
			mcr.bits.MDBS = 0;
		}
		WRITE_REGISTER_ULONG(pI2c -> MCR, mcr.AsDWORD);
		mcr.AsDWORD = READ_REGISTER_ULONG(pI2c -> MCR);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		goto write_failure;
	}

	if ( mcr.bits.FSDA ){
//	Other I2C device is using the I2C bus.
		SetLastError( I2C_BUS_BUSY );
		goto write_failure;
	}

	try {
		WRITE_REGISTER_ULONG(pI2c -> MAR, *(pWrite++) & 0xfe);
		dwLen --;
		WRITE_REGISTER_ULONG(pI2c -> TXD, *pWrite);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		goto write_failure;
	}
	ResetEvent( pI2c -> hIntEvent );

	mier.AsDWORD = 0;
	mier.bits.MATE = 1;
	mier.bits.MDEE = 1;
	mier.bits.MALE = 1;
	mier.bits.MNRE = 1;
	mier.bits.MSTE = 1;
	try {
		WRITE_REGISTER_ULONG(pI2c -> MIER, mier.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		goto write_failure;
	}

	pI2c -> data -> dwType = I2C_MASTER_TX;
	pI2c -> data -> dwCount = dwLen;
	pI2c -> data -> dwPoint = 1;
	for( Length = 0;Length < dwLen;Length ++ ){
		pI2c -> data -> bBuffer[Length] = *(pWrite++);
	}

	mcr.bits.ESG = 1;

	try {
		WRITE_REGISTER_ULONG(pI2c -> MCR, mcr.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		goto write_failure;
	}

	if ( WaitForSingleObject(pI2c -> hIntEvent, I2C_WRITE_TIMEOUT) == WAIT_TIMEOUT ){
		SetLastError( I2C_TIMEOUT );
		goto write_failure;
	}
	// for 100Kbps
	Sleep(1);
	try {
		msr.AsDWORD = READ_REGISTER_ULONG(pI2c -> MSR);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		goto write_failure;
	}

	if ( msr.bits.MAL ){
		SetLastError( I2C_MASTER_ARBITRATION_LOST );
		goto write_failure;
	}
	if ( msr.bits.MNR ){
		SetLastError( I2C_MASTER_NACK_RECEIVED );
		goto write_failure;
	}

	try {
		msr.AsDWORD = 0;
		WRITE_REGISTER_ULONG(pI2c -> MSR, msr.AsDWORD);
		mcr.bits.MIE = 0;
		WRITE_REGISTER_ULONG(pI2c -> MCR, mcr.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		goto write_failure;
	}
	return pI2c -> data -> dwPoint;

write_failure:
	DEBUGMSG(ZONE_ERROR, (TEXT("Write failure\r\n")));
	try {
		msr.AsDWORD = 0;
		mcr.AsDWORD = 0;

		WRITE_REGISTER_ULONG(pI2c -> MSR, msr.AsDWORD);
		WRITE_REGISTER_ULONG(pI2c -> MIER, 0);
		WRITE_REGISTER_ULONG(pI2c -> MCR, READ_REGISTER_ULONG(pI2c -> MCR) & mcr.AsDWORD);

	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
	}
	return 0;
}

DWORD
I2C_MasterRead(
	PI2C_OPEN_INFO		pOpen,
	LPCVOID				pBuf,
	DWORD				dwLen
	)
{
DWORD	Length;
PBYTE	pRead = (PBYTE)pBuf;
RegMCR	mcr;
RegMIER	mier;
RegMSR	msr;
PI2C_DRIVER_INFO pI2c = pOpen -> pI2CHandle;

	InitializeI2C(pOpen, TRUE);
	try {
		mcr.AsDWORD = READ_REGISTER_ULONG(pI2c -> MCR);
		mcr.bits.ESG = 0;
		mcr.bits.MIE = 1;
		mcr.bits.FSB = 0;
		if ( pOpen -> bSingleStage == TRUE ){
			mcr.bits.MDBS = 1;
		}else{
			mcr.bits.MDBS = 0;
		}
		WRITE_REGISTER_ULONG(pI2c -> MCR, mcr.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		return 0;
	}
	if ( SetCCR(pOpen) == FALSE ){
		return 0;
	}
	try {
		mcr.AsDWORD = READ_REGISTER_ULONG(pI2c -> MCR);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		return 0;
	}
	if ( mcr.bits.FSDA ){
//	Other I2C device is using the I2C bus.
		mcr.AsDWORD = 0;
		mcr.bits.FSB = 1;
		WRITE_REGISTER_ULONG(pI2c -> MCR, READ_REGISTER_ULONG(pI2c -> MCR) & mcr.AsDWORD);
		SetLastError( I2C_BUS_BUSY );
		return 0;
	}

	try {
		mier.AsDWORD = 0;
		mier.bits.MATE = 1;
		mier.bits.MDRE = 1;
		mier.bits.MSTE = 1;
		mier.bits.MALE = 1;
		mier.bits.MNRE = 1;
		WRITE_REGISTER_ULONG(pI2c -> MIER, mier.AsDWORD);
		WRITE_REGISTER_ULONG(pI2c -> MAR, *pRead | 0x01);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		return 0;
	}

	pI2c -> data -> dwType = I2C_MASTER_RX;
	pI2c -> data -> dwPoint = 0;
	pI2c -> data -> dwCount = dwLen;
	ResetEvent( pI2c -> hIntEvent );

	mcr.bits.ESG = 1;
	if ( dwLen == 1 ){
		mcr.bits.FSB = 1;
	}
	try {
		WRITE_REGISTER_ULONG(pI2c -> MCR, mcr.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		return 0;
	}

	if ( WaitForSingleObject(pI2c -> hIntEvent, I2C_READ_TIMEOUT) != WAIT_TIMEOUT ){
		for( Length = 0;Length < pI2c -> data -> dwPoint;Length ++ ){
			*(pRead++) = pI2c -> data -> bBuffer[Length];
		}
	}
	else{
		Length = 0;
		SetLastError( I2C_TIMEOUT );
	}

	try {
		msr.AsDWORD = READ_REGISTER_ULONG(pI2c -> MSR);
		if ( msr.bits.MAL ){
			SetLastError( I2C_MASTER_ARBITRATION_LOST );
			msr.bits.MAL = 0;
			WRITE_REGISTER_ULONG(pI2c -> MSR, msr.AsDWORD);
			Length = 0;
		}
//	WRITE_REGISTER_ULONG(pI2c -> MIER, 0);
		msr.AsDWORD = 0;
		mcr.AsDWORD = 0;
		mcr.bits.FSB = 1;

		WRITE_REGISTER_ULONG(pI2c -> MSR, msr.AsDWORD);
		WRITE_REGISTER_ULONG(pI2c -> MCR, READ_REGISTER_ULONG(pI2c -> MCR) & mcr.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		return 0;
	}
	return Length;

}

DWORD
I2C_SlaveWrite(
	PI2C_OPEN_INFO		pOpen,
	LPVOID				pBuf,
	DWORD				dwLen
	)
{
PBYTE	pWrite = (PBYTE)pBuf;
RegSCR	scr;
RegSIER	sier;
DWORD	Length;
PI2C_DRIVER_INFO pI2c = pOpen -> pI2CHandle;


	if ( InitializeI2C(pOpen, FALSE) == FALSE )
		goto write_failure;

	try {
		scr.AsDWORD = 0;
		scr.bits.SIE = 1;
		if ( pOpen -> bSingleStage == TRUE ){
			scr.bits.SDBS = 1;
		}else{
			scr.bits.SDBS = 0;
		}
		WRITE_REGISTER_ULONG(pI2c -> SAR, *(pWrite++));
		dwLen --;
		WRITE_REGISTER_ULONG(pI2c -> SCR, scr.AsDWORD);
		WRITE_REGISTER_ULONG(pI2c -> TXD, *pWrite);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		goto write_failure;
	}

	pI2c -> data -> dwType = I2C_SLAVE_TX;
	pI2c -> data -> dwCount = dwLen;
	pI2c -> data -> dwPoint = 1;
	for( Length = 0;Length < dwLen;Length ++ ){
		pI2c -> data -> bBuffer[Length] = *(pWrite++);
	}

	try {
		sier.AsDWORD = 0;
		sier.bits.SARE = 1;
		sier.bits.SDEE = 1;
		sier.bits.SSRE = 1;
		WRITE_REGISTER_ULONG(pI2c -> SIER, sier.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		goto write_failure;
	}

	ResetEvent( pI2c -> hIntEvent );

	if ( WaitForSingleObject(pI2c -> hIntEvent, I2C_SWRITE_TIMEOUT) == WAIT_TIMEOUT ){
		SetLastError( I2C_TIMEOUT );
		goto write_failure;
	}
	try {
		sier.AsDWORD = 0;
		WRITE_REGISTER_ULONG(pI2c -> SIER, sier.AsDWORD);
		scr.AsDWORD = 0;
		WRITE_REGISTER_ULONG(pI2c -> SCR, scr.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		goto write_failure;
	}
	return pI2c -> data -> dwPoint;

write_failure:
	try {
		sier.AsDWORD = 0;
		WRITE_REGISTER_ULONG(pI2c -> SIER, sier.AsDWORD);
		scr.AsDWORD = 0;
		WRITE_REGISTER_ULONG(pI2c -> SCR, scr.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
	}
	return 0;
}

DWORD
I2C_SlaveRead(
	PI2C_OPEN_INFO		pOpen,
	LPCVOID				pBuf,
	DWORD				dwLen
	)
{
DWORD	Length;
PBYTE	pRead = (PBYTE)pBuf;
RegSCR	scr;
//RegSSR	ssr;
RegSIER	sier;
PI2C_DRIVER_INFO pI2c = pOpen -> pI2CHandle;

	if ( InitializeI2C(pOpen, pOpen -> dwBaudrate) == FALSE )
		return 0;

	try {
		WRITE_REGISTER_ULONG(pI2c -> SAR, *pRead);

		scr.AsDWORD = 0;
		scr.bits.SIE = 1;
		if ( pOpen -> bSingleStage == TRUE ){
			scr.bits.SDBS = 1;
		}else{
			scr.bits.SDBS = 0;
		}
		WRITE_REGISTER_ULONG(pI2c -> SCR, scr.AsDWORD);

		pI2c -> data -> dwType = I2C_SLAVE_RX;
		pI2c -> data -> dwPoint = 0;
		pI2c -> data -> dwCount = dwLen;

		sier.AsDWORD = 0;
		sier.bits.SARE = 1;
		sier.bits.SDRE = 1;
		sier.bits.SSRE = 1;
		WRITE_REGISTER_ULONG(pI2c -> SIER, sier.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		return 0;
	}
	ResetEvent( pI2c -> hIntEvent );

	if ( WaitForSingleObject(pI2c -> hIntEvent, I2C_SREAD_TIMEOUT) != WAIT_TIMEOUT ){
		for( Length = 0;Length < pI2c -> data -> dwPoint;Length ++ ){
			*(pRead++) = pI2c -> data -> bBuffer[Length];
		}
	}else{
		SetLastError(I2C_TIMEOUT);
		Length = 0;
	}

	try {
		sier.AsDWORD = 0;
		WRITE_REGISTER_ULONG(pI2c -> SIER, sier.AsDWORD);
		scr.AsDWORD = 0;
		WRITE_REGISTER_ULONG(pI2c -> SCR, scr.AsDWORD);
	} except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
		EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
		return 0;
	}
	return Length;
}



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区在线观看精品| 制服丝袜中文字幕一区| 国产丶欧美丶日本不卡视频| 美女爽到高潮91| 日本不卡高清视频| 奇米色一区二区三区四区| 奇米综合一区二区三区精品视频| 日韩黄色在线观看| 日韩av成人高清| 蜜桃视频一区二区三区| 蜜桃传媒麻豆第一区在线观看| 日韩成人一级大片| 九色综合狠狠综合久久| 韩国av一区二区三区| 国产麻豆精品久久一二三| 国产.欧美.日韩| av成人免费在线| 日本乱人伦一区| 欧美军同video69gay| 日韩一卡二卡三卡四卡| 久久久久久久精| 欧美高清在线一区二区| 亚洲另类春色校园小说| 亚洲超丰满肉感bbw| 六月丁香综合在线视频| 国产制服丝袜一区| 99久久综合精品| 欧美三片在线视频观看| 精品久久久久一区二区国产| 欧美国产日本韩| 亚洲午夜精品久久久久久久久| 日日噜噜夜夜狠狠视频欧美人| 久久精品国产澳门| 成人av动漫网站| 欧美另类久久久品| 久久老女人爱爱| 亚洲男人电影天堂| 麻豆精品蜜桃视频网站| 国产成人av电影| 欧美在线你懂的| 欧美精品一区二区久久久| 一色桃子久久精品亚洲| 香蕉久久夜色精品国产使用方法 | av资源网一区| 91.xcao| 国产女同性恋一区二区| 一区二区三区高清在线| 韩国v欧美v亚洲v日本v| 色哟哟国产精品| 精品国产电影一区二区| 亚洲黄网站在线观看| 国产一区二区三区视频在线播放| 91丝袜美腿高跟国产极品老师 | 欧美一级一区二区| 国产精品久久久久久户外露出 | 99久久久久久| 日韩片之四级片| 亚洲图片欧美激情| 精品系列免费在线观看| 色婷婷综合久久久中文字幕| 久久精品在线观看| 日韩av一二三| 91黄色激情网站| 久久久久9999亚洲精品| 日本不卡视频在线观看| 一本久久a久久精品亚洲| 久久先锋影音av鲁色资源| 亚洲二区在线视频| 不卡欧美aaaaa| 日韩欧美激情在线| 香蕉加勒比综合久久| 91蜜桃免费观看视频| 久久精品亚洲精品国产欧美| 日韩成人免费在线| 在线亚洲人成电影网站色www| 国产欧美精品一区二区三区四区| 久久国产福利国产秒拍| 欧美日韩国产影片| 一区二区三区久久| 丁香五精品蜜臀久久久久99网站| 日韩视频免费直播| 午夜影视日本亚洲欧洲精品| 一本大道久久a久久精二百| 国产欧美日韩卡一| 国产精品自拍在线| 久久网这里都是精品| 久久不见久久见免费视频7| 欧美三级日韩三级| 欧美不卡视频一区| 亚洲黄网站在线观看| 免费一级片91| 7777精品久久久大香线蕉| 一区二区三区电影在线播| 亚洲欧美日韩国产综合在线| 精品亚洲欧美一区| 国产一区二区三区免费播放| 欧美高清视频一二三区| 蜜臀av在线播放一区二区三区| 亚洲精品在线观看网站| 成人app在线| 樱花影视一区二区| 日韩视频中午一区| 成人性生交大片| 亚洲午夜av在线| 日韩欧美高清一区| 成av人片一区二区| 亚洲国产中文字幕在线视频综合| 欧美一区二区三区在线观看| 国产在线精品一区二区| 亚洲人精品一区| 91精品国产欧美一区二区成人| 精品夜夜嗨av一区二区三区| 亚洲色图视频网站| 91麻豆精品国产自产在线 | 欧美一区二区三区在线观看视频| 国产乱码字幕精品高清av| 亚洲激情男女视频| 日韩欧美久久久| 色综合久久久久久久| 麻豆成人久久精品二区三区小说| 国产亚洲欧美激情| 91国产免费观看| 精品在线视频一区| 一级精品视频在线观看宜春院| 欧美成人综合网站| 91色视频在线| 韩日精品视频一区| 一区二区成人在线视频| 精品粉嫩超白一线天av| 欧亚洲嫩模精品一区三区| 久久99热99| 一区二区三区欧美亚洲| 久久久综合激的五月天| 欧美日韩电影一区| k8久久久一区二区三区| 蜜臀久久久99精品久久久久久| 亚洲欧美日韩在线| 精品国产凹凸成av人网站| 欧美系列一区二区| 成人精品在线视频观看| 奇米色一区二区三区四区| 亚洲精品欧美专区| 久久精品视频免费| 4438x亚洲最大成人网| 91丨九色丨蝌蚪富婆spa| 国产在线精品不卡| 蜜桃久久av一区| 亚洲第一精品在线| 亚洲人午夜精品天堂一二香蕉| 国产欧美日韩久久| 337p日本欧洲亚洲大胆色噜噜| 欧美日韩视频在线第一区| 99视频精品在线| 国产成人av资源| 国产一区二三区| 日本亚洲最大的色成网站www| 亚洲午夜羞羞片| 亚洲欧美日韩在线播放| 国产精品毛片久久久久久| 久久久亚洲午夜电影| 日韩久久免费av| 欧美精品18+| 欧美羞羞免费网站| 色综合天天天天做夜夜夜夜做| 国产馆精品极品| 麻豆国产精品官网| 日韩成人精品在线| 午夜视频在线观看一区| 一区二区欧美国产| 亚洲免费在线播放| 亚洲美女屁股眼交| 伊人性伊人情综合网| 亚洲女同女同女同女同女同69| 1024成人网| 亚洲精品伦理在线| 亚洲靠逼com| 亚洲视频一二三| 亚洲精品日韩一| 一级女性全黄久久生活片免费| 亚洲精品高清在线观看| 伊人性伊人情综合网| 亚洲伊人色欲综合网| 亚洲在线观看免费| 亚洲一区影音先锋| 香蕉加勒比综合久久| 日韩成人精品在线观看| 蜜臀av一级做a爰片久久| 经典三级视频一区| 精品一区二区三区不卡| 国产一区二区三区最好精华液| 黄网站免费久久| 国产福利一区二区三区在线视频| 国产在线视频不卡二| 国产盗摄一区二区| av网站一区二区三区| 91浏览器打开| 欧美日韩免费在线视频| 日韩免费在线观看| 国产欧美视频一区二区| 综合久久一区二区三区|