BIC.B #SDA, DIR ; выставить лог. «1» ; на линии SDA BIC.B #SCL, DIR ; выставить лог. «1» ; на линии SCL ; проверка удлинения тактового сигнала ; (clock low extending), чтобы не опережать ведомое ; устройство MOV #008h, R11 MOV #02FFh, Rll |
AND.В #SCL, R1C JZ clkex ; ожидание подтверждения (АСК) (SDA переходит ; в лог. «О») MOV #05F6h, Rll; счётчик таймаута для NACK |
clkex
wack
MOV.В IN, R1C DEC Rll JZ busy
MOV.В IN, R1C DEC Rll JZ sbusy
AND.В #SDA, R1C
JNZ wack
BIS.В #SCL, DIR
RET
счётчик на ?50 икс удлинённый счётчик для батареи PS100Z-200 проверка шины
арбитраж - время
истекло
проверка линии SCL
проверка шины
таймаут NACK— отправить бит Р и повторить попытку
маскировать всё, кроме SDA
приём АСК или ожидание таймаута
выставить лог. «О» на линии SCL
; Отправка стоповой последовательности ****************************************************** pbit |
BIS.В #SDA, DIR
BIS.В #SCL, DIR
NOP
BIC.B #SCL, DIR
выставить лог. «О» на линии SDA выставить лог. «О» на линии SCL
выставить лог. «1» на линии SCL