Главная
Популярная публикация
Научная публикация
Случайная публикация
Обратная связь
ТОР 5 статей:
Методические подходы к анализу финансового состояния предприятия
Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века
Ценовые и неценовые факторы
Характеристика шлифовальных кругов и ее маркировка
Служебные части речи. Предлог. Союз. Частицы
КАТЕГОРИИ:
|
Команды передачи управления микроконтроллера 8051.
Группа представлена командами безусловного и условного переходов, командами вызова подпрограмм и командами возврата из подпрограмм.
В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Таблица.11. Команды передачи управления
Название команды
| Мнемокод
| КОП
| Т
| Б
| Ц
| Операция
| Длинный переход в полном объеме ПП
| LJMP ad16
|
|
|
|
| (PC) ad16
| Абсолютный переход внутри страницы в 2 Кб
| AJMP ad11
| a10a9a800001
|
|
|
| (PC) (PC) + 2, (PC0-10) ad11
| Короткий относительный переход внутри страницы в 256 байт
| SJMP rel
|
|
|
|
| (PC) (PC) + 2, (PC) (PC) +rel
| Косвенный относительный переход
| JMP @A+DPTR
|
|
|
|
| (PC) (A) + (DPTR)
| Переход, если аккумулятор равен нулю
| JZ rel
|
|
|
|
| (PC)(PC)+2, если (A)=0, то (PC)(PC)+rel
| Переход, если аккумулятор не равен нулю
| JNZ rel
|
|
|
|
| (PC)(PC)+2, если (A)≠0, то (PC)(PC)+rel
| Переход, если перенос равен единице
| JC rel
|
|
|
|
| (PC)(PC)+2, если (С)=1, то (PC)(PC)+rel
| Переход, если перенос равен нулю
| JNC rel
|
|
|
|
| (PC)(PC)+2, если (С)=0, то (PC)(PC)+rel
| Переход, если бит равен единице
| JB bit, rel
|
|
|
|
| (PC)(PC)+3, если (b)=l, то (PC)(PC)+rel
| Переход, если бит равен нулю
| JNB bit, rel
|
|
|
|
| (PC)(PC)+3, если (b)=0, то (PC)(PC)+rel
| Переход, если бит установлен, с последующим сбросом бита
| JBC bit, rel
|
|
|
|
| (PC) (PC) + 3, если (b)=1, то (b) 0 и (PC) (PC) + rel
| Декремент регистра и переход, если не нуль
| DJNZ Rn, rel
| 11011rrr
|
|
|
| (PC) (PC) + 2, (Rn) (Rn) - 1,
если (Rn) ≠ 0, то (PC) (PC) + rel
| Декремент прямоадресуемого байта и переход, если не нуль
| DJNZ ad, rel
|
|
|
|
| (PC) (PC) + 2, (ad) (ad) - 1, если (ad) ≠ 0, то (PC) (PC) + rel
| Сравнение аккумулятора с прямоадресуемым байтом и переход, если не равно
| CJNE A, ad, rel
|
|
|
|
| (PC) (PC) + 3,если (A) ≠ (ad), то (PC) (PC) + rel,если (A) < (ad), то (C) 1, иначе (C) 0
| Сравнение аккумулятора с константой и переход, если не равно
| CJNE A, #d, rel
|
|
|
|
| (PC) (PC) + 3,если (A) ≠ #d, то (PC) (PC) + rel,если (A) < #d, то (C) 1, иначе (С) 0
| Сравнение регистра с константой и переход, если не равно
| CJNE Rn, #d, rel
| 10111rrr
|
|
|
| (PC) (PC) + 3,если (Rn) ≠ #d, то (PC) (PC) + rel,если (Rn) < #d, то (C) 1, иначе (С) 0
| Сравнение байта в РПД с константой и переход, если не равно
| CJNE @Ri,#d,rel
| 1011011i
|
|
|
| (PC) (PC) + 3,если ((Ri)) ≠ #d, то (PC) (PC) + rel,если ((Ri)) < #d, то (C) 1, иначе (C) 0
| Длинный вызов подпрограммы
| LCALL adl6
|
|
|
|
| (PC) (PC) + 3, (SP) (SP) +1,
((SP)) (PC0…7), (SP) (SP) + 1,
((SP)) (PC8…15), (PC) ad16
| Абсолютный вызов подпрограммы в пределах страницы в 2 Кб
| ACALL ad11
| a10a9a810001
|
|
|
| (PC) (PC) + 2, (SP) (SP) + 1,
((SP)) (PC0…7), (SP) (SP) + 1,
((SP)) (PC8…15), (PC0-10) ad11
| Возврат из подпрограммы
| RET
|
|
|
|
| (PC8…15) ((SP)), (SP) (SP) - 1,
(PC0…7) ((SP)), (SP) (SP) – 1
| Возврат из подпрограммы обработки прерывания
| RETI
|
|
|
|
| (PC8…15) ((SP)), (SP) (SP) - 1,
(PC0…7) ((SP)), (SP) (SP) – 1
| Пустая операция
| NOP
|
|
|
|
| (PC) (PC) + 1
|
Команда безусловного перехода LJMP (L – long – длинный) осуществляет переход по абсолютному 16-битному адресу, указанному в теле команды, т. е. команда обеспечивает переход в любую точку памяти программ.
Действие команды AJMP (А – absolute – абсолютный) аналогично команде LJMP, однако в теле команды указаны лишь 11 младших разрядов адреса. Поэтому переход осуществляется в пределах страницы размером 2 Кбайт, при этом надо иметь в виду, что сначала содержимое счетчика команд увеличивается на 2 и только потом заменяются 11 разрядов адреса.
В отличие от предыдущих команд, в команде SJMP (S – short – короткий) указан не абсолютный, а относительный адрес перехода. Величина смещения reI рассматривается как число со знаком, а, следовательно, переход возможен в пределах – 128...+127 байт относительно адреса команды, следующей за командой SJMP.
Команда косвенного перехода JMP @A+DPTR позволяет вычислять адрес перехода в процессе выполнения самой программы.
Командами условного перехода можно проверять следующие условия:
- JZ — аккумулятор содержит нулевое значение;
- JNZ — аккумулятор содержит не нулевое значение
- JC — бит переноса С установлен;
- JNC — бит переноса С не установлен;
- JB — прямо адресуемый бит равен 1
- JNB — прямо адресуемый бит равен 0;
- JBC — прямо адресуемый бит равен 1 и сбрасывается в нулевое значение при выполнении команды.
Все команды условного перехода рассматриваемых микро-ЭВМ содержат короткий относительный адрес, т. е. переход может осуществляться в пределах—128... +127 байт относительно следующей команды.
Команда DJNZ предназначена для организации программных циклов. Регистр Rn или байт по адресу ad, указанные в теле команды, содержат счетчик повторений цикла, а смещение rеl — относительный адрес перехода к началу цикла. При выполнении команды содержимое счетчика уменьшается на 1 и проверяется на 0. Если значение содержимого счетчика не равно 0, то осуществляется переход на начало цикла, в противном случае выполняется следующая команда.
Команда CJN удобна для реализации процедур ожидания внешних событий. В теле команды указаны "координаты" двух байт и относительный адрес перехода rel. В качестве двух байт могут быть использованы, например, значения содержимого аккумулятора и прямо адресуемого байта или косвенно адресуемого байта и константы. При выполнении команды значения указанных двух байт сравниваются и в случае, если они не одинаковы, осуществляется переход. Например, команда
WAIT: CJNE A, P0, WAIT
будет выполняться до тех пор, пока значения на линиях порта P0 не совпадут со значениями содержимого аккумулятора.
Действие команд вызова процедур полностью аналогично действию команд безусловного перехода. Единственное отличие состоит в том, что они сохраняют в стеке адрес возврата.
Команда возврата из подпрограммы RET восстанавливает из стека значение содержимого счетчика команд, а команда возврата из процедуры обработки прерывания RETI, кроме того, разрешает прерывание обслуженного уровня. Команды RET и RETI не различают, какой командой – LCALL или ACALL – была вызвана подпрограмма, так как и в том, и в другом случае в стеке сохраняется полный 16-разрядный адрес возврата.
В заключение следует отметить, что большинство Ассемблеров допускают обобщенную мнемонику JMP – для команд безусловного перехода и CALL – для команд вызова подпрограмм. Конкретный тип команды определяется Ассемблером, исходя из "длины" перехода или вызова.
Основные характеристики микроконтроллеров MCS 51 / MCS 251.
Обозначения
|
Резидентная
память
программ
| Резидентное ОЗУ
| Таймеры/счетчики
| Послед. порт
| Аналог. входы
| Число линий В/В
| Тактовая частота
| Тип корпуса
| Секретность
|
Ключевые
особенности
| Серия 8051 (Не рекомендуется к использованию в новых разработках)
| 8031AH
| нет
|
|
|
|
|
|
| D,N,P
| нет
| Процессор булевых функций
| 8051AH
| 4K ROM
|
|
|
|
|
|
| D,N,P
| P
| Процессор булевых функций
| 8751H
| 4K EPROM
|
|
|
|
|
|
| D
| L1
| Один уровнь блокировки ЗУ
| 8751BH
| 4K OTP ROM
|
|
|
|
|
|
| N,P
| L2
| Два уровня блокировки ЗУ
| Серия 8052 (Не рекомендуется к использованию в новых разработках)
| 8032AH
| нет
|
|
|
|
|
|
| D,N,P
| нет
| Три таймера-счетчика
| 8052AH
| 8K ROM
|
|
|
|
|
|
| D,N,P
| нет
| Три таймера-счетчика
| 8752BH
| 8K OTP/EPROM
|
|
|
|
|
|
| D,N,P
| L2
| Два уровня блокировки ЗУ
| Серия 80C51
| 80C31BH
| нет
|
|
|
|
|
| 12,16
| D,N,P,S
| нет
| Режимы управления потреблением
| 80C51BH
| 4K ROM
|
|
|
|
|
| 12,16
| D,N,P,S
| P
| Режимы управления потреблением
| 87C51
| 4K OTP/EPROM
|
|
|
|
|
| 12,16,20,24i
| D,N,P,S
| L3
| Три уровня блокировки ЗУ
| Серия 8X52 /54 /58
| 80C32
| нет
|
|
|
|
|
| 12,16,20,24i
| N,P,S
| нет
| Реверсивный таймер-счетчик
| 80C52
| 8K ROM
|
|
|
|
|
| 12,16,20,24i
| N,P,S
| L1
| Реверсивный таймер-счетчик
| 87C52
| 8K OTP/EPROM
|
|
|
|
|
| 12,16,20,24i
| D,N,P,S
| L3
| Реверсивный таймер-счетчик
| 80C54
| нет
|
|
|
|
|
| 12,16,20,24i
| N,P,S
| L1
| Реверсивный таймер-счетчик
| 87C54
| 16K OTP/EPROM
|
|
|
|
|
| 12,16,20,24i
| D,N,P,S
| L3
| Реверсивный таймер-счетчик
| 80C58
| нет
|
|
|
|
|
| 12,16,20,24i
| N,P,S
| L1
| Реверсивный таймер-счетчик
| 87C58
| 32K OTP/EPROM
|
|
|
|
|
| 12,16,20,24i
| D,N,P,S
| L3
| Реверсивный таймер-счетчик
| Серия 8XL52 /54 /58
| 80L52
| 8K ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L1
| VCC от 2.7В до 3.6В
| 87L52
| 8K OTP ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L3
| VCC от 2.7В до 3.6В
| 80L54
| 16K ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L1
| VCC от 2.7В до 3.6В
| 87L54
| 16K OTP ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L3
| VCC от 2.7В до 3.6В
| 80L58
| 32K ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L1
| VCC от 2.7В до 3.6В
| 87L58
| 32K OTP ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L3
| VCC от 2.7В до 3.6В
| Серия 8XC51FA /FB /FC
| 80C51FA
| нет
|
|
|
|
|
| 12,16
| N,P,S
| нет
| Матрица программируемых счетчиков (PCA)
| 83C51FA
| 8K ROM
|
|
|
|
|
| 12,16
| N,P,S
| L1
| Матрица программируемых счетчиков (PCA)
| 87C51FA
| 8K OTP/EPROM*
|
|
|
|
|
| 12,16,20,24i
| D,N,P,S
| L3
| Матрица программируемых счетчиков (PCA)
| 83C51FB
| 16K ROM
|
|
|
|
|
| 12,16,20,24i
| N,P,S
| L1
| Матрица программируемых счетчиков (PCA)
| 87C51FB
| 16K OTP/EPROM*
|
|
|
|
|
| 12,16,20,24i
| D,N,P,S
| L3
| Матрица программируемых счетчиков (PCA)
| 83C51FC
| 32K ROM
|
|
|
|
|
| 12,16,20,24i
| N,P,S
| L1
| Матрица программируемых счетчиков (PCA)
| 87C51FC
| 32K OTP/EPROM*
|
|
|
|
|
| 12,16,20,24i
| D,N,P,S
| L3
| Матрица программируемых счетчиков (PCA)
| Серия 8XL51FA /FB /FC
| 80L51FA
| нет
|
|
|
|
|
| 12,16,20*
| N,S
| нет
| VCC от 2.7В до 3.6В, PCA
| 83L51FA
| 8K ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L1
| VCC от 2.7В до 3.6В, PCA
| 87L51FA
| 8K OTP ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L3
| VCC от 2.7В до 3.6В, PCA
| 83L51FB
| 16K ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L1
| VCC от 2.7В до 3.6В, PCA
| 87L51FB
| 16K OTP ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L3
| VCC от 2.7В до 3.6В, PCA
| 83L51FC
| 32K ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L1
| VCC от 2.7В до 3.6В, PCA
| Обозначения
|
Резидентная
память
программ
| Резидентное ОЗУ
| Таймеры/счетчики
| Послед. порт
| Аналог. входы
| Число линий В/В
| Тактовая частота
| Тип корпуса
| Секретность
|
Ключевые
особенности
| 87L51FC
| 32K OTP ROM
|
|
|
|
|
| 12,16,20*
| N,S
| L3
| VCC от 2.7В до 3.6В, PCA
| Серия 8XC51RA /RB /RC
| 80C51RA
| нет
|
|
|
|
|
| 12,16,20,24i
| N,P
| нет
| Расширенное ОЗУ, PCA, аппаратный WDT
| 83C51RA
| 8K ROM
|
|
|
|
|
| 12,16,20,24i
| N,P
| L1
| Расширенное ОЗУ, PCA, аппаратный WDT
| 87C51RA
| 8K OTP ROM
|
|
|
|
|
| 12,16,20,24i
| N,P
| L3
| Расширенное ОЗУ, PCA, аппаратный WDT
| 83C51RB
| 16K ROM
|
|
|
|
|
| 12,16,20,24i
| N,P
| L1
| Расширенное ОЗУ, PCA, аппаратный WDT
| 87C51RB
| 16K OTP ROM
|
|
|
|
|
| 12,16,20,24i
| N,P
| L3
| Расширенное ОЗУ, PCA, аппаратный WDT
| 83C51RC
| 32K ROM
|
|
|
|
|
| 12,16,20,24i
| N,P
| L1
| Расширенное ОЗУ, PCA, аппаратный WDT
| 87C51RC
| 32K OTP ROM
|
|
|
|
|
| 12,16,20,24i
| N,P
| L3
| Расширенное ОЗУ, PCA, аппаратный WDT
| Серия 8XC51GB
| 80C51GB
| нет
|
|
| 1+SEP
|
|
| 12,16
| N1
| нет
| 8-разрядный АЦП, 2 PCA, 6 портов В/В
| 83C51GB
| 8K ROM
|
|
| 1+SEP
|
|
| 12,16
| N1
| L1
| 8-разрядный АЦП, 2 PCA, 6 портов В/В
| 87C51GB
| 8K OTP ROM
|
|
| 1+SEP
|
|
| 12,16
| N1
| L3
| 8-разрядный АЦП, 2 PCA, 6 портов В/В
| Серия 8XC152 — Коммуникационные контроллеры
| 80C152JA
| нет
|
|
|
|
|
| 12,16
| P1,N1
| нет
| Многопротокольный послед. канал, 2 DMA
| 80C152JB
| нет
|
|
|
|
|
| 12,16
| N1
| нет
| Многопротокольный послед. канал, 2 DMA
| 83C152JA
| 8K ROM
|
|
|
|
|
| 12,16
| P1,N1
| нет
| Многопротокольный послед. канал, 2 DMA
| Серия 8XC51SL — Контроллеры клавиатуры
| 80C51SL-AH
| нет
|
|
|
|
|
|
| KU
| нет
| Управление клавиатурой потребителя
| 81C51SL-AH
| 16K ROM1
|
|
|
|
|
|
| KU
| нет
| Управление клавиатурой потребителя
| 83C51SL-AH
| 16K ROM
|
|
|
|
|
|
| KU
| нет
| Управление клавиатурой потребителя
| 87C51SL-AH
| 16K OTP
|
|
|
|
|
|
| KU
| нет
| Управление клавиатурой потребителя
| 80C51SL-AL
| нет
|
|
|
|
|
|
| SB
| нет
| VCC от 3В до 3.6В, 8-разрядный АЦП
| 81C51SL-AL
| 16K ROM1
|
|
|
|
|
|
| SB
| нет
| VCC от 3В до 3.6В, 8-разрядный АЦП
| 83C51SL-AL
| 16K ROM
|
|
|
|
|
|
| SB
| нет
| VCC от 3В до 3.6В, 8-разрядный АЦП
| 87C51SL-AL
| 16K OTP
|
|
|
|
|
|
| SB
| нет
| VCC от 3В до 3.6В, 8-разрядный АЦП
| MCS251 — Новая архитектура
| 80C251SB
| нет
| 1K
|
|
|
|
| 12,16
| N
| нет
| Расшир. архитектура, PCA, аппаратный WDT
| 83C251SB
| 16K ROM
| 1K
|
|
|
|
| 12,16
| N
| L1
| Расшир. архитектура, PCA, аппаратный WDT
| 87C251SB
| 16K OTP ROM
| 1K
|
|
|
|
| 12,16
| N
| L3
| Расшир. архитектура, PCA, аппаратный WDT
|
Не нашли, что искали? Воспользуйтесь поиском:
|