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

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

?? i2cdll.cpp

?? 通過并口控制I2C總線的動(dòng)態(tài)庫(kù)源碼
?? CPP
字號(hào):
// I2Cdll.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "io.h"
#include <stdio.h>
//#include "io_supp.h"

#define	TRY_NUM				5
#define EEP_WRITE_TIME		10


 unsigned char f_I2C_Error;

 IICaddress SDA_Out; 
 IICaddress SDA_In;  
 IICaddress SCL_Out;
 IICaddress SCL_In;
 
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
	
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }
    return TRUE;
}
/*
 void WINAPI SetI2CBus(IICaddress *SdaOut,IICaddress *SdaIn,IICaddress *SclOut,IICaddress *SclIn)
{
 SDA_Out.LPTaddress=SdaOut->LPTaddress; 
 SDA_Out.NoBit=SdaOut->NoBit;
 SDA_Out.CPLflag=SdaOut->CPLflag;
 //-------------------------------------- 
 SDA_In.LPTaddress=SdaIn->LPTaddress; 
 SDA_In.NoBit=SdaIn->NoBit;
 SDA_In.CPLflag=SdaIn->CPLflag;
 //--------------------------------------
 SCL_Out.LPTaddress=SclOut->LPTaddress; 
 SCL_Out.NoBit=SclOut->NoBit;
 SCL_Out.CPLflag=SclOut->CPLflag;
 //--------------------------------------
 SCL_In.LPTaddress=SclIn->LPTaddress; 
 SCL_In.NoBit=SclIn->NoBit;
 SCL_In.CPLflag=SclIn->CPLflag;
}*/
 void WINAPI Set_SDA_Out(short int LPTaddress,unsigned char NoBit,unsigned char CPLflag)
 {
	SDA_Out.LPTaddress=LPTaddress; 
	SDA_Out.NoBit=NoBit;
	SDA_Out.CPLflag=CPLflag;
 }
 void WINAPI Set_SDA_In(short int LPTaddress,unsigned char NoBit,unsigned char CPLflag)
 {
	SDA_In.LPTaddress=LPTaddress; 
	SDA_In.NoBit=NoBit;
	SDA_In.CPLflag=CPLflag;
 }
 void WINAPI Set_SCL_Out(short int LPTaddress,unsigned char NoBit,unsigned char CPLflag)
 {
   SCL_Out.LPTaddress=LPTaddress; 
 SCL_Out.NoBit=NoBit;
 SCL_Out.CPLflag=CPLflag;
 }
 void WINAPI Set_SCL_In(short int LPTaddress,unsigned char NoBit,unsigned char CPLflag)
 {
	 SCL_In.LPTaddress=LPTaddress; 
	SCL_In.NoBit=NoBit;
	SCL_In.CPLflag=CPLflag;
 }
 unsigned char WINAPI GetI2CStatus(void)
{
   return(f_I2C_Error);
}
 void WINAPI SetI2CStatus(unsigned char flag)
{
	f_I2C_Error=flag;
}
void DoEvents()
{
	MSG  msg;  
	if(GetMessage(&msg,(HWND)GetCurrentProcessId(),0,0))
	{
	TranslateMessage(&msg); 
	DispatchMessage(&msg);
	}
}
 void WINAPI LPT_WriteByte( short int address, char data)
{
 PortOut(address,data);
}
  char WINAPI LPT_ReadByte( short int address)
{
return(PortIn(address));
}

