Глава 6.
Реализация шины SMBus на базе микроконтроллера MSP430
CALL | #sbit |
CALL | tsendzero |
CALL | #ack |
CALL | #sbyte |
CALL | #ack |
CALL | #pbit |
MOV. В | #01h,30(SP) ; |
POP | R13 |
POP | R12 |
POP | Rll |
POP | RIO |
POP | R15 |
POP | R14 |
POP | R9 |
POP | R8 |
POP | R7 |
POP | SR |
RET |
стека
отправить стартовую
посылку и адрес
отправить «О» для
записи
ждём подтверждения
(АСК)
отправить байт
команды
ждём подтверждения
(АСК)
отправить стоповую посылку возвращает «1» при успешном завершении
Протокол | «Принять байт» | |||
Влияние Влияние | на регистры: нет на память: стек, | максимум | байт | |
Описание | Шаг | Направление |
старт (start)
адрес (address)
чтение/запись(R/W) из
подтверждение(acknowledge) в
данные (data)
неподтверждение(NACK)
стоп (stop)
из из
в
из
из
Параметры в стеке
Библиотека Компэла
f& Texas iNSiraJMENTS |
///. Интерфейс с внешними устройствами
; флаг ошибкиеггог | flag | младшая | область памяти |
low mem | |||
; данные | data | ||
; не используется | unused | ||
; команда | command | ||
; адрес | address | старшая | область памяти |
high mem | |||
; Пример использования |
PUSH PUSH PUSH SUB
CALL POP
ADD
POP
CMP JZ
#00h #00Bh #08h #04h, SP
#rcbp R8
#06h, SP R9
#00h, R9 error
место для кода ошибки поместить адрес в стек код команды зарезервировать место под принимаемые данные
переместить данные
в R8
вычесть объём
параметров
читать из стека код
ошибки
ошибочное завершение -вызов обработчика ошибок
rbp
PUSH | SR | |||
PUSH | R7 | |||
PUSH | R8 | |||
PUSH | R9 | |||
PUSH | R14 | |||
PUSH | R15 | |||
PUSH | R1C | |||
PUSH | Rll | |||
PUSH | R12 | |||
PUSH | R13 | |||
MOV. В | 26 (SP), | R8 | параметр | команды |
MOV. В | 28 (SP), | R7 | параметр | адреса |
CALL | #sbit | отправить | стартовую | |
посыпку и | адрес | |||
CALL | tsendzero | отправить | «0» для | |
записи | RufmunTPKa К |
Глава 6.
Реализация шины SMBus на базе микроконтроллера MSP430
CALL #ack
CALL CALL |
#sbyte #ack
CALL #rsbit
CALL | #sendone |
CALL | #ack |
CALL | #rbyte |
CALL | #nack |
CALL | #pbit |
MOV. В | R14, 22 (SP), |
MOV. В | #01h, 30 (SP) |
POP | R13 |
POP | R12 |
POP | Rll |
POP | R1C |
POP | R15 |
POP | R14 |
POP | R9 |
POP | R8 |
POP | R7 |
POP | SR |
RET |
ждём подтверждения
(ACK)
отправить код команды
ждём подтверждения
(АСК)
отправить повторяющиеся стартовую посылку и адрес
отправить «1» для чтения ждём подтверждения
(АСК)
принять байт данных отправить неподтверждение (NACK) отправить стоповую посылку
копировать байт данных в стек
возвращает «1» при успешном завершении
Протокол «Принять слово» 7
Влияние на регистры: нет
Влияние на память: стек, максимум 40 байт
Описание
Шаг
Направление
старт (start) адрес(address)
чтение/запись(R/W) из подтверждение(acknowledge) в