INSiraJMENTS


///. Интерфейс с внешними устройствами


BIS.В #SCL, DIR ; выставить лог. «О»

; на линии SCL RET

*****************************************************

; Отправка неподтверждения (NACK) *****************************************************

BIC.B #SDA, DIR BIS.В #SCL, DIR BIC.B #SCL, DIR

паск

clkn

выставить лог. «1» на линии SDA выставить лог. «О» на линии SCL выставить лог. «1» на линии SCL ; проверка удлинения тактового сигнала ; (clock low extending), чтобы не ; опережать ведомое устройство ; ждём установки «1» на линии SCL MOV.В IN, RIO

AND.В #SCL, RIO ; проверка линии SCL JZ clkn

BIS.В #SCL, DIR ; «отпустить» SCL RET


; Отправка подтверждения (АСК)

sack swaita

*****************************************************

; ждём, пока ведомый «отпустит» линию SDA MOV #000Fh, Rll ; счётчик на ?50 мкс

MOV.В IN, RIO

DEC Rll

JZ busy

AND.В #SDA, RIO ; проверка SCL

JZ swaita

BIS.В #SDA, DIR ; перевести SDA в «О»

BIC.B #SCL, DIR ; перевести SCL в «1»
#000Fh, Rll; счётчик на ?50 мкс

проверка шины

MOV

swait
проверка шины

MOV.В IN, RIO

DEC Rll

JZ busy

AND.В #SCL, RIO ; проверка SCL

JZ swait

BIS.В #SCL, DIR ; перевести SCL в «0»

BIC.B #SDA, DIR ; «отпустить» SDA

RET