///. Интерфейс с внешними устройствами
BIS.В #SDA, DIR
BIS.В #SCL, DIR
; отправка адреса
MOV.В #07h, R13
ashift |
MOV.В R7, Rll RLA.B Rll
MOV.В Rll, R12
AND.В #080h, R12
CMP.В #00h, R12
JNZ one
CALL tsendzero
JMP zero
one zero |
CALL #sendone
DEC R13
JNZ ashift
RET
счётчик на 7 бит адреса
копировать адрес в R11 сдвиг влево, при этом СЗР 7-битного адреса будет находиться на 7-й позиции скопировать его для возможности маскирования без потери данных маскировать все биты кроме СЗР сравнить с С
отправить «1»
отправить «О» декремент счётчика если счётчик <7 бит, повторить сдвиг
подтверждение (АСК) не принято, отправить STOP
: И busy
sbusy
CALL | #pbit |
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 |
отправить STOP и busy удалить данные из стека, так как инструкция RET не использовалась код ошибки
восстановление регистров