///. Интерфейс с внешними устройствами
Влияние на память: стек, максимум 40 байт, блок памяти
Описание Шаг Направление
старт (start) из
адрес(address) из
чтение/запись(R/W) из
подтверждение(acknowledge) в ?
команда (command) из
подтверждение(acknowledge) в ?
счётчик байт (byte count) из
подтверждение(acknowledge) в ?
данные (data) из
подтверждение(acknowledge) в ?
данные (data) в ?
подтверждение(acknowledge) в ?
данные и АСК повторяются п раз
стоп (stop) из
Параметры в стеке
флаг ошибкиеггог flag младшая область памяти
low mem
счётчик байт byte count
указатель блока block pointer
команда command
адрес address старшая область памяти
high mem
Пример использования
PUSH | #00h | место для кода ошибки |
PUSH | #00Bh | поместить адрес в стек |
PUSH | #0020h | код команды "темпера- |
тура батареи" | ||
PUSH | #00550h | указатель на начало |
блока | ||
PUSH | #00h | зарезервировать байт |
под счётчик | ||
CALL | #blkw | |
POP | RIO | переместить данные |
в R10 |
Глава 6.
Реализация шины SMBus на базе микроконтроллера MSP430
ADD | #06h, | SP |
POP | R9 | |
CMP | #00h, | R9 |
JZ | error |
читать из стека код ошибки
ошибочное завершение - вызов обработчика ошибок
PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH MOV. В MOV. В MOV MOV. В |
blkw
blk rep
SR
R7
R8
R9
R14
R15
R1C
Rll
R12
R13
26 (SP), R8
28 (SP), R7
24 (SP), R9
#00h, R15
CALL #sbit
CALL | tsendzero |
CALL | #ack |
CALL CALL | #sbyte #ack |
MOV. В | 22 (SP), R8 |
CALL CALL | #sbyte #ack |
MOV. В | 0(R9), R8 |
CALL CALL | #sbyte #ack |
INC |
R15
параметр команды
параметр адреса
стартовый адрес блока
циклический байтовый
счётчик
отправить стартовую
посылку и адрес
отправить «О» для
записи
ждём подтверждения
(АСК)
отправить код команды
ждём подтверждения
(АСК)
копировать счётчик байт
отправить счётчик байт ждём подтверждения
(АСК)
передать данные из блока
отправить байт данных ждём подтверждения
(АСК) инкремент счётчика
Библиотека Компэла
Ь ///- Интерфейс с внешними устройствами
; положения блока
INC R9 ; инкремент указателя
; блока
СМР 22 (SP), R15; проверка завершения
; данных
JNZ Ык_гер ; повтор до завершения
CALL #pbit ; отправить стоповую
; посылку
MOV.B #01h, 30(SP) ; возвращает «1» при
; успешном завершении
POP | R13 |
POP | R12 |
POP | Rll |
POP | R1C |
POP | R15 |
POP | R14 |
POP | R9 |
POP | R8 |
POP | R7 |
POP | SR |
RET |
Протокол «Чтение блока» 9
Влияние на регистры: нет
Влияние на память: стек, максимум 40 байт,
блок памяти
Описание Шаг Направление
старт (start) из
адрес(address) из
запись(W) из
подтверждение(acknowledge) в ?
команда (command) из
подтверждение(acknowledge) в ?
старт (start) из
адрес(address) из
чтение(R) из
подтверждение(acknowledge) в ?
счётчик байт (byte count) в ?
подтверждение(acknowledge) из
данные (data) в ?
подтверждение(acknowledge) из