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


 


BIC.B #SDA, DIR ; «отпустить» линию SDA ****************************************************** ; готов принять байт ******************************************************

tdat


MOV #008h, R13 MOV #0000h, R12 MOV.В IN, R14


счётчик на 8 бит данных

регистр для сохране­ния адреса убедиться, что на линии SCL лог. «О»


 


dat

szeroc szerob


 

DEC R9  
JZ done  
AND #SCL , R14
JNZ tdat  
MOV. В IN, R14
MOV. В R14, Rll
DEC R9  
JZ done  
AND #SCL , R14
JZ dat  
AND #SDA , Rll

JZ

RLA.B R12

BIS.В #0001h, R12

JMP szerob

RLA.B R12

DEC R13 JNZ tdat MOV.В R12, data


читаем данные из порта копируем данные

маскировать все биты,

кроме SCL

ждём лог. «1» на SCL

маскировать все биты,

кроме SDA

если «О» - просто

сдвиг

если «1» установить «1» в МЗР и сдвиг

арифметический сдвиг влево

декремент счётчика копируем в ОЗУ


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

rwait6 MOV.В IN, Rll ; ждём лог. «О» на SCL DEC R9 JZ done AND.В #SCL, Rll ; маскировать все биты,

; кроме SCL JNZ rwait6