Бродин В.Б., Калинин А.Б. Схемы на микроконтроллерах и БИС программируемой логики, 2002
.pdfГЛАВА 2. АРХИТЕКТУРА MCS-51 |
69 |
лов обращения к внешней памяти данных. Формат команды сложения ADD A,Rn следующий:
7 |
|
О |
Код операции |
п п п |
|
ADD |
A, |
Rn |
• Прямая адресация. Операнд находится во внутренней памяти данных, адрес ячейки определяет отдельный байт команды. Таким образом, коман ды с использованием прямой адресации имеют минимум два байта, дос тупны только 256 ячеек, обращения за операндом к внешней памяти не требуется. Формат команды сложения ADD A,direct следующий:
7 |
0 |
7 |
0 |
|
Код операции |
|
прямой адрес |
ADD |
А, |
|
direct |
• Косвенно-регистровая адресация. Этот метод адресации использует регистры R0 и R1 в качестве указателей. Регистры берутся из банка, опре деляемого разрядами RSO, RS1 регистра PSW. Содержимое этих регистров используется как адрес для обращения к ячейке внутренней памяти дан ных, хранящей операнд. Команда получается однобайтной, номер регистра указывает младший бит. Длина команды при этом соответствует длине ко манды с использованием регистровой адресации, но косвенная адресация дает доступ ко всему пространству внутренней памяти данных. Формат команды сложения ADD A, @Ri следующий:
7 |
|
0 |
Код операции |
|
i |
ADD |
A, |
©Ri |
• Непосредственная адресация. Операнд находится в отдельном байте команды, это константа. Таким образом, команды с использованием непо средственной адресации имеют минимум два байта, обращения за операн дом к внешней памяти не требуется. Формат команды сложения ADD А, #data следующий:
7 |
|
0 |
7 |
0 |
Код операции |
|
|
|
байт данных |
ADD |
А, |
|
|
#data |
Отметим, что в общем случае для указания места нахождения каждого из двух операндов, а также приемника результата, в команде должен быть использован свой метод адресации. В «аккумуляторной» архитектуре MCS-51 результат всегда помещается в аккумулятор, поэтому адресуются только два операнда. Иногда один из операндов берется из определенного
70 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
|
регистра, что определяется уникальным кодом операции. По существу это пятый метод - неявная адресация.
Состояние процессора после выполнения очередной команды опреде ляется состоянием аккумулятора и регистра PSW, который хранит «слово состояния процессора». Формат этого регистра и функции отдельных би тов следующие:
PSW | CY | АС | F0 1 RS1 | RS0 | OV 1 j Р |
флаг |
Бит |
CY |
PSW.7 |
АС |
PSW.6 |
F0 |
PSW.5 |
RS1 |
PSW.4 |
RS0 |
PSW.3 |
OV |
PSW.2 |
|
PSW.1 |
Функция
Флаг переноса Флаг вспомогательного переноса (между тетрадами)
Флаг 0, возможно программирование пользователем в общих целях Первый бит селектора регистрового банка Нулевой бит селектора регистрового банка Флаг переполнения Флаг, определяемый пользователем
РPSW.0 Флаг чётности. Указывает чётное число "1" в аккумуляторе
При описании системы команд далее используются следующие обозна чения:
Rn - один из регистров R0 - R7 в банке регистров, определенном би тами регистра PSW;
Direct - адрес ячейки внутренней памяти данных.
@Ri - ячейка внутренней памяти данных, косвенно адресуемая через регистры R0 или R1 текущего банка;
#data - 8-разрядная константа, включенная в команду; #data 16 - 16-разрядная константа, включенная в команду;
addr 16 - 16-разрядный адрес перехода в командах LCALL и LJMP, addr 11 - l l -разрядный адрес перехода в командах ACALL и AJMP; rel - 8-разрядная константа со знаком (в дополнительном коде). Оп
ределяет смешение в команде SJMP и всех командах условных переходов; bit - адрес бита во внутренней памяти данных.
Всего в системе команд семейства MCS-51 можно выделить 5 групп. Команды следующим образом изменяют значение флагов регистра PSW:
Команда |
|
Флаг |
|
Команда |
|
Флаг |
|
ADD |
С |
OV |
AC |
|
С |
OV |
AC |
X |
X |
X |
CLR С |
0 |
|
|
|
ADDC |
X |
X |
X |
CPL С |
X |
|
|
SUBB |
X |
X |
X |
ANL С,bit |
X |
|
|
MUL |
0 |
X |
|
ANLC./bit |
X |
|
|
DIV |
0 |
X |
|
ORL C.bit |
X |
|
|
DA |
X |
|
|
ORL C,/bit |
X |
|
|
RRC |
X |
|
|
MOV C, bit |
X |
|
|
RLC |
X |
|
|
CJNE |
X |
|
|
SETB С |
1 |
|
|
|
|
|
|
ГЛАВА 2. АРХИТЕКТУРА MCS-51 |
71 |
Арифметические команды. Обеспечивают выполнение операций сло жения и вычитания (в том числе с учетом переноса) над целочисленными 8-разрядными операндами, инкремент и декремент регистров и ячеек внут ренней памяти данных, двоично-десятичную коррекцию содержимого ак кумулятора. Краткая сводка этих команд приведена в следующей таблице, а более подробное их описание можно найти в Приложении 1.
Арифметические команды микроконтроллеров MCS-51
Мнемоника Описание Байт Тактов Действие
АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ
ADD |
A,Rn |
Сложение регистра с |
1 |
12 |
ADD |
|
|
аккумулятором |
|
|
(A M A )+ (R n ) |
ADD |
A,direct |
Сложение ячейки внутренней |
2 |
12 |
ADD |
|
|
памяти данных с аккумулятором |
|
|
(A)<-(A)+(direct) |
ADD |
A,©Ri |
Сложение косвенно адресуемой |
1 |
12 |
ADD |
|
|
ячейки внутренней памяти |
|
|
(A)«-(A)+((Ri)) |
|
|
данных с аккумулятором |
2 |
12 |
ADD |
ADD |
A,#data |
Сложение непосредственного |
|||
|
|
байта данных с аккумулятором |
|
|
(A)<-(A)+#data |
ADDC |
A,Rn |
Сложение регистра с |
1 |
12 |
ADDC |
|
|
аккумулятором с учетом переноса |
|
|
(A)<-(A)+(C)+(Rn) |
ADDC |
A,direct |
Сложение ячейки внутренней |
2 |
12 |
ADDC |
|
|
памяти данных с аккумулятором с |
|
|
(A)<-(A)+(C)+(direct) |
|
|
учетом переноса |
1 |
12 |
ADDC |
ADDC |
A,©Ri |
Сложение косвенно адресуемой |
|||
|
|
ячейки внутренней памяти даных с |
|
|
(A)<-(A)+(C)+((Ri)) |
|
|
аккумулятором с учетом переноса |
|
|
|
ADDC |
A,#data |
Сложение непосредственного |
2 |
12 |
ADDC |
|
|
байта данных с аккумулятором с |
|
|
(A)<-(A)+(C)+#data |
|
|
учетом переноса |
|
|
SUBB |
SUBB |
A,Rn |
Вычитание регистра из |
1 |
12 |
|
|
|
аккумулятора с учетом заема |
|
|
(A H A H C H R n ) |
SUBB |
A, direct |
Вычитание ячейки внутренней |
2 |
12 |
SUBB |
|
|
памяти данных из аккумулятора с |
|
|
(A)<-(AMC)-(direct) |
|
|
учетом заема |
1 |
12 |
SUBB |
SUBB |
A,©Ri |
Вычитание косвенно адресуемой |
|||
|
|
ячейки внутренней памяти данных |
|
|
(AM AHCH(Ri)) |
|
A,#data |
из аккумулятора с учетом заема |
|
12 |
SUBB |
SUBB |
Вычитание непосредственного |
2 |
|||
|
|
байта данных из аккумулятора с |
|
|
(A)<-(A)-(C)-#data |
INC |
|
учетом заема |
1 |
12 |
INC |
A |
Инкремент аккумулятора |
||||
|
|
|
|
|
(A)«-(A)+1 |
INC |
Rn |
Инкремент регистра |
1 |
12 |
INC |
|
|
|
|
|
(Rn)<-(Rn)+1 |
INC |
direct |
Инкремент ячейки внутренней |
2 |
12 |
INC |
|
|
памяти данных |
|
|
(direct)«-(direct)+1 |
INC |
©Ri |
Инкремент косвенно адресуемой |
1 |
12 |
INC |
|
|
ячейки внутренней памяти данных |
|
|
<{Ri))<-«Ri))+1 |
72 |
|
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
||||
|
|
|
|
|
|
|
Мнемоника |
Описание |
Байт |
Тактов |
Действие |
||
DEC |
A |
Декремент аккумулятора |
1 |
12 |
DEC |
|
|
|
|
|
|
(А)«—(А)—1 |
|
DEC |
Rn |
Декремент регистра |
1 |
12 |
DEC |
|
|
|
|
|
|
(Rn)«-(Rn)-1 |
|
DEC |
direct |
Декремент ячейки внутренней |
2 |
12 |
DEC |
|
|
|
памяти данных |
|
|
(direct)«-(direct)-1 |
|
DEC |
©Ri |
Декремент косвенно адресуемой |
1 |
12 |
DEC |
|
|
|
ячейки внутренней памяти данных |
|
|
((Ri))«-((Ri)H |
|
INC |
DPTR |
Инкремент указателя данных |
1 |
24 |
INC |
|
|
|
|
|
|
(DPTR)«-(DPTR)+1 |
|
MUL |
AB |
Умножение А на В |
1 |
48 |
MUL |
|
|
|
|
|
|
(A)70<-(A)X(B); |
(B)158 |
DIV |
AB |
Деление А на В |
1 |
48 |
DIV |
|
|
|
|
|
|
(A)t5e<-(A)/(B); |
(B)70 |
DA |
A |
Двоично-десятичная коррекция |
1 |
12 |
DA • содержимое |
|
|
|
аккумулятора |
|
|
аккумулятора в BCD |
|
|
|
|
|
|
IF[[(A3o)>9]V[(AC)=1]) |
THEN (A3 o)*~(A3 o)+6
AND
IF[[(A 74)>9]V[(C)=1]]
THEN (A74)<-(A74)+6
Особенностью системы команд MCS-51 является наличие в составе этой группы команд умножения и деления 8-разрядных целочисленных операндов. Получающийся 16-разрядный результат хранится в регистрах А и В. Результатом выполнения арифметических команд является, кроме нового содержимого аккумулятора, измененное значение регистра PSW.
Логические команды. Выполняют операции AND, OR, «исключающее ИЛИ», сдвиги содержимого аккумулятора вправо и влево, очистку акку мулятора и перестановку его тетрад. В качестве операндов могут исполь зоваться непосредственные данные и содержимое ячеек внутренней памяти данных. Выполнение некоторых логических команд влияет на значение флага С (перенос) регистра PSW.
Логические команды микроконтроллеров MCS-51
Мнемоника |
Описание |
Байт Тактов |
Действие |
ЛОГИЧЕСКИЕ ОПЕРА1 (ИИ
ANL A,Rn
ANL A,direct
ANL A,©Ri
ANL A,#data
AND регистра и аккумулятора |
1 |
12 |
ANL (A)<-(A)A(Rn) |
AND ячейки внутренней |
2 |
12 |
ANL |
памяти данных и аккумулятора |
|
|
(A)«-(A)A(direct) |
AND косвенно адресуемой |
1 |
12 |
ANL |
ячейки внутренней памяти |
|
|
(A)«-(A)A((Ri)) |
данных и аккумулятора |
|
|
|
AND непосредственного байта |
2 |
12 |
ANL |
данных и аккумулятора |
|
|
(A)«-(A)A#data |
ГЛАВА 2 |
АРХИТЕКТУРА MCS-51 |
|
|
|
|
73 |
|
Мнемоника |
Описание |
Байт |
Тактов |
|
Действие |
||
ANL |
direct,A |
AND аккумулятора и ячейки |
2 |
12 |
ANL |
|
|
|
|
внутренней памяти данных |
3 |
24 |
(direct)«-(direct)A(A) |
||
ANL |
direct, #data |
AND непосредственного байта |
ANL |
|
|
||
|
|
данных и ячейки внутренней |
|
|
(direct)«-(direct)A#data |
||
|
|
памяти данных |
1 |
|
|
|
|
ORL |
A,Rn |
OR регистра и аккумулятора |
12 |
ORL |
(A)<-(A)V(Rn) |
||
ORL |
A, direct |
OR ячейки внутренней памяти |
2 |
12 |
ORL |
|
|
|
A,©Ri |
данных и аккумулятора |
1 |
|
(A)«-(A)V(direct) |
||
ORL |
OR косвенно адресуемой |
12 |
ORL |
|
|
||
|
|
ячейки внутренней памяти |
|
|
(A)<-(A)V((Ri)) |
|
|
|
|
данных и аккумулятора |
|
|
|
|
|
ORL |
A,#data |
OR непосредственного байта |
2 |
12 |
ORL |
|
|
|
|
данных и аккумулятора |
|
|
(A)«-(A)V#data |
||
ORL |
direct,A |
OR аккумулятора и ячейки |
2 |
12 |
ORL |
|
|
|
|
внутренней памяти данных |
|
|
(direct)«-(direct)V(A) |
||
ORL |
direct, #data |
OR непосредственного байта |
3 |
24 |
ORL |
|
|
|
|
данных и ячейки внутренней |
|
|
(direct)«-(direct)V#data |
||
|
|
памяти данных |
1 |
|
|
|
|
XRL |
A,Rn |
XOR регистра и аккумулятора |
12 |
XRL |
|
|
|
|
|
XOR ячейки внутренней памяти |
|
|
(A)<_(A)V(Rn) |
|
|
XRL |
A,direct |
2 |
12 |
XRL |
|
|
|
|
|
данных и аккумулятора |
|
|
(A)«-(A)V(direct) |
||
XRL |
A,©Ri |
XOR косвенно адресуемой |
1 |
12 |
XRL |
|
|
|
|
ячейки внутренней памяти |
|
|
(A)<_(A)V((Ri)) |
||
|
|
данных и аккумулятора |
|
|
|
|
|
XRL |
A,#data |
XOR непосредственного |
2 |
12 |
XRL |
|
|
|
|
байта данных и аккумулятора |
|
|
(A)<-(A)V#data |
||
XRL |
direct,A |
XOR аккумулятора и ячейки |
2 |
12 |
XRL |
|
|
|
|
внутренней памяти данных |
|
|
(direct)«-(direct)V(A) |
||
XRL |
direct, #data |
XOR непосредственного |
3 |
24 |
XRL |
|
|
|
|
байта данных и ячейки |
|
|
(direct)«-(direct)V#data |
||
|
|
внутренней памяти данных |
|
|
|
|
|
CLR |
A |
Очистка аккумулятора |
1 |
12 |
CLR |
(A)<-0 |
|
CPL |
A |
Инверсия аккумулятора |
1 |
12 |
CPL |
|
|
|
A |
Сдвиг аккумулятора влево |
1 |
|
(A)<- -.(A) |
|
|
RL |
12 |
RL |
|
|
|||
|
|
|
|
|
(An+1)«-(An) |
n = 0-6 |
|
|
|
|
|
|
(A0)<-(A7) |
|
|
RLC |
A |
Сдвиг аккумулятора влево |
1 |
12 |
RLC |
|
|
|
|
через перенос |
|
|
(An+1)«-(An) |
n = 0-6 |
|
|
|
|
|
|
(A0)<-(C) |
|
|
|
|
|
|
|
(C)<-(A7) |
|
|
RR |
A |
Сдвиг аккумулятора вправо |
1 |
12 |
RL |
|
|
|
|
|
|
|
(An)«-(An+1) |
n = 0-6 |
|
|
|
|
|
|
(A7)<-(A0) |
|
|
RRC |
A |
Сдвиг аккумулятора вправо |
1 |
12 |
RRC |
|
|
|
|
через перенос |
|
|
(An)«-(An+1) |
n = 0-6 |
|
|
|
|
|
|
(A7)<-(C) |
|
|
|
|
|
|
|
(C)<-(A0) |
|
|
SWAP |
A |
Перестановка тетрад |
1 |
12 |
SWAP |
|
|
|
|
аккумулятора |
|
|
(A3 o) |
<->(A7 4) |
|
74 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
Команды пересылки данных. Осуществляют передачу данных между ячейками внутренней памяти данных (команды MOV), внешней памяти данных (команды MOVX) и аккумулятором.
Команды пересылки данных микроконтроллеров MCS-51
Мнемоника |
Описание |
Байт Тактов |
Действие |
ПЕРЕСЫЛКА ДАННЫХ
MOV |
A,Rn |
MOV |
A,direct |
MOV |
A,©Ri |
MOV |
A,#data |
MOV |
Rn,A |
MOV |
Rn, direct |
MOV |
Rn,#data |
MOV |
direct,A |
MOV |
direct, Rn |
MOV |
direct,direct |
MOV |
direct, ©Ri |
MOV |
direct, #data |
MOV |
©Ri,A |
MOV |
©Ri, direct |
MOV |
©Ri,#data |
MOV |
DPTR,data16 |
MOVC A,©A+DPTR
Пересылка из регистра в |
1 |
12 |
MOV |
аккумулятор |
2 |
12 |
(A)<-(Rn) |
Пересылка из ячейки внутренней |
MOV |
||
памяти данных в аккумулятор |
|
|
(А)ч—(direct) |
Пересылка из косвенно |
1 |
12 |
MOV |
адресуемой ячейки внутренней |
|
|
(direct)«-((Ri)) |
памяти данных в аккумулятор |
|
|
|
Пересылка непосредственного |
2 |
12 |
MOV |
байта данных в аккумулятор |
|
|
(A)«-#data |
Пересылка из аккумулятора в |
1 |
12 |
MOV |
регистр |
|
|
(Rn)«-(A) |
Пересылка из ячейки внутренней |
2 |
24 |
MOV |
памяти данных в регистр |
|
|
(Rn)«-(direct) |
Пересылка непосредственного |
2 |
12 |
MOV |
байта данных в регистр |
|
|
(Rn)«-#data |
Пересылка из аккумулятора в |
2 |
12 |
MOV |
ячейку внутренней памяти данных |
|
|
(direct)«-(A) |
Пересылка из регистра в ячейку |
2 |
24 |
MOV |
внутренней памяти данных |
|
|
(direct)«-(Rn) |
Пересылка из ячейки внутренней |
3 |
24 |
MOV |
памяти данных в ячейку внутрен |
|
|
(direct)«-(direct) |
ней памяти данных |
|
|
|
Пересылка из косвенно |
2 |
24 |
MOV |
адресуемой ячейки внутренней |
|
|
(direct)«-((Ri)) |
памяти данных в ячейку внутрен |
|
|
|
ней памяти данных |
|
|
|
Пересылка непосредственного |
3 |
24 |
MOV |
байта данных в ячейку внутренней |
|
|
(direct)«-#data |
памяти данных |
|
|
|
Пересылка из аккумулятора в |
1 |
12 |
MOV |
косвенно адресуемую ячейку |
|
|
((Ri»<-(A) |
внутренней памяти данных |
|
|
|
Пересылка из ячейки внутренней |
2 |
24 |
MOV |
памяти данных в косвенно |
|
|
((Ri))«-(direct) |
адресуемую ячейку внутренней |
|
|
|
памяти данных |
|
|
|
Пересылка непосредственного |
2 |
12 |
MOV |
байта данных в косвенно |
|
|
((Ri))<-(data) |
адресуемую ячейку |
|
|
|
Загрузка 16-разрядной константы в |
3 |
24 |
MOV |
указатель данных |
|
|
(DPTR)<—# data is о |
|
|
|
DPH <—#data,58 |
Пересылка байта кода, |
|
|
DPL «-#data7 0 |
1 |
24 |
MOVC |
|
связанного с DPTR, в аккумулятор |
|
|
(A1«-((A1+(DPTR)) |
ГЛАВА 2 АРХИТЕКТУРА MCS-51 |
75 |
Мнемоника |
Описание |
|
MOVC |
А.вА+РС |
Пересылка байта кода, |
|
|
связанного с PC, в аккумулятор |
MOVX |
A,©Ri |
Пересылка байта из |
|
|
внешней памяти данных |
|
|
(8-разр. адрес) в аккумулятор |
MOVX |
A,©DPTR |
Пересылка байта из |
|
|
внешней памяти данных |
MOVX |
|
(16-разр. адрес) в аккумулятор |
©Ri,A |
Пересылка из аккумулятора в |
|
|
|
ячейку внешней памяти данных |
|
|
(8 -разр. адрес) |
MOVX |
©DPTR.A |
Пересылка из аккумулятора в |
|
|
ячейку внешней памяти данных |
|
|
(16-разр. адрес) |
PUSH |
direct |
Загрузка ячейки внутренней |
|
|
памяти данных в стек |
POP |
direct |
Выгрузка из стека в ячейку |
|
|
внутренней памяти данных |
ХСН |
A,Rn |
Обмен между регистром и |
ХСН |
|
аккумулятором |
A,direct |
Обмен между ячейкой внутренней |
|
ХСН |
|
памяти данных и аккумулятором |
A,©Ri |
Обмен между косвенно |
|
|
|
адресуемой ячейкой внутренней |
XCHD |
A,©Ri |
памяти данных и аккумулятором |
Обмен младшими тетрадами |
||
|
|
между косвенно адресуемой |
ячейкой внутренней памяти данных и аккумулятором
Байт |
Тактов |
Действие |
1 |
24 |
MOVC |
|
|
(РС)<-(РС)+1 |
|
24 |
(А)<-((А)+(РС)) |
1 |
MOVX |
|
|
|
(A)«-((Ri)) |
1 |
24 |
MOVX |
|
|
(A)«-((DPTR)) |
124 MOVX ((Ri))<-(A)
124 MOVX (DPTR)<—(A)
224 PUSH
|
|
(SP)<-(SP)+1 |
2 |
24 |
((SP))«-(direct) |
POP |
||
|
|
(direct)«-((SP)) |
|
|
(SP)<-(SP)-1 |
1 |
12 |
XCH |
|
|
(A)<->((Rn)) |
2 |
12 |
XCH |
|
|
(A)<-»(direct) |
1 |
12 |
XCH |
|
|
(AK>(R,)) |
1 |
12 |
XCHD |
|
|
(A3 oK*((Ri3 o)) |
Существуют две команды MOVC, позволяющие читать в аккумулятор содержимое памяти программ. К этой группе относятся парные команды PUSH и POP, осуществляющие загрузку и выгрузку содержимого прямо адресуемой ячейки в стек (из стека). Имеются четыре команды взаимного обмена информацией между ячейками внутренней памяти данных (ХСН и XCHD). Команды пересылки данных значения флагов в регистре PSW не изменяют.
Команды работы с битами. Эти команды устанавливают в «1» (SETB) или «О» (CLR) прямо адресуемый бит внутренней памяти данных, изменяют его значение на противоположное (CPL), выполняют операции AND и OR над флагом переноса С и прямо адресуемым битом (ANL и ORL), осуществляют пересылку значения между флагом С и прямо адре суемым битом (MOV), осуществляют передачу управления по состоянию флага С или прямо адресуемого бита (JC, JNC, JB, JNB, JBC).
76 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
Команды работы с битами микроконтроллеров MCS-51
Мнемоника |
Описание |
Байт Тактов |
Действие |
ОПЕРАЦИЯ С БУЛЕВЫМИ ПЕРЕМЕННЫМИ
CLR С
CLR bit
SETB С
SETB bit
CPL С
CPL bit
ANL С,bit
ANL C,/bit
ORL С,bit
ORL С,/bit
MOV С,bit MOV bit,С
JC rei
JNC rel
JB bit,rei
JNB bit, rel
JBC bit,rel
Очистка флага переноса |
1 |
12 |
CLR |
|
|
|
|
(С)<-0 |
|
Очистка бита |
2 |
12 |
CLR |
|
|
|
|
(bit)<-0 |
|
Установка флага переноса |
1 |
12 |
SETB |
|
|
|
|
(С)<-1 |
|
Установка бита |
2 |
12 |
SETB |
|
|
|
12 |
(bit)<-1 |
|
Инверсия флага переноса |
1 |
CPL |
|
|
Инверсия бита |
2 |
12 |
(C)<- - (С) |
|
CPL |
|
|||
AND бита и флага переноса |
2 |
24 |
(bit)<— i (bit) |
|
ANL |
(C)<-(C) A (bit) |
|||
AND инверсии бита и флага |
2 |
24 |
ANL |
|
переноса |
|
|
(C)«-(C) A (bit) |
|
OR бита и флага переноса |
2 |
24 |
ORL |
|
OR инверсии бита и флага |
2 |
24 |
(C M C ) V (bit) |
|
ORL |
|
|||
переноса |
|
|
(C M C ) V -.(bit) |
|
Пересылка бита во флаг переноса |
2 |
12 |
MOV |
(C)<-(bit) |
Пересылка флага переноса в бит |
2 |
24 |
MOV |
|
Переход, если флаг переноса |
|
24 |
(b itM C ) |
|
2 |
JC |
|
||
установлен |
|
|
( P C M PC) + 2 |
|
|
|
|
IF (C)=1 |
|
|
|
|
THEN |
|
Переход, если флаг переноса |
2 |
24 |
JNC |
(PC)<-(PC)+ rel |
|
||||
установлен |
|
|
(P C M PC) + 2 |
|
|
|
|
IF (C)=0 |
|
|
|
|
THEN |
|
Переход, если бит установлен |
3 |
24 |
JB |
(PC)<-(PC)+ rel |
|
||||
|
|
|
(P C M PC) + 3 |
|
|
|
|
IF (bit)=1 |
|
|
|
|
THEN |
|
Переход, если бит не установлен |
3 |
24 |
JNB |
(PC)<-(PC)+ rel |
|
||||
|
|
|
(P C M P C ) + 3 |
|
|
|
|
IF (bit)=0 |
|
Переход, если бит установлен, и |
|
|
THEN |
(PC)<-(PC)+rel |
3 |
24 |
JBC |
|
|
очистка этого бита |
|
|
(P C M P C ) + з |
|
|
|
|
IF (bit)=1 |
THEN (bit)<-0
(P C M P C )+ rel
ГЛАВА 2. АРХИТЕКТУРА MCS-51 |
77 |
Команды этой группы, выполняющие логические операции и осущест вляющие пересылку значения бита, изменяют значение флага С регистра PSW. Остальные команды на флаги не действуют.
Команды передачи управления. Передача управления может осуще ствляться безусловно или по условию, без возврата или с возвратом. В последнем случае для возврата необходимо хранить состояние процессора. Система команд MCS-51 кроме обычных «длинных» переходов с исполь зованием 16-разрядного адреса унаследовала от семейства MCS-48 коман ды передачи управления с «коротким» l l -разрядным адресом.
Команды передачи управления микроконтроллеров MCS-51
Мнемоника Описание
ПЕРЕДАЧА УПРАВЛЕНИЯ
ACALL addrl 1 |
Короткий переход с |
|
возвратом. |
LCALL addrl6 |
Длинный переход с |
|
возвратом |
RET |
|
Возврат из |
|
|
подпрограммы |
RETI |
|
Возврат из подпрограм |
|
|
мы прерывания |
AJMP |
addrl 1 |
Короткий переход без |
|
|
возврата |
LJMP |
addrl 6 |
Длинный переход без |
|
|
возврата |
SJMP |
rel |
Короткий переход |
|
|
с 8-разрядным |
|
|
смещением |
JMP |
©A+DPTR |
Переход относительно |
|
|
DPTR |
Байт |
Тактов |
Действие |
2 |
24 |
ACALL |
|
|
(РС)<-(РС)+ 2 |
|
|
(SP)<-(SP) + 1 |
|
|
((SP))<-(PC70) |
|
|
(SP)<-(SP) + 1 |
|
|
((SP))<-(PC,5.e) |
3 |
24 |
(PC,o 0)«-page address |
LCALL |
||
|
|
(PC)«-(PC)+ 3 |
|
|
(SP)<-(SP) + 1 |
|
|
((SP))<-(PC70) |
|
|
(SP)<-(SP) + 1 |
|
|
((SP))<-(PC,5e) |
|
24 |
(PC)<—addT)5 о |
1 |
RET |
|
|
|
(PC158)<-((SP)) |
|
|
(SP)<-(SP)-1 |
|
|
(PC70)<-((SP)) |
|
24 |
(SP)<-(SP)-1 |
1 |
RETI |
|
|
|
(PC158)<-((SP)) |
|
|
(SP)<-(SP)-1 |
|
|
(PC70)<-((SP)) |
|
|
(SP)<-(SP)-1 |
2 |
24 |
AJMP |
|
|
(PC)<-(PC)+2 |
|
|
(PC10 0)<-Pa9e address |
3 |
24 |
LJMP |
|
|
(PC)«-addr150 |
2 |
24 |
SJMP |
|
|
(PC)<-(PC)+2 |
|
|
(PC)«-(PC)+rel |
1 |
24 |
JMP |
|
|
(PC)<-(A)+(DPTR) |
78 |
СИСТЕМЫ НА МИКРОКОНТРОЛЛЕРАХ И БИС ПРОГРАММИРУЕМОЙ ЛОГИКИ |
Мнемоника |
Описание |
|
JZ |
rel |
Переход, если |
|
|
аккумулятор равен нулю |
JNZ |
rel |
Переход, если |
|
|
аккумулятор не |
|
|
равен нулю |
CJNE |
A,direct,rel |
Переход, если ячейка |
|
|
внутренней памяти |
|
|
данных не идентична |
|
|
аккумулятору |
CJNE |
A,#data,rel |
Переход, если |
|
|
непосредственный байт |
|
|
данных не равен |
|
|
аккумулятору |
DJNE |
Rn,#data,rel |
Переход, если |
|
|
непосредственный байт |
|
|
данных не равен |
|
|
регистру |
CJNE |
©Ri,#data, rel |
Переход, если |
|
|
непосредственный байт |
данных не равен косвенно адресуемой ячейке внутренней памяти данных
DJNZ Rn.rel
DJNZ direct, rel
NOP
Декремент регистра и переход, если он не равен нулю
Декремент ячейки внутренней памяти данных и переход, если она не равна нулю
Нет операции
Байт Тактов |
Действие |
24JZ (РС)<—(РС)+2 IF (А)= О
THEN (PC)<-(PC)+rel
24JNZ (РС)<—(РС)+2 IF (А)* О
THEN (PC)<-(PC)+rel
24(РС)<-(РС)+3 IF(A)< > (direct)
THEN (РС)<-(PC)+relative offset
IF(A) < (direct) THEN
(C)<-1
ELSE (C)<-0
24(PC)<-(PC)+3 IF(A)< > (data)
THEN (PC)<-(PC)+relative offset
IF(A) < (data) THEN
(C)<-1
ELSE (C)<-0
24(PC)<-(PC)+3 IF((Ri))< > data
THEN (PC)<-(PC)+relative offset
IF((R i)) < data THEN (С)ч—1 ELSE (C)<-0
24(PC)<-(PC) + 3 IF ((Ri)) <> data THEN
(PC)<-(PC) +relative offset
IF((Ri)) < data THEN (C)<-1
ELSE (C)<-0
24DJNZ (PC)<-(PC) + 2 (Rn)<-(Rn) - 1
IF (Rn) > 0 or (Rn) < 0
THEN (PC)<-(PC) + rel
24DJNZ (PC)<-(PC) + 2
(direct)<-(direct) - 1 IF(direct)>Oor(direct)< 0
THEN (PC)<-(PC) + rel
12NOP
(PC)<-(PC) + 1___________
Группа команд передачи управления включает четыре команды безус ловного перехода без возврата («ультракороткая» SJMP, «короткая»