- •Лекция 9. Команды операций над битами микроконтроллера 8051.
- •Simp_rel, где rel – смещение (команда короткого перехода).
- •Команды условного перехода
- •Пример 1: c использованием команды (jc, jnc)
- •Пример 2: c использованием команд условного перехода)
- •Пример: Программная модель выдержки времени
- •Команды передачи управления
Основы микропроцессорной техники. Конспект лекций
Лекция 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 – прыжок.
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.
Simp_rel, где rel – смещение (команда короткого перехода).
Эта команда выполняет безусловный переход по адресу, который вычисляется сложением смещения rel со значением (PC+2), где PC – адрес первого байта команды SIMP.
Смещение rel обеспечивается изменением адреса относительно команды SJMP на величину (-128)-(+128) байт, при чем если переход осуществляется в сторону увеличения адреса, то значение rel записывается в прямом коде, если в сторону уменьшения адреса, то в дополнительном коде. При написании программы на Ассемблере вместо rel указывается имя метки (символическое имя адреса) на которую осуществляется переход.
Пример.
MOV @R0, A;
SJMP M2;
….
M2: MOV R1,@Ro.
Команда косвенного перехода 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.
Приведем примеры применения команд условного перехода