- •1 Расшифровка и анализ задания
- •1.2 Реакция системы на внешние события
- •2.1.1 Организация архитектуры к1816ве51.
- •2.1.2 Набор регистров мк51
- •2.1.3 Организация памяти мк51
- •2.1.5 Последовательный канал связи
- •2.1.6 Таймеры/счетчики
- •2.1.7 Система прерываний
- •2.1.8 Система команд мк ве51
- •2.2 Функциональное описание ве51
- •2.2.1 Интерфейс расширения
- •2.2.2 Работа таймеров/счетчиков
- •2.2.3 Работа последовательного канала связи
- •2.2.4 Работа с внешней памятью программ и памятью данных
- •2.2.5 Работа с портами
- •3 Разработка подсистемы памяти
- •3.1 Описание микросхемы кр537ру8
- •3.3 Подключение озу и пзу к системной шине
- •4 Разработка подсистем ввода/вывода, прерываний и пдп
- •4.1 Аналогово-цифровой преобразователь
- •4.2 Цифроаналоговый преобразователь
- •4.3 Контроллер прямого доступа к памяти кр580вт57
- •4.4 Многорежимный буферный регистр к589ир12
- •4.5 Контроллер клавиатуры/дисплея кр580вд79
- •4.5.1 Общие сведения о мс кр580вд79
- •4.5.2 Управление ккд с помощью сигналов на внешних выводах
- •4.5.3 Режимы работы клавиатуры
- •4.5.4 Режимы работы дисплея
- •4.5.5 Байт состояния памяти клавиатуры/датчиков
- •5 Разработка программного обеспечения
- •5.2 Разработка блок-схемы управляющей системы
- •6 Реализация устройства на базе микропроцессора к1816ве51
- •6.1 Основные технические данные и характеристики
- •6.1.1 Параметры назначения:
- •6.2 Устройство
- •6.2.1 Общие сведения
- •6.2.2 Принцип действия
2.1.8 Система команд мк ве51
Система насчитывает 111 команд, из них 49 однобайтовых, 45 двухбайтовых и 17 трехбайтовых. Появление трехбайтовых команд связано с расширением объемов CSEG и XSEG, а также вводом прямой адресации в DSEG. Все команды выполняются за один или два машинных цикла (12 тактов ALE) за исключением команд MUL и DIV, которые требуют четыре цикла. Большинство двухбайтовых команд одноцикловые, а все трехбайтовые команды - двухцикловые. Это объясняется тем, что за один машинный цикл в МК ВЕ51 может вводиться до двух байтов программного кода.
Все множество команд ВЕ51 удобно разбить на пять групп: пересылки, логической обработки, арифметической обработки, передачи управления, булевого процессора.
Группа команд пересылки содержит команды MOV (пересылки данных между DSEG и RSEG), MOVC (между CSEG и A), MOVX (между XSEG и А или RSEG), команды обращения к стеку PUSH и POP, а также две команды обмена ХСН и XCHD. Наиболее емкой инструкцией является команда MOV, которая использует четыре способа адресации: регистровый (A, Rn, DPTR), прямой (direct), косвенный (@Ri) и непосредственный (#data, #data 16). Для указания приемника служат три способа адресации (кроме непосредственного), для указания источника все четыре.
Группа команд логических операций содержит три типовые двухместные операции: ANL - логическое И, ORL - логическое ИЛИ и XRL - логическое исключающее ИЛИ. Источником первого операнда и одновременно приемником результата служит либо аккумулятор А, либо прямо адресуемая ячейка памяти. Второй операнд задается одним из четырех основных методов адресации. В состав группы входит также ряд одноместных операций: CLR - очистки, CPL - логического дополнения (инверсия), а также RL, RLC, RR и RRC - операции циклического и расширенного сдвигов вправо и влево. Все операции манипулируют содержимым только аккумулятора А. Сюда же включена операция обмена тетрад в аккумуляторе SWAP, которая может интерпретироваться как циклический сдвиг байта на четыре разряда.
В состав группы команд арифметической обработки входят: операция сложения ADD, сложения с учетом переноса ADDC, вычитания с учетом займа SUBB, увеличения и уменьшения на единицу INC и DEC, десятичная коррекция сложения в 2/10-коде упакованного формата DA, умножение MUL и деление DIU. Операции выполняются над беззнаковыми целыми числами.
В операциях сложения и вычитания первым операндом и приемником результата служит аккумулятор. В качестве второго операнда выступает либо рабочий регистр Rn, п = 0 - 7, выбранного регистрового банка, либо ячейка памяти данных, адресуемая прямо direct или косвенно @Ri, i = 0 - 1, либо непосредственные данные #data. Операции INC и DEC применимы к аккумулятору, одному из рабочих регистров или к ячейке памяти, адресуемой как прямо, так и косвенно. Кроме этого операция увеличения на единицу может быть применена к содержимому регистра указателя DPTR.
В составе группы команд передачи управления находятся команды перехода AJMP, LJMP, SJMP, JMP, условного перехода JZ, JNZ, CJNE, вызова ACALL, LCALL, возврата RET, RETI и модификации с условным переходом DJNZ. Сюда же включена пустая команда NOP.
В командах передачи управления широко применяется относительная адресация, которая поддерживает перемещаемые программные модули.
К типовым условным операциям ВЕ51 относятся также операции JZ и JNZ, JC и JNC. Две последние включены в группу булевых. Однако появилась новая операция «Сравнить и перейти» CJNE. По данной команде операнд сначала сравнивается по правилам вычитания целых чисел с константой и в соответствии с результатом сравнения выставляется флажок CY. Затем в случае несовпадения с константой выполняется ветвление. Сравнивая аккумулятор, регистр или ячейку памяти с последовательностью констант, получаем удобный способ проверки на совпадения, например с целью выявления особых случаев.
Ряд команд, предназначенных для выполнения операций пересылки, проверки условий и логической обработки булевых (одноразрядных) переменных, образует отдельную группу. В качестве одного из операндов они применяют флажок переноса CY, в качестве другого служит прямо адресуемый элемент пространства BSEG. Флажок CY при выполнении операций И и ИЛИ может рассматриваться как булевый аккумулятор.