void WINAPI LPT_SetBit(short int address,unsigned char Bit)
{
	SetPortBit(address,Bit);
}
void WINAPI LPT_ClrBit(short int address,unsigned char Bit)
{
	ClrPortBit(address,Bit);
}
short int WINAPI LPT_GetBit(short int address,unsigned char Bit)
{
 return(GetPortBit(address,Bit));
}
void WINAPI LPT_NotBit(short int address,unsigned char Bit)
{
	NotPortBit(address,Bit);
}
 void WINAPI SDA_WriteOne(void)
{
//*******************************************************************************
//-------------------------------------------------------------------------------
if (SDA_Out.CPLflag)
ClrPortBit(SDA_Out.LPTaddress,SDA_Out.NoBit);
else
SetPortBit(SDA_Out.LPTaddress,SDA_Out.NoBit);
//-------------------------------------------------------------------------------

//********************************************************************************
}


 void WINAPI SDA_WriteZero(void)
{
if(SDA_Out.CPLflag) 
SetPortBit(SDA_Out.LPTaddress,SDA_Out.NoBit);
else
ClrPortBit(SDA_Out.LPTaddress,SDA_Out.NoBit);
}

 unsigned char WINAPI  SDA_Read(void)
{
if(SDA_In.CPLflag)
{
  if(GetPortBit(SDA_In.LPTaddress,SDA_In.NoBit))
	return 0;
  else
	return 1;
}
else
{
  if(GetPortBit(SDA_In.LPTaddress,SDA_In.NoBit))
     return 1;
  else
	 return 0;
}
}

 void WINAPI SCL_WriteOne(void)
{
if(SCL_Out.CPLflag)
ClrPortBit(SCL_Out.LPTaddress,SCL_Out.NoBit);
else
SetPortBit(SCL_Out.LPTaddress,SCL_Out.NoBit);
}

 void WINAPI SCL_WriteZero(void)
{
if(SCL_Out.CPLflag)
SetPortBit(SCL_Out.LPTaddress,SCL_Out.NoBit);
else
ClrPortBit(SCL_Out.LPTaddress,SCL_Out.NoBit);
}

 unsigned char WINAPI SCL_Read(void)
{
if(SCL_In.CPLflag)
{
  if(GetPortBit(SCL_In.LPTaddress,SCL_In.NoBit))
	return 0;
  else
	return 1;
}
else
{
  if(GetPortBit(SCL_In.LPTaddress,SCL_In.NoBit))
     return 1;
  else
	 return 0;
}
}
//----------------------------------------------------
void IicBusDelay( void )
{
}

 void WINAPI SetSDA(void)
{
	unsigned char chr1;
	SDA_WriteOne();
	IicBusDelay();
	if(SDA_Read())
		return ;
	for(chr1=0; chr1<20; chr1++)			// 為避免數(shù)據(jù)傳送時(shí)受IIC總線上大電容(100-1000P)的影響
		if(SDA_Read())
			break ;
}	

void WINAPI SetSCL(void)
{
	unsigned int chr1;
	SCL_WriteOne();
	IicBusDelay();
	if( SCL_Read())
		return ;
	for(chr1=0; chr1<20000; chr1++)			// 為避免數(shù)據(jù)傳送時(shí)受IIC總線上大電容(100-1000P)的影響,以及適應(yīng)某些反應(yīng)速度慢的IC在做出反應(yīng)前拉低SCL的做法
		if( SCL_Read())
			break ;
}	
		
 void WINAPI ClrSDA(void)
{
	SDA_WriteZero();
	IicBusDelay();
}	

 void WINAPI ClrSCL(void)
{
	SCL_WriteZero();
	IicBusDelay();
}	

 void WINAPI IicCheckAck(void)
{
	SetSDA();
	SetSCL();
	if( SDA_Read())
	{
		f_I2C_Error =1 ;
	}
	ClrSCL();	
}

 void WINAPI IicSendByte( unsigned char chr1 )
{
	unsigned char chr2;
	
	for(chr2=0; chr2<8; chr2++)
	{
		if( chr1 & 0x80 ) 
		SetSDA();
		else 
		ClrSDA();
		chr1 = chr1 << 1;
		SetSCL();
		ClrSCL();
	}
	IicCheckAck() ;
}

 void WINAPI IicStart( unsigned char SlaveAddress )
{
	SetSDA();
	SetSCL();
	if( SDA_Read()==FALSE) 
	{
		f_I2C_Error = 1 ;
		return ;
	}
	if( SCL_Read()==FALSE ) 
	{
		f_I2C_Error = 1 ;
		return ;
	}
	ClrSDA();
	ClrSCL();

	IicSendByte(SlaveAddress);
}

 void WINAPI IicStop( void )
{
	ClrSCL();
	ClrSDA();
	SetSCL();
	SetSDA();
}


 unsigned char WINAPI IicReceiveByte( void )
{
	unsigned char chr1, chr2;
	
	SetSDA();
	for( chr2 = 0; chr2 < 8; chr2++ )
	{
		SetSCL();
		chr1 = chr1 << 1;
		if( SDA_Read()==TRUE ) 
			chr1++;
		ClrSCL();
	}
	
	SetSCL();
	ClrSCL();				// Send No-ACK
	
	IicStop() ;
	return chr1 ;
}
//---------------------------------------------

 void WINAPI IicAckTest( unsigned char SlaveAddr )
{
	unsigned char BusTryCnt = TRY_NUM ;
	f_I2C_Error = 0 ;
	do {
		IicStart( SlaveAddr ) ;
		IicStop() ;
		if(  f_I2C_Error==0 )
			return ;
	} while( --BusTryCnt ) ;
}

 void WINAPI IicWriteByte( unsigned char SlaveAddr, unsigned char RegAddr, unsigned char RegData )
{
	unsigned char BusTryCnt = TRY_NUM ;
	f_I2C_Error = 0 ;
	do {
		IicStart( SlaveAddr ) ;
		IicSendByte( RegAddr ) ;
		IicSendByte( RegData ) ;
		IicStop() ;
		if( f_I2C_Error==0 )
			return ;
	} while( --BusTryCnt ) ;
}
 unsigned char WINAPI IicReadByte( unsigned char SlaveAddr, unsigned char RegAddr )
{
	unsigned char r, BusTryCnt = TRY_NUM ;
	f_I2C_Error = 0 ;
	do {
		IicStart( SlaveAddr ) ;
		IicSendByte( RegAddr ) ;
		IicStart( SlaveAddr | 0x01 ) ;
		r = IicReceiveByte() ;
		if(  f_I2C_Error==0 )
			return r ;
	} while( --BusTryCnt ) ;

	return r ;
}

 void WINAPI EndI2C(HINSTANCE hinst)
{
//IO_DllMain(hinst, DLL_PROCESS_DETACH, NULL);
	 UnloadIODLL();
}


//===================================================================
unsigned char IicToolTest()
{
unsigned char i;
unsigned char j;
unsigned char SCLFindOut=0;
unsigned char SDAFindOut=0;
//=================================================================================
for(i=0;i<=7;i++)
{
//-------------------------------------------------------
for(j=0;j<=7;j++)
{
SetPortBit(888,i);
if(GetPortBit(889,j))
{
//--------------------------------------
	ClrPortBit(888,i);
	if(!GetPortBit(889,j))
    {
		if(!SDAFindOut)
        {
         SDA_Out.NoBit = i;
         SDA_In.NoBit = j;
         SDAFindOut =1;
		}
       else
	   {
         SCL_Out.NoBit = i;
         SCL_In.NoBit = j;
         SCLFindOut = 1;
	   }
       break;
	}
//--------------------------------------
}
else
{
//-------------------------------
   ClrPortBit(888,i);
   if(GetPortBit(889, j))
   {
	   if(!SDAFindOut)
	   {
         SDA_Out.NoBit = i;
         SDA_In.NoBit = j;
         SDAFindOut = 1;
	   }
      else
	  {
         SCL_Out.NoBit = i;
         SCL_In.NoBit = j;
         SCLFindOut = 1;
	  }
   break;
   }
//-------------------------------
}
}
//--------------------------------------------------------
if(SDAFindOut==1 && SCLFindOut==1)
             break;
}
//==============================================================================
SDA_In.LPTaddress = 889;
SDA_Out.LPTaddress = 888;
SCL_In.LPTaddress = 889;
SCL_Out.LPTaddress = 888;
if(SDAFindOut==1 && SCLFindOut==1)
return(1);
else
return(0);
}
//================================================================================
unsigned char  IicBusTest(unsigned char Address, unsigned char temp_SDA_In_CPLflag, unsigned char temp_SDA_Out_CPLflag,unsigned char temp_SCL_In_CPLflag,unsigned char temp_SCL_Out_CPLflag)
{
unsigned char tempIn;
unsigned char tempOut;
DoEvents();
SDA_In.CPLflag = temp_SDA_In_CPLflag;
SDA_Out.CPLflag = temp_SDA_Out_CPLflag;
SCL_In.CPLflag = temp_SCL_In_CPLflag;
SCL_Out.CPLflag = temp_SCL_Out_CPLflag;
f_I2C_Error =0;
//IicStart(Address);
IicAckTest(Address);

    if(!f_I2C_Error)
    return(1);
 //----------------------------
 tempIn = SDA_In.NoBit; //SCL,SDA互換
 tempOut = SDA_Out.NoBit;
 SDA_In.NoBit = SCL_In.NoBit;
 SDA_Out.NoBit = SCL_Out.NoBit;
 SCL_In.NoBit = tempIn;
 SCL_Out.NoBit = tempOut;
 //---------------------------
 
f_I2C_Error = 0;
//IicStart(Address);
IicAckTest(Address);

    if(!f_I2C_Error)
    return(1);
 return(0);
}
//=================================================================================
unsigned char IicBusSearch(unsigned char deviceAddress)
{
  if(!IicToolTest())
  {
  //printf("IicTool not finded !!!");
  return(0);
  }
 if(IicBusTest(deviceAddress, 0, 0, 0, 0))      //0
   return 1;
 else if(IicBusTest(deviceAddress, 0, 0, 0, 1)) //1
         return 1;
 else if(IicBusTest(deviceAddress, 0, 0, 1, 0)) //2
         return 1;
 else if(IicBusTest(deviceAddress, 0, 0, 1, 1)) //3
         return 1;
 else if(IicBusTest(deviceAddress, 0, 1, 0, 0)) //4
         return 1;
 else if(IicBusTest(deviceAddress, 0, 1, 0, 1)) //5
         return 1;
 else if(IicBusTest(deviceAddress, 0, 1, 1, 0)) //6
         return 1;
 else if(IicBusTest(deviceAddress, 0, 1, 1, 1)) //7
         return 1;
 else if(IicBusTest(deviceAddress, 1, 0, 0, 0)) //8
         return 1;
 else if(IicBusTest(deviceAddress, 1, 0, 0, 1)) //9
         return 1;
 else if(IicBusTest(deviceAddress, 1, 0, 1, 0)) //10
         return 1;
 else if(IicBusTest(deviceAddress, 1, 0, 1, 1)) //11
         return 1;
 else if(IicBusTest(deviceAddress, 1, 1, 0, 0)) //12
         return 1;
 else if(IicBusTest(deviceAddress, 1, 1, 0, 1)) //13
         return 1;
 else if(IicBusTest(deviceAddress, 1, 1, 1, 0)) //14
         return 1;
 else if(IicBusTest(deviceAddress, 1, 1, 1, 1)) //15
         return 1;
         return 0;
}


 unsigned char WINAPI InitI2C(HINSTANCE hinst,unsigned char address)
{
	 //if(LoadLibrary("io")==NULL)
	//	return 0;
//IO_DllMain(hinst, DLL_PROCESS_ATTACH, NULL);
	 LoadIODLL();

/*
     SDA_In.LPTaddress=0x379;
	 SDA_In.NoBit=7;
	 SDA_In.CPLflag=0;
	 SDA_Out.LPTaddress=0x378;
	 SDA_Out.NoBit=0;
	 SDA_Out.CPLflag=1;
	 SCL_In.LPTaddress=0x379;
	 SCL_In.NoBit=6;
	 SCL_In.CPLflag=1;
	 SCL_Out.LPTaddress=0x378;
	 SCL_Out.NoBit=1;
	 SCL_Out.CPLflag=1;
*/
 return(IicBusSearch(address));
}
  void WINAPI InitLPT(HINSTANCE hinst)
{
	  //LoadLibrary("io");
  //IO_DllMain(hinst, DLL_PROCESS_ATTACH, NULL);
	  LoadIODLL();
}
 void WINAPI EndLPT(HINSTANCE hinst)
{
	//IO_DllMain(hinst, DLL_PROCESS_DETACH, NULL);
	UnloadIODLL();
}

 //extern void UnloadIODLL();
//extern int  LoadIODLL(HINSTANCE hInstance);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re6这里只有精品视频在线观看| 色综合天天综合网天天狠天天| 欧美国产综合色视频| 日韩欧美国产精品| 99久久精品国产一区二区三区| 日本亚洲欧美天堂免费| 亚洲成人一区在线| 三级在线观看一区二区 | 日韩欧美一区中文| 欧美一区二区三区在线看| 337p亚洲精品色噜噜狠狠| 91精品国产欧美一区二区18| 日韩欧美一二三区| 久久网站热最新地址| 国产香蕉久久精品综合网| 国产精品青草综合久久久久99| 日韩欧美一级在线播放| 精品国产乱码久久久久久老虎| 在线一区二区三区做爰视频网站| 国产一区不卡视频| 国产成人在线视频播放| 91色.com| 欧美午夜精品电影| 日韩欧美视频一区| 中文字幕高清一区| 伊人性伊人情综合网| 亚洲影视在线观看| 久久国内精品自在自线400部| 五月天网站亚洲| 麻豆成人免费电影| 福利电影一区二区| 国产精品一区二区三区99| 免费日韩伦理电影| 国产成人午夜精品影院观看视频| 久久99国产精品成人| 国产白丝精品91爽爽久久| 97久久久精品综合88久久| 成人免费视频一区二区| 91成人免费在线| 26uuu精品一区二区| 亚洲美女区一区| 美腿丝袜在线亚洲一区| www.欧美亚洲| 日韩视频在线一区二区| 91麻豆精品国产91久久久久久久久| 欧美色图一区二区三区| 精品1区2区在线观看| 亚洲人成亚洲人成在线观看图片| 国产精品三级视频| 国产精品久久久久久一区二区三区| 国产女人18毛片水真多成人如厕| 久久久亚洲欧洲日产国码αv| 久久人人爽爽爽人久久久| 亚洲色图丝袜美腿| 美女视频黄频大全不卡视频在线播放| 日本亚洲欧美天堂免费| av中文一区二区三区| 欧美一区二区观看视频| 最新热久久免费视频| 久久国产精品色婷婷| 欧美性一级生活| 亚洲国产岛国毛片在线| 另类调教123区| 欧美日韩高清影院| 国产精品国产三级国产a| 一区二区三区四区精品在线视频| 亚洲观看高清完整版在线观看| 午夜欧美大尺度福利影院在线看 | 精品亚洲aⅴ乱码一区二区三区| 久久精品国产精品亚洲红杏| 欧日韩精品视频| 91精品国产品国语在线不卡| 久久久久久久久久久久久女国产乱| 日本一区二区久久| 久久精品噜噜噜成人88aⅴ| 欧美三级中文字幕在线观看| 国产精品第四页| 国产精品资源站在线| 欧美成人vps| 日韩精品成人一区二区在线| 在线观看亚洲精品视频| 国产精品久久久久久福利一牛影视| 亚洲一区二区三区四区在线| av在线这里只有精品| 国产蜜臀av在线一区二区三区| 亚洲另类一区二区| 91伊人久久大香线蕉| 欧美激情在线看| 亚洲chinese男男1069| 91高清在线观看| 亚洲精品亚洲人成人网 | 成人黄色软件下载| 久久五月婷婷丁香社区| 精品一区二区三区视频| 欧美一区日韩一区| 热久久国产精品| 欧美一区二区三区男人的天堂| 国产欧美一区二区三区鸳鸯浴| 亚洲精品成人精品456| 99久久精品久久久久久清纯| 国产精品久久久久一区二区三区共 | 亚洲手机成人高清视频| 成人av资源网站| 国产精品国产精品国产专区不片| 日本成人在线网站| 91精品国产综合久久久蜜臀粉嫩| 欧美—级在线免费片| 日韩黄色一级片| 91精品国产综合久久国产大片| 中文字幕一区视频| 久久久久综合网| 亚洲成a人在线观看| 欧美日韩国产大片| 亚洲一二三专区| 欧美三级中文字幕在线观看| 国产情人综合久久777777| 日韩主播视频在线| 69久久夜色精品国产69蝌蚪网| 国产精品久久久久影视| heyzo一本久久综合| ...av二区三区久久精品| 久久99热国产| 国产日韩影视精品| 亚洲va欧美va人人爽午夜| 欧美一区二区三区在线观看 | 国产不卡在线播放| 中文字幕高清不卡| 在线免费亚洲电影| 蜜臀国产一区二区三区在线播放 | 欧美日韩精品一区二区三区蜜桃| 欧美激情在线看| 蜜桃久久av一区| 亚洲国产精品v| 欧美色图在线观看| 亚洲美女屁股眼交3| 91.com视频| 国产精品一区二区三区网站| 亚洲欧洲成人自拍| 欧美电影在哪看比较好| 国产乱人伦偷精品视频免下载| 日韩一区二区电影网| 亚州成人在线电影| 精品国产麻豆免费人成网站| 另类小说视频一区二区| 国产精品美日韩| 成人午夜电影小说| 午夜电影一区二区三区| 26uuu国产在线精品一区二区| 久久99久久99小草精品免视看| 7777精品久久久大香线蕉 | 日韩av成人高清| 欧美一区二区成人| 免费成人你懂的| 91精品午夜视频| 免费av网站大全久久| 国产精品电影院| 欧美电影免费观看高清完整版在 | 国产在线播放一区| 有码一区二区三区| 精品国内二区三区| 欧美日韩一区二区在线视频| 日韩在线一二三区| 国产精品国产三级国产aⅴ中文| av不卡一区二区三区| 奇米影视一区二区三区小说| 亚洲三级在线观看| 久久午夜老司机| 555夜色666亚洲国产免| 不卡的av电影在线观看| 久久99国产精品成人| 亚洲国产乱码最新视频| 884aa四虎影成人精品一区| 蜜臀av一区二区在线免费观看 | 亚洲精品乱码久久久久久久久| 91精彩视频在线观看| 国产美女视频91| 午夜精品视频在线观看| 亚洲丝袜精品丝袜在线| 久久免费电影网| 日韩免费观看高清完整版| 欧美午夜理伦三级在线观看| 99r精品视频| 成人av在线资源网| 国产精品99久久久| 久久精品理论片| 青青草精品视频| 日韩综合小视频| 国产拍揄自揄精品视频麻豆| 色噜噜狠狠成人网p站| 人妖欧美一区二区| 亚洲成在人线免费| 亚洲精品欧美综合四区| 亚洲女同一区二区| 中文字幕一区二区日韩精品绯色| 欧美欧美欧美欧美| 欧美日韩一区二区三区视频 | 欧美成人激情免费网| 欧美一区二区三区色| 91精品久久久久久蜜臀| 国产盗摄精品一区二区三区在线|