в последней итерации цикла у вас получается: * выдается последний бит данных; * задержка * устанавливается SCL=1; * задержка * устанавливается SCL=0, !!!по спаду сигнала SCL SHT выдает на SDA сигнал ACK (Figure 5 ДШ), начинается конфликт на линии SDA!!! * проверяется условие прекращения цикла, выполняется переход; * вывод SDA настраивается на ввод !!!это надо делать перед выдачей 0 на SCL!!!
Смотрите как сделан выход из цикла у меня в s_write_byte.