MCU をコーディングして I2C バス上のアドレスをリッスンし、それに応じて実行する方法を理解できていません。C のサンプル コードの多くは、マスター デバイス用です。スレーブ デバイスのコードを記述する方法をよりよく理解したいと思います。SMB0STA ステータス レジスタを使用しますか? データを開始して出力するキューを「リッスン」すると思われる関数を以下に投稿しました。0xA8
は「自分のアドレス + R 受信。ACK 送信」のステータスコードです。私のC8051F020 MCUデータシートによると。
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;
}
}