мы можем написать три подпрограммы для работы с I2С-совместимой микросхемой МАХ518 (предполагается, что под линии SCL и SDA задействованы 0-й и 1-й выводы порта А микроконтроллера PIC16F84, работающего на частоте 20 МГц). Код этих подпрограмм приведен в Программе 12.9.
∙ START
Эта подпрограмма сначала высвобождает линии SCL и SDA, на которых в результате формируется ВЫСОКИЙ уровень на время не менее 1.3 мкс (
∙ STOP
Для формирования состояния СТОП на обе линии сначала выставляется НИЗКИЙ уровень (в принципе шина и так должна находиться в таком состоянии после передачи сброшенного бита квитирования). Затем высвобождается линия SCL, в результате чего на ней появляется ВЫСОКИЙ уровень. А после задержки длительностью 0.6 мкс (
∙ I2C_OUT
Эта подпрограмма передает по шине восемь битов содержимого регистра DATA_OUT, начиная со старшего бита, и контролирует подтверждение приема ведомым.
Первая операция реализуется путем многократного сдвига содержимого регистра с проверкой флага переноса, значение которого выдается на линию SDA. После выдачи каждого бита данных на линии SCL формируется тактовый импульс, параметры которого