Материал: Основы программирования микроконтроллеров на языке step 7. Слепокуров Ю.С

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Непосредственная адресация

Команда L может обращаться к константам в 8, 16 и 32 бита, а также к символам ASCII. Этот вид адресации называется непосредственной адресацией (см. таблицу 8.1).

 

 

 

 

 

Табл. 8.1.

Операнд

Пример

 

Пояснение

 

 

±

L +5

Загружает 16-битовую целую константу в

 

 

аккумулятор 1.

 

 

 

B#(..,..)

L B#(1,10)

Загружает константу как 2 байта в

 

 

аккумулятор 1. (В этом примере 10

 

 

поступает в младший байт младшего

 

 

слова аккумулятора 1; 1 поступает в

 

 

старший

байт

младшего

 

слова

 

L B#(1,10,5,4)

аккумулятора 1)

 

 

 

 

 

Загружает константу как 4 байта в

 

 

аккумулятор 1. (В этом примере 4 и 5

 

 

поступают соответственно в младший и

 

 

старший

байт

младшего

 

слова

 

 

аккумулятора 1; 10 и 1 поступают

 

 

соответственно в младший и старший

 

 

байт старшего слова аккумулятора)

 

L#..

L #+5

Загружает 32–битовую целую константу в

 

 

аккумулятор 1.

 

 

 

16#..

L B#16#EF

Загружает 8–битовую шестнадцтеричную

 

 

константу в аккумулятор 1.

 

 

 

L W#16#FAFB

Загружает

 

16–битовую

 

L DW#16#1FFE_1ABC

шестнадцтеричную

константу

в

 

аккумулятор 1.

 

 

 

 

 

Загружает

 

32–битовую

 

 

шестнадцтеричную

константу

в

 

 

аккумулятор 1.

 

 

 

2#..

L 2#1111_0000_1111_0000

Загружает

16–битовую

двоичную

 

L 2#1111_0000_1111_

константу в аккумулятор 1.

 

 

 

Загружает 32–битовую двоичную

 

 

0000_1111_0000_1111_0000

 

 

 

константу в аккумулятор 1.

 

 

’..’

L ’AB’

Загружает 2 символа в аккумулятор 1.

 

L ’ABCD’

Загружает 4 символа в аккумулятор 1.

C#..

L C#1000

Загружает

16–битовую

константу

 

 

счетчика в аккумулятор 1.

 

 

S5TIME#..

L S5TIME#2S

Загружает

16–битовую

константу

 

 

S5TIME в аккумулятор 1.

 

 

..

L 1.0E+5

Загружает 32–битовое число с плавающей

95

Операнд

Пример

 

Пояснение

 

 

 

 

точкой в формате IEEE в аккумулятор 1.

 

P#..

L P#I1.0

Загружает 32–битовый указатель в

 

L P##Start

аккумулятор 1.

 

 

 

 

 

Загружает 32–битовый указатель на

 

 

локальную

переменную

(Start)

в

 

 

аккумулятор 1

 

 

 

 

 

L P#ANNA

Загружает

указатель

на

указанный

 

 

параметр в аккумулятор 1. (Эта команда

 

 

загружает

относительное

смещение

 

 

адреса указанного параметра. Для

 

 

определения

абсолютного

смещения

в

 

 

экземплярном

блоке

данных

 

 

функционального

 

блока

с

 

 

мультиэкземплярами

к

этому значению

 

 

должно быть добавлено

содержимое

 

 

регистра AR2).

 

 

 

 

D#..

L D#1994–3–15

Загружает

16–битовую

дату

в

 

 

аккумулятор 1.

 

 

 

 

T#..

L

Загружает 32–битовое значение времени

 

T#0D_1H_1M_0S_0MS

в аккумулятор 1.

 

 

 

 

TOD#..

L TOD#1:10:3.3

Загружает 32–битовое значение времени

 

 

суток в аккумулятор 1.

 

 

 

Прямая и косвенная адресация

Команды L и T могут обращаться к байту (В), слову (W) или двойному слову

(D)в следующих областях памяти с помощью прямой и косвенной адресации:

Вход и выход образа процесса (идентификаторы операндов IB, IW, I, QB, QW, QD);

Внешние входы и выходы (идентификаторы операндов PIB, PIW, PID, PQB, PQW, PQD). Внешние входы могут быть операндами только команд L, внешние выходы могут быть операндами только команд T;

Битовая память (идентификаторы операндов MB, MW, MD);

Блок данных (идентификаторы операндов DBB, DBW, DBD, DIB, DIW, DID);

Локальные данные (временные локальные данные, идентификаторы операндов LB, LW, LD).

18.2.ЧТЕНИЕ СЛОВА СОСТОЯНИЯ ИЛИ ПЕРЕДАЧА

ВСЛОВО СОСТОЯНИЯ

Команду загрузки (L) можно использовать для загрузки битов с 0 по 8 слова

96

состояния (см. рис. 8.1) в аккумулятор 1. Биты с 9 по 31 аккумулятора 1 сбрасываются в 0. Формат команды в этом случае имеет вид:

L STW

15

 

9 8

7

6

5

4

3

2

1

0

 

 

 

 

 

 

BR

CC1

CC0

OV

OS

OR

STA

RLD

 

FC

 

Рис. 8.1. Структура слова состояния

Команда T STW передает содержимое аккумулятора 1 в слово состояния.

18.3. ЗАГРУЗКА ЗНАЧЕНИЙ ВРЕМЕНИ И СЧЕТЧИКОВ

Используя команды загрузки L Tn и L Cm, где n и m номер таймера или счетчика, можно считать двоичное значение времени (счета) и загрузить его в младшее слово аккумулятора 1. Этот вид загрузки называют прямой загрузкой. Основной особенность этой команды является то, что при считывании значения таймера, вы получаете только число в диапазоне 0…999. Значение базы таймера при этом не загружается.

Команды LС Tn и LС Cm, где n и m номер таймера или счетчика, позволяют загрузить в младшее слово аккумулятора 1 значение времени (счета) в ВСD коде.

18.4. ЗАГРУЗКА И ПЕРЕДАЧА МЕЖДУ АДРЕСНЫМИ РЕГИСТРАМИ

Можно использовать следующие команды, чтобы дать CPU возможность обмена информацией между адресными регистрами или обмена содержимым этих двух регистров:

Команда

Объяснение

LAR1

Загружает адресный регистр 1 содержимым области, к которой

 

обращается команда. Если операнд не указан, то LAR1 загружает

 

адресный регистр 1 содержимым аккумулятора 1. LAR1 может

 

использовать в качестве операнда также AR2, т.е. LAR1 может

 

загрузить AR1 содержимым AR2.

LAR2

Загружает адресный регистр 2 содержимым области, к которой

 

обращается команда. Если операнд не указан, то LAR2 загружает

 

адресный регистр 2 содержимым аккумулятора 1.

TAR1

Передает содержимое адресного регистра 1 в приемник, к которому

 

обращается команда. Если операнд не указан, то TAR1 передает

 

содержимое адресного регистра 1 в аккумулятор 1. TAR1 может

 

использовать в качестве операнда также AR2, т.е. TAR1 может

 

передать содержимое AR1 в AR2.

TAR2

Передает содержимое адресного регистра 2 в приемник, к которому

97

Команда

Объяснение

 

обращается команда. Если операнд не указан, то TAR2 передает

 

содержимое адресного регистра 2 в аккумулятор 1.

TAR

Обменивает между собой содержимое AR1 и AR2.

Команды LAR1 и LAR2 могут обращаться к 32-битовым константам. Этот вид адресации называют непосредственной адресацией.

Непосредственный адрес применяется для загрузки 32-битового указателя непосредственно в адресный регистр.

LAR1 P#{область,} байт{.бит}

где {область} = {I, Q, M, D, DX, L}

байт = от 0 до 65 535 {.бит} = 0 до 7

С командами LAR1, LAR2, TAR1 и TAR2 можно использовать прямую адресацию:

Команда

Регистр или операнд

Идентификатор операнда и диапазон

LAR 1

(пусто) или AR2

DBD

от 0 до 65 532

 

 

DID

 

 

 

MD

 

 

 

LD

 

LAR 2

(пусто)

 

 

TAR 1

(пусто) или AR2

DBD

от 0 до 65 532

 

 

DID

 

 

 

MD

 

 

 

LD

 

TAR 2

(пусто)

 

 

Если операнд не указан (пусто), то LAR1/LAR2 загружает адресный регистр содержимым аккумулятора 1, а TAR1/TAR2 передает содержимое адресного регистра в аккумулятор 1.

18.5. ЗАГРУЗКА ИНФОРМАЦИИ О БЛОКЕ ДАННЫХ

Команда загрузки (L) может быть использована для загрузки длины или номера блока данных в аккумулятор 1.

Операнд

Объяснение

DBLG

Загружает длину (в байтах) глобального блока данных в

 

аккумулятор 1

DILG

Загружает длину (в байтах) экземплярного блока данных в

 

аккумулятор 1

DBNO

Загружает номер глобального блока данных аккумулятор 1

DINO

Загружает номер экземплярного блока данных в аккумулятор 1

98

19.АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ С ЦЕЛЫМИ ЧИСЛАМИ

19.1.ОСНОВНЫЕ АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ

Втабл. 9−1 перечислены команды AWL, с помощью которых можно складывать, вычитать, умножать и делить целые числа (16 битов) и двойные целые числа (32 бита).

 

 

Табл. 9.1.

Команда

Размер в

Функция

 

битах

 

+I

16

Складывает содержимое младших слов аккумуляторов 1 и

 

 

2 и сохраняет результат в младшем слове аккумулятора 1.

-I

16

Вычитает содержимое младшего слова аккумулятора 1 из

 

 

содержимого младшего слова аккумулятора 2 и сохраняет

 

 

результат в младшем слове аккумулятора 1.

*I

16

Перемножает содержимое младших слов аккумуляторов 1

 

 

и 2 и сохраняет результат (32 бита) в аккумуляторе 1.

/I

16

Делит содержимое младшего слова аккумулятора 2 на

 

 

содержимое младшего слова аккумулятора 1. Результат

 

 

сохраняется в младшем слове аккумулятора 1. Целый

 

 

остаток от деления сохраняется в старшем слове

 

 

аккумулятора 1.

+D

32

Складывает содержимое аккумуляторов 1 и 2 и сохраняет

 

 

результат в аккумуляторе 1.

-D

32

Вычитает аккумулятора 1 из содержимого аккумулятора 2

 

 

и сохраняет результат в аккумуляторе 1.

*D

32

Перемножает содержимое аккумуляторов 1 и 2 и

 

 

сохраняет результат в аккумуляторе 1.

/D

32

и сохраняет частное в аккумуляторе 1.

MOD

32

Делит содержимое аккумулятора 2 на содержимое

 

 

аккумулятора 1 и сохраняет остаток от деления как

 

 

результат в аккумуляторе 1.

Связь между арифметическими операциями и аккумуляторами

Арифметические операции комбинируют содержимое аккумуляторов 1 и 2. Результат сохраняется в аккумуляторе 1. Старое содержимое аккумулятора 1 сдвигается в аккумулятор 2.

В CPU с четырьмя аккумуляторами затем содержимое аккумулятора 3 копируется в аккумулятор 2, а содержимое аккумулятора 4 в аккумулятор 3. Старое содержимое аккумулятора 4 не меняется.

Например, в контроллере с двумя аккумуляторами, команда сложения

99

Смотрите также:

12
1673
271
2863
2994
3788
3857
54
5719
605