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


 


clkxtn


 

JZ

MOV.В IN, R1C DEC R13

busy

JZ

AND.В #SCL, R1C

clkxtn

MOV.В IN, R1C

RLA.B Rll

AND.В #SDA, R1C

JZ inzero

BIS.В #01h, Rll

DEC R12

JNZ rrep

MOV.В Rll, R14

BIS.В #SCL, DIR

RET


сигнала проверка шины

выход по таймауту

ожидание, если SCL

не «1»

проверка шины

move over for input

as LSB

проверка SDA

установить «1» в МЗР

продолжение для остав­шейся части байта копирование данных выставить лог. «О» на линии SCL


******************************************************


; Отправка неподтверждения (NACK) ********************************* паск

BIC.B #SDA, DIR BIS.В #SCL, DIR BIC.B #SCL, DIR

выставить лог. «1» на линии SDA выставить лог. «О» на линии SCL выставить лог. «1» на линии SCL

; проверка удлинения тактового сигнала

; (clock low extending), чтобы не опере-

; жать ведомое устройство

; ждём установки «1» на линии SCL clkn MOV.В IN, RIO

AND.В #SCL, RIO ; проверка линии SCL

JZ clkn

BIS.В #SCL, DIR ; «отпустить» SCL

RET

******************************************************

; Отправка подтверждения (АСК) ******************************************************

sack ; ждём, пока ведомый «отпустит» линию SDA