///. Интерфейс с внешними устройствами
; ожидание подтверждения (АСК) ; (SDA переходит в лог. «О») MOV #05F6h, R11 ; счётчик таймаута ; для NACK |
wack
MOV.В IN, R1C DEC Rll JZ sbusy
AND.В #SDA, R1C
JNZ wack
BIS.В #SCL, DIR
RET
проверка шины
таймаут NACK— отправить бит Р и повторить попытку
маскировать всё, кроме SDA
приём АСК или ожидание таймаута
выставить лог. «О» на линии SCL
; Отправка стоповой последовательности *****************************************************
pbit
выставить лог. «О» на линии SDA выставить лог. «О» на линии SCL |
BIS.В #SDA, DIR
BIS.В #SCL, DIR
NOP
выставить лог. «1» на линии SCL |
BIC.B #SCL, DIR
NOP
BIC.B #SDA, DIR
выставить лог. «1» на линии SDA
RET *****************************************************
; Отправка байта (используются также sendzero
; и sendone)
*****************************************************
sbyte
; отправка данных
счётчик на ?50 мкс копировать данные в R11 |
MOV.B #08h, R13
MOV.В R8, Rll
dshift
MOV.B Rll, R12
AND.В #08Oh, R12 ; маскировать все биты,