今回作った関数です。i2c_readack()はソフトi2cモジュールを作ったときから作ってあったんですが、いまいちまじめにデバッグせず今回やっと日の目見ました。バグもつぶせたし。
アドレススキャン関数です。i2c_readack()関数があったので、スタートコンディションの後にアドレス+W入れて、ACKをセンスすると言うものです。引っかかったアドレスをヘキサデシマル表示変換関数を経由LCD該当カーソル位置に表示します。
// i2c address scanning test unsigned char i2c_scan(unsigned char data){ unsigned char ack_data; i2c_start(); // start condition i2c_write(data); // addr & wite mode ack_data=i2c_readack(); // if ack:0 i2c_stop(); return (ack_data); }