МИКРОКОНТРОЛЛЕРЫ
ОКТЯБРЬЩ
носа С (разряд D7 PSW), в качестве операндов могут ис-
пользоваться 128 бит из резидентной памяти данны х и
регистры специальных ф ункций, допускаю щ ие адресацию
отдельных бит.
В таблице указаны тип команды (Т) в соответствии с
таблицей, ее длина в байтах (Б) и время выполнения в
машинных циклах (Ц).
К о м ан д ы передачи упр а в л е н и я MCS-51
Команды безусловного и условного переходов, коман-
ды вызова подпрограмм и возврата из подпрограмм при-
ведены в табл. 6. Эта группа состоит из 22 команд.
В таблице также указаны тип команды (Т) в соответ-
ствии с таблицей, ее длина в байтах (Б) и время выполне-
ния в машинных циклах (Ц).
Команда безусловного перехода LJMP ( L - long - длин-
ный) осущ ествляет переход по абсолю тному 16-битному
адресу, указанному в теле команды, т.е. команда обеспе-
чивает переход в любую точку памяти программ.
Действие команды AJM P (A - absolute - абсолютный)
аналогично команде LJMP, однако в теле команды указа-
ны лишь 11 младш их разрядов адреса. Поэтому переход
осуществляется в пределах страницы размером 2 Кбайт,
при этом надо иметь в виду. Что сначала содержимое счет-
чика команд увеличивается на 2, и только потом заменя-
ются 11 разрядов адреса.
В отличие от предыдущ их команд, в команде SJMP
(S - short - короткий) указан не абсолютный, а относи-
тельный адрес перехода. Величина смещ ения rel рассмат-
ривается как число со знаком, а, следовательно, переход
возможен в пределах-128.
..+127 байта относительно ад-
реса команды, следующей за командой SJMP.
Команда косвенно перехода JMP @ А + DPTR позволя-
ет вычислять адрес перехода в процессе выполнения са-
мой программы.
Командами условного перехода можно проверять сле-
дую щ ие условия:
- JZ - аккумулятор содержит нулевое значение;
- JNZ - аккумулятор содержит не нулевое значение;
- JC - бит переноса С установлен;
- JNC - бит переноса С не установлен;
- JB - прямо адресуемый бит равен 1;
- LNB - прямо адресуемый бит равен 0;
- JBC - прямо адресуемый бит равен 1 и сбрасывает-
ся в нулевое значение при выполнении команды.
Все команды условного перехода содержат короткий
относительный адрес, т.е. переход может осущ ествлять-
ся в пределах -128.
..+127 байт относительно следующей
команды. Команда DJNZ предназначена для организации
программных циклов. Регистр Rn или байт по адресу ad,
указанные в теле команды, содержат счетчик повторений
цикла, а смещ ение rel - относительный адрес перехода к
началу цикла. При выполнении команды содержимое счет-
чика уменьшается на 1 и проверяется на 0. Если значе-
ние содержимого счетчика не равно 0, то осуществляется
переход на начало цикла, в противном случае выполня-
ется следующая команда.
Команда CJNE удобна для реализации процедур ожи-
дания внеш них событий. В теле команды указаны “коор-
динаты ” двух байт и относительны й адрес перехода rel.
В качестве двух байт могут быть использованы, напри-
мер, значения содержимого аккумулятора и прямо адре-
суемого байта или косвенно используемого байта и кон-
станты . При вы полнен ии ком анды
значения указанны х двух байт срав-
ниваются и в случае, если они не оди-
наковы, осущ ествляется переход. На-
пример, команда WAIT: CJNE А, Р0,
W AIT будет выполняться до тех пор,
пока значения на линиях порта Р0 не
совпадут со значениями содержимо-
го аккумулятора.
Действие команд вызова процедур
полностью аналогично действию ко-
манд безусловного перехода. Е дин-
ственное отличие состоит в том, что
они сохраняют в стеке адрес возврата.
Команда возврата из подпрограм-
мы RET восстанавливает из стека зна-
чение содержимого счетчика команд.
А команда возврата из процедуры об-
работки прерывания RETI, кроме того,
разрешает прерывание обслуженного
уровня. Команды RET и RETI не раз-
личают, какой командой - LCALL или
A C A LL-б ы л а вызвана подпрограмма,
так как и в том, и в другом случае в
стеке сохраняется полный 16-разряд-
ный адрес возврата.
В заклю чение следует отметить,
что больш инство Ассемблеров допус-
кают обобщ енную мнемонику JMP -
для команд безусловного перехода и
CALL - для команд вызова подпрог-
рамм. Конкретный тип команды опре-
дел яется А ссем бл ером , исходя из
“длины" перехода или вызова.
Табл. 6
Название команды
Мнемокод
КОП
T
Б
Ц
Операция
Длинный переход в полном объеме ПП
LJMP ad16
00000010
12 3
2
(РС)«- ad16
Абсолютный переход внутри страницы в 2
Кб
AJMP ad11
aioagaeOOOOl
6
2
2
(РС)
(РС) + 2, (РСоио)
эd11
Короткий относительный переход внутри
страницы в 256 байт
SJMP rel
10000000
5
2
2
(РС) <- (РС) + 2, (РС)«- (РС) +ге!
Косвенный относительный переход
JMP @A+DPTR 01110011
1
1
2
(РС) «—
(А) + (ОРТР)
Переход, если аккумулятор равен нулю
JZ rel
01100000
5
2
2
(РСМРС)+2, если (А)=0, то
(РС)«-(РС)+ге1
Переход, если аккумулятор не равен нулю JNZ rel
01110000
5
2
2
(РС)«-(РС)+2, если (А)^0, то
(РС)«-(РС)+ге!
Переход если перенос равен единице
JC rel
01000000
5
2
2
(РС)«-(РС)+2, если (С)=1, то
(РС)«-(РС)+ге!
Переход, если перенос равен нулю
JNC rel
01010000
5
2
2
(РС)«-(РС)+2, если (С)=0, то
(РС)«-(РС)+ге!
Переход, если бит равен единице
JB bit, rel
00100000
11 3
2
(РС)«-(РС)+3, если (Ь)=1, то
(РС)«—(РС)+ге!
Переход, если бит равен нулю
JNB bit, rel
00110000
11 3
2
(РС)«-(РС)+3, если (Ь)=0, то
(РС)«-(РС)+ге!
Переход, если бит установлен, с
последующим сбросом бита
JBC bit, rel
00010000
11 3
2
(РС)«- (РС) + 3, если (Ь)=1,
то (Ы «- 0 и (РС)«- (РС) + ге)
Декремент регистра и переход, если не
нуль
DJNZ Rn, rel
11011 rrr
5
2
2
(РС)«- (РС) + 2, (Рп)«- (Р п )-1,
если (Рп) ^ 0. то (РС) <—
(РС) + ге!
Декремент прямоадресуемого байта и
переход, если не нуль
DJNZ ad, rel
11010101
8
3
2
(РС)«- (РС) + 2. ^ ) « - ^ ) -1,
если ^ ) 7* 0, то (РС)«—
(РС) + ге!
Сравнение аккумулятора с
прямоадресуемым байтом и переход, есль
не равно
CJNE A, ad, rel
10110101
8
3
2
(РС )«- (РС) «■
З.если (А)
Ф
^ ) , то
(РС)«- (РС) + ге!,если (А) < ^ ) , то
(С )«- 1. иначе (С )«- 0
Сравнение аккумулятора с константой и
переход, если не равно
CJNE A, #d, rel
10110100
10 3
2
(РС)«- (РС) + З.если (А)
?
#d, то
(РС)«—
(РС) + ге!,если (А) < #d, то
(С )«- 1, иначе (С )«- 0
Сравнение регистра с константой и
переход если не равно
CJNE Rn, #d, re 10111 rrr
10 3
2
(РС)«- (РС) •*- З.если (Рп) г4
#й,
то
(РС)«—
(РС) + ге!.если (Рп) < #d, то
(С )«- 1, иначе (С )«- 0
Сравнение байта в РПД с константой и
переход, если не равно
CJNE @Ri,#d,re 1011011!
10 3
2
(РС)«- (РС) + З.если ((И)) * #d, то
(РС)«- (РС) + ге!,если ((Р1)) < #d, то
(С )«- 1. иначе (С )«- 0
Длинный вызов подпрограммы
LCALL adl6
00010010
12 3
2
(РС)«- (РС) + 3, (ЭР)«- (ЭР) +1,
((ЭР)) *- (РСо 7), (ЭР)«—
(ЭР) + 1,
((ЗР))«-(РС8 ,5), (Р С )«-ad16
Абсолютный вызов подпрограммы в
пределах страницы в 2 Кб
ACALL ad11
atoasaelOOOl
6
2
2
(РС)«- (РС) + 2, (ЭР)«- (ЭР) + 1,
((ЭР))«- (РСо 7). (БР) <- (ЭР) + 1.
((ЗР))«-(РС8 1б), (РСопо) «—
аЬ11
Возврат из подпрограммы
RET
00100010
1
1
2
(РСо ,5)
((ЭР)). (ЭР)(ЭР) - 1,
(РСо. /)< - «ЭР», (ЭР) ^ <ЗР)-1
Возврат из подпрограммы обработки
прерывания
RETI
00110010
1
1
2
(РСв . !5) *- ((ЭР)). (ЭР)«- (ЭР)- 1,
(РСо 7)
*—
((ЭР)), (ЭР)
* -
(ЭР) - 1
Пустая операция
NOP
00000000
1
1
1
(РС)«- (РС) + 1
10/2002
предыдущая страница 29 Радиолюбитель 2002-10 читать онлайн следующая страница 31 Радиолюбитель 2002-10 читать онлайн Домой Выключить/включить текст