///. Интерфейс с внешними устройствами
BIC.B #DNC, DIR ; проверка освобождения шины |
50 микросе- |
дополнительное освобождение линии с целью использования этой же подпрограммы для команды повторяющегося старта ; отправка стартовой последовательности BIS.В #SDA, DIR BIS.В #SCL, DIR ; отправка адреса MOV.В #07h, R13 |
MOV |
wait |
#05h, R1C
rsbit |
MOV.В IN, Rll
AND | #DNC, | Rll |
CMP | #DNC, | Rll |
JNZ | busy | |
DEC | RIO | |
JNZ | wait | |
BIC.B | #DNC, | DIP |
MOV. В RLA.B |
ashift |
R7, Rll Rll
MOV.В Rll, R12
без потери данных
AND. В | #080h, R12 | |
CMP. В | #00h, R12 | |
JNZ | one | |
CALL | tsendzero | |
JMP | zero | |
one | CALL | #sendone |
zero | DEC | R13 |
JNZ | ashift |
счетчик на кунд
копировать состояние
входов в R11
маска входов
если линии SDA или SCL
в лог. «0»то шина
занята
декремент счётчика
счётчик на 7 бит адреса
копировать адрес в R11 сдвиг влево, при этом СЗР 7-битного адреса будет находиться на 7-й позиции скопировать его для возможности маскирования
маскировать все биты кроме СЗР сравнить с С
отправить «1»
отправить «0» декремент счётчика если счётчик <7 бит,