I2C 버스의 주소를 수신하고 그에 따라 실행하도록 MCU를 코딩하는 방법을 이해하지 못했습니다. C의 많은 예제 코드는 마스터 디바이스 용이다. 슬레이브 디바이스에 대한 코드를 작성하는 방법을 더 잘 이해하고 싶습니다. SMB0STA 상태 레지스터를 사용합니까? 나는 큐를 데이터를 시작하고 출력하는 것을 "들으"것이라고 생각하는 함수를 게시했다. 0xA8
은 "자체 주소 + R 수신 됨, ACK 전송 됨"에 대한 상태 코드입니다. 내 C8051F020 MCU 데이터 시트에 따르면.I2C 슬레이브 모드 프로그래밍 방법
unsigned char i2c_Slave_Read (void)
{
unsigned char data_out[8];
data_out[8] = "LED 1 ON";
while (SI)
if (SMB0STA == 0xA8)
{
P5 = 0x10;
SMB0DAT = data_out;
}
}