마스터가 슬레이브의 데이터를 읽을 때 SDA와 SCL 수준을 어떻게 설정해야 하나요?
어떤 종류의 마이크로 컨트롤러를 가지고 있는지 모르겠습니다. 먼저 SDA를 입력 상태로 설정하고 51을 사용하지 않는 것 같습니다. 그런 다음 데이터를 읽을 때 SCL을 높게 설정하십시오. SDA 핀 레벨 상태를 확인하려면 DATA |= 1입니다. 그런 다음 SCL을 낮게 설정하고 다음 비트가 읽힐 때까지 기다립니다. DATA<<1이면 데이터가 왼쪽으로 한 비트 이동됩니다. SDA 상태를 확인하려면 SCL을 다시 높게 설정하십시오. 8비트 데이터를 순서대로 완성합니다.
INT8U I2C_ReciveByte(void)
{
INT8U 데이터 = 0;
INT8U iLoop;
SETBIT (I2C_PORT,SDA); //SDA를 높게 설정
CLEARBIT(I2C_DIR,SDA); //SDA를 입력으로 설정
//8비트 데이터를 비트 단위로 읽기
p> p>for(iLoop = 0; iLoop < 8; iLoop++){
SETBIT(I2C_PORT,SCL) // SCL을 높게 설정
I2C_Delay(1) ;
데이터 <<= 1;
if(CHECKBIT(I2C_IN,SDA) != 0){//SDA 상태 감지
데이터 |= 1 ;
}
CLEARBIT(I2C_PORT,SCL); // SCL을 낮게 설정
I2C_Delay(1);
} p>
SETBIT(I2C_DIR,SDA ); // SDA를 출력으로 설정
데이터 반환;
}