RET
; Обработка состояния занятости (busy) ****************************************************** |
busy3 busy
ADD #06h, SP ADD #02h, SP
MOV. В | #00h, 28 (SP) |
POP | R13 |
POP | R12 |
POP | Rll |
POP | R1C |
POP | R15 |
POP | R14 |
POP | R9 |
POP | R8 |
POP | R7 |
POP | SR |
RET |
удалить лишние данные от подпрограмм sendone или sendzero удалить данные из стека, так как инструкция RET не использовалась ; код ошибки восстановить регистры
******************************************************
; Отправить «1» ******************************************************
sendone PUSH R1C
PUSH Rll
BIC.B #SDA, DIR ; установить лог. «1» ; на линии SDA
BIC.B #SCL, DIR ; установить лог. «1»
; на линии SCL
; проверка удлинения тактового сигнала ; (clock low extending), чтобы не опережать ведомое ; устройство
установить число тактов для верного времени проверка шины арбитраж - время истекло проверка линии SCL |
MOV.B #04h, Rll
clkext MOV.B IN, R1C
DEC Rll
JZ busy3
AND.В #SCL, R1C
JZ clkext