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

 

. ********** ******** ****** *****************************
busy3 ADD #06h, SP удаление лишних
        данных процедур
        sendone или sendzero
busy ADD #02h, SP удалить данные
        из стека, так как
        инструкция RET
        не использовалась
  MOV.B #00h, 28 (SP) ; код ошибки
  POP R13   восстановление регист-
        ров
  POP R12  
  POP Rll  
  POP R1C  
  POP R15  
  POP R14  
  POP R9  
  POP R8  
  POP R7  
  POP SR  
  RET    
. ********** ******** ****** *****************************
; Отправить «1»    
sendone PUSH R1C    

PUSH Rll

BIC.B #SDA, DIR ; установить лог. «1»

; на линии SDA BIC.B #SCL, DIR ; установить лог. «1»

; на линии SCL

; проверка удлинения тактового сигнала ; (clock low extending), чтобы не опережать ведомое ; устройство

MOV.B #04h, Rll

MOV.B IN, R1C DEC Rll JZ busy3
clkext

установить число тактов для верного времени проверка шины

арбитраж - время

истекло

проверка линии SCL

AND.В #SCL, R1C

JZ clkext

; арбитраж: убедиться, что на линии SDA действительно ; лог. «1», иначе приоритет отдаётся другому ведущему