Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_9н.docx
Скачиваний:
2
Добавлен:
03.09.2019
Размер:
58.74 Кб
Скачать

Основы микропроцессорной техники. Конспект лекций

Лекция 9. Команды операций над битами микроконтроллера 8051.

Эти команды позволяют выполнять операции над отдельными битами: сброс, установку, инверсию бита, а также логические И (/\) и ИЛИ (\/). В этих командах используется прямо адресуемый адрес бита BIT области BSEG. Адреса BIT находятся в пределах 00H-7АH области DSEG, в области специальных регистров в пределах 80H-F0H.

1. MOV C,BIT; C(BIT).

MOV C, 2BH; C(2BH) (2BH- адрес бита).

2. MOV BIT, C; (BIT) C.

3. CLR C; C=0.

4. CLR BIT; BIT=0.

5. SETB C; C=1.

6. SETB BIT; BIT=1.

7. CPL C; C=( ).

8. CPL BIT; BIT=( ).

9. ANL C,BIT; C©AND(BIT).

10. ANL C, ; C(C)AND( ).

11. ORL C,BIT; C(C)OR(BIT).

12. ORL C, ; C(C)OR( ).

Команды переходов (передачи управления)

Эти команды делятся на:

а) команды безусловного перехода;

б) команды условного перехода.

Команды безусловного перехода

IMP – прыжок.

  1. LJMP_ADR16 (длинный переход).

-------

-------

-------

LJMP ADR16

-------

ADR 16

-------

Задание.

Адрес Команда

0000H MOV A,R4;

0001H LJMP B000H;

… …

B000H ADD A, R5;

B001H MOV R6, A

Пример.

Адрес Команда

0000H MOV A,R4;

0001H LJMP M1;

… …

M1: B000H ADD A, R5;

B001H MOV R6, A

В команде перехода вместо абсолютного адреса пишется символическое имя адреса, называемое меткой. Адрес ADR16 обозначается меткой M1.

  1. Simp_rel, где rel – смещение (команда короткого перехода).

Эта команда выполняет безусловный переход по адресу, который вычисляется сложением смещения rel со значением (PC+2), где PC – адрес первого байта команды SIMP.

Смещение rel обеспечивается изменением адреса относительно команды SJMP на величину (-128)-(+128) байт, при чем если переход осуществляется в сторону увеличения адреса, то значение rel записывается в прямом коде, если в сторону уменьшения адреса, то в дополнительном коде. При написании программы на Ассемблере вместо rel указывается имя метки (символическое имя адреса) на которую осуществляется переход.

Пример.

MOV @R0, A;

SJMP M2;

….

M2: MOV R1,@Ro.

  1. Команда косвенного перехода JMP @A+DPTR позволяет вычислять адрес перехода в процессе выполнения самой программы

JMP @A+DPTR;

В этой команде адрес перехода есть сумма содержимого 16-ти разрядного регистра DPTR и содержимого аккумулятора. Эта команда используется для ветвления на несколько направлений.

Команды условного перехода

Команда осуществляется только по некоторым условиям.

Общая запись команды:

J <условие> rel.

----

----

J<условие> rel

---

---

1- вариант, когда условие не выполняется, условие «ложно»

2 – переход на адрес=(РС+2)+rel, условие выполняется, условие «истино»

В качестве условий используется значения флагов регистра состояний и значения адресуемых битов. Имеются два варианта условий:

а) флаг или бит равен 0;

б) флаг или бит равен 1.

Флаг/бит=0

JNC_rel; условие выполняется C=0;

JNZ_rel; Z=0 (если результат операции АЛУ не равен нулю)

JNB_BIT,rel; BIT=0 (для бита=0)

Флаг/бит=1

JC_rel; C=1; (условие выполняется)

JZ_rel; Z=1 (если результат операции АЛУ равен нулю)

JB_BIT, rel; BIT=1 (для бита=1)

Существуют также сложные команды условных переходов – комбинированные команды.

CJNE_A,dir,rel (Эта команда сравнения и перехода. Команда сравнивает два числа (байта) и осуществляет переход, если значение двух числе не равны, если значение этих числе равны, то переход не осуществляется. Переход осуществляется на смешении rel).

Первое число – содержимое аккумулятора;

Второе число – содержимое (dir)-адреса регистра;

Rel – смещение.

Сравнивает данные аккумулятора и ЯП с адресом dir и если же данные не равны, то переход по смещению, если равны, то выполняется следующая команда программы. Эта команда влияет на флаг переноса/заема С.

Если (А)dir, то С=0;

Если (А)<dir, то С=1.

Приведем примеры применения команд условного перехода