Реализация шины SMBus на базе микроконтроллера MSP430


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