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

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

3

3

2

2

2

2

2

2

2

2

2

2

1

1

1

1

1

1

1

1

1

1

9

8

7

6

5

4

3

2

1

0

1

0

9

8

7

6

5

4

3

2

1

0

9

8

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

 

 

 

1 0 0 0 0 r r r 0 0 0 0 0 b b b b b b b b b b b b b b b b x x x

Бит 31 = 1 задает косвенную адресацию с указанием области памяти через регистр. Биты 24, 25 и 26 (rrr): идентификатор области (область памяти, см. таблицу 3.4). Биты с 3 по 18 (bbbb bbbb bbbb bbbb): номер (диапазон от 0 до 65 535) адресуемого байта.

Биты с 0 по 2 (xxx): номер (диапазон от 0 до 7) адресуемого бита

Рис. 3.4. Формат указателя в виде двойного слова для косвенной адресации с указанием области памяти через регистр

Пример

L P#I 8.7

Загрузить указатель в формате двойного слова на адрес

 

бита I 8.7 в аккумулятор 1.

LAR1

Сохранить указатель в формате двойного слова на адрес

 

бита I 8.7 в AR1.

L P#Q 8.7

Загрузить указатель в формате двойного слова на адрес

 

бита Q 8.7 в аккумулятор 1.

LAR2

Сохранить указатель в формате двойного слова на адрес

 

бита Q 8.7 в AR2.

A [AR1, P#0.0]

CPU складывает содержимое адресного регистра AR1 (P# I

 

8.7) и смещение (P#0.0) и использует операнд, на который

 

указывает результат (I8.7), в качестве операнда битовой

 

логической операции И. Содержимое AR1 остается

 

неизменным.

= [AR2, P#1.1]

CPU присваивает результат логической операции (RLO)

 

операнду (Q 10.0). CPU вычисляет этот операнд, складывая

 

содержимое адресного регистра AR2 (P#A 8.7) и смещение

 

(P#1.1), указатель при этом деактивируется. Содержимое

 

AR2 остается неизменным.

14. ОПЕРАЦИИ С АККУМУЛЯТОРАМИ И КОМАНДЫ, ИСПОЛЬЗУЮЩИЕ АДРЕСНЫЕ РЕГИСТРЫ

В распоряжении программиста имеются следующие команды для манипулирования содержимым одного или обоих аккумуляторов:

70

Мнемоника

Команда

Объяснение

TAK

 

 

Обменять

Эта команда обменивает содержимое

 

 

 

содержимое

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

 

 

 

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

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

 

 

 

содержимым

 

 

 

 

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

 

PUSH

с

двумя

Копировать

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

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

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

 

 

 

 

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

 

POP

с

двумя

Копировать

Эта команда копирует содержимое

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

аккумулятор 2 в

аккумулятора команда копирует

 

 

 

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

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

 

 

 

 

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

PUSH

 

с

Копировать

Эта команда копирует содержимое

четырьмя

 

аккумулятор 3 в

аккумулятора 3 в аккумулятор 4,

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

аккумулятор 4,

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

 

 

 

аккумулятор 2 в

аккумулятор 3 и содержимое

 

 

 

аккумулятор 3,

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

 

 

 

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

 

 

 

 

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

 

POP с четырьмя

Копировать

Эта команда копирует содержимое

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

аккумулятор 2 в

аккумулятора 2 в аккумулятор 1,

 

 

 

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

содержимое аккумулятора 3 в

 

 

 

аккумулятор 3 в

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

 

 

 

аккумулятор 2,

аккумулятора 4 в аккумулятор 3.

 

 

 

аккумулятор 4 в

 

 

 

 

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

 

ENT

 

 

Войти в стек

Эта команда копирует содержимое

 

 

 

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

аккумулятора 3 в аккумулятор 4 и

 

 

 

 

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

 

 

 

 

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

LEAVE

 

Покинуть стек

Эта команда копирует содержимое

 

 

 

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

аккумулятора 3 в аккумулятор 2 и

 

 

 

 

содержимое аккумулятора 4 в

 

 

 

 

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

INC

 

 

Инкрементировать

Эта команда увеличивает содержимое

 

 

 

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

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

 

 

 

 

аккумулятора 1 на 8-битовую

 

 

 

 

константу, заданную в операторе

 

 

 

 

команды. Эта константа может

 

 

 

 

находиться в диапазоне от 0 до 255.

DEC

 

 

Декрементировать

Эта команда уменьшает содержимое

71

Мнемоника

Команда

 

Объяснение

 

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

 

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

 

 

 

аккумулятора 1 на 8-битовую

 

 

 

константу, заданную в операторе

 

 

 

команды. Эта константа может

 

 

 

находиться в диапазоне от 0 до 255.

+AR1, +AR2

Прибавить

 

Эта команда прибавляет содержимое

 

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

к

младшего слова аккумулятора 1 к

 

адресному регистру

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

+AR1

Прибавить

 

Эта команда прибавляет константу к

P# байт.бит,

константу

к

содержимому адресного регистра 1 или

+AR2

адресному регистру

2

P# байт.бит

 

 

 

BLD

Команда

 

Эта команда не выполняет никакой

 

отображения

 

функции и не влияет на биты

 

программы

 

состояния. Она имеет значение только

 

 

 

для устройства программирования (PG)

 

 

 

при отображении программы. Операнд

 

 

 

<число> является идентификатором

 

 

 

команды BLD и генерируется

 

 

 

устройством программирования.

NOP 0

Пустая команда

0

Эти команды не выполняют никаких

NOP 1

Пустая команда 1

 

действий и не оказывают влияния на

 

 

 

содержимое слова состояния. Команды

 

 

 

NOP 1 и NOP 0 необходимы для

 

 

 

декомпиляции. Код команды содержит

 

 

 

битовую комбинацию из 16 нулей или

 

 

 

16 единиц.

ПОЯСНЕНИЯ К НЕКОТОРЫМ КОМАНДАМ

Инкрементирование и декрементирование

Вы можете использовать команды Инкрементировать аккумулятор 1 (INC) и

Декрементировать аккумулятор 1 (DEC) для выполнения следующих функций:

INC увеличивает содержимое младшего байта в младшем слове аккумулятора 1 на 8-битовую константу, заданную в операторе команды. Эта константа может лежать в диапазоне от 0 до 255.

DEC уменьшает содержимое младшего байта в младшем слове

аккумулятор 1 на 8-битовую константу, заданную в команде. Эта константа может лежать в диапазоне от 0 до 255.

CPU всегда выполняет команды INC и DEC независимо от результата

72

логической операции. Эти команды не влияют на RLO и не изменяют биты в слове состояния.

Замечание Эти команды не годятся для 16-битовых и 32-битовых арифметических

операций, так как не происходит перенос из младшего байта младшего слова аккумулятора 1 в старший байт младшего слова аккумулятора 1. Для 16битовых и 32-битовых арифметических операций используйте соответственно команды +I и +D.

+AR1 и +AR2: прибавление константы к адресному регистру 1 или адресному регистру 2

Команда

Операнд

 

Функция

 

 

+AR1

Прибавляет содержимое младшего слова

 

 

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

1

к

содержимому

 

 

адресного регистра 1.

 

 

 

+AR2

Прибавляет содержимое младшего слова

 

 

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

1

к

содержимому

 

 

адресного регистра 2.

 

 

 

+AR1

P#байт.бит: (диапазон от

Прибавляет

константу

указателя

к

 

0.0 до 4095.7)

содержимому адресного регистра 1.

 

+AR2

P#байт.бит: (диапазон от

Прибавляет

константу

указателя

к

 

0.0 до 4095.7)

содержимому адресного регистра 2.

 

Замечание Адресный регистр 2 используется при обработке мультиэкземпляров. Поэтому

перед программированием команды «+AR2» вы должны «сохранить» содержимое AR2 и загрузить его затем снова.

15. БИТОВЫЕ ЛОГИЧЕСКИЕ ОПЕРАЦИИ

15.1. БУЛЕВА БИТОВАЯ ЛОГИКА Булева битовая логика используется в следующих основных командах:

И (A) и ее инверсная форма И-НЕ (AN);

ИЛИ (O) и ее инверсная форма ИЛИ-НЕ (ON);

Исключающее ИЛИ (X) и ее инверсная форма, Исключающее ИЛИ-НЕ

(XN).

Эти команды выполняют следующие основные функции:

Они опрашивают состояние сигнала операнда, чтобы выяснить активизирован операнд «1» или нет «0»;

Они опрашивают состояние сигнала таймера или счетчика, чтобы

73

выяснить, установлен ли он в «0» (значение = 0) или в «1» (значение > 0);

Бит FC определяет результат логической операции (RLO):

Если FC равен 0, то результат опроса состояния остается неизменным и будет сохранен в RLO (начало логической цепи);

Если FC равен 1, то результат опроса состояния будет логически скомбинирован с логической командой (A, O, X) в соответствии с таблицей истинности и будет сохранен в RLO.

Таблица истинности внутри булевой логической цепи

Мнемоника

Команда

RLO перед

Состояние

Результат в

 

 

командой

операнда

RLO

A

И

0

0

0

 

 

0

1

0

 

 

1

0

0

 

 

1

1

1

AN

И-НЕ

0

0

0

 

 

0

1

0

 

 

1

0

1

 

 

1

1

0

O

ИЛИ

0

0

0

 

 

0

1

1

 

 

1

0

1

 

 

1

1

1

ON

ИЛИ-НЕ

0

0

1

 

 

0

1

0

 

 

1

0

1

 

 

1

1

1

X

Исключающее ИЛИ

0

0

0

 

 

0

1

1

 

 

1

0

1

 

 

1

1

0

XN

Исключающее ИЛИ-НЕ

0

0

1

 

 

0

1

0

 

 

1

0

0

 

 

1

1

1

Операнды основных функций

Операнд команды может быть битом, таймером или счетчиком.

Команда обращается к операнду с помощью одного из следующих видов

74

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

12
1673
271
2863
2994
3788
3857
54
5719
605