INSiraJMENTS


///. Интерфейс с внешними устройствами


Влияние на память: стек, максимум 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) из