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


 


       
 
 
   

  CMP. В #00h, R12
  JNZ on
  CALL tsendzero
  JMP zer
on CALL #sendone
zer    
  RLA.B Rll
  DEC R13
  JNZ dshift
  RET  
. ******* *********** **********
; Приём байта  
rbyte    

MOV.В #08h, R12

BIC.B #SDA, DIR

rrep

BIS.В #SCL, DIR

BIC.B #SCL, DIR

MOV #0035h, R13

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

clkxtn MOV.В IN, RIO

DEC R13

JZ busy

AND.В #SCL, R1C

JZ clkxtn

MOV.В IN, R1C

RLA.B Rll

AND.В #SDA, R1C

JZ inzero

BIS.В #01h, Rll

inzero DEC R12

JNZ rrep

MOV.В Rll, R14


кроме СЗР сравнить с С

отправить «1» отправить «О»

сдвиг влево, отправля­емый бит в СЗР декремент счётчика на 8

счётчик на 8 бит

данных

выставить лог. «1»

на линии SDA

выставить лог. «О» на линии SCL выставить лог. «1» на линии SCL удлинённый счётчик для батареи PS100Z-200

проверка шины выход по таймауту

ожидание, если SCL не «1»

проверка шины вход МЗР проверка SDA

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

продолжение для остав­шейся части байта копирование данных