Содержание
Введение3
1 Функции персонального компьютера.4
2 Аппаратное обеспечение персонального компьютера6
3 Периферийное оборудование9
Заключение13
Литература14
Выдержка из текста работы
Набор команд для задания вариантов представлен четырьмя классами команд, в которых выделяются подклассы, по функциональному признаку. В кодировании варианта класс и подкласс задаются первыми двумя десятичными цифрами. Первая цифра определяет номер класса и может принимать значения 1, 2, 3, 4. Вторая цифра определяет номер подкласса. Третья и четвертая цифры в номере варианта определяют способ адресации одного или двух операндов команды.
Состав классов команд представлен:
— командами пересылки данных -1;
— командами преобразования данных -2;
— командами управления программой -3;
— командами управления процессором -4.
Для команд пересылок вариантами заданий предусмотрены восемь подклассов:
— пересылка из процессора в память данных — 1;
— пересылка из памяти данных в процессор — 2;
— пересылка из процессора в порты внешних устройств -3;
— пересылка из портов в процессор — 4;
— пересылка в стек из процессора -5;
— пересылка в процессор из стека -6;
— обмен данными в процессоре или между процессором и памятью данных -7;
— загрузка объектов адресации команд / данных — 8.
Для команд преобразования данных предусмотрены шестнадцать подклассов:
— арифметическое сложение -0;
— арифметическое сложение с переносом — 1;
— арифметическое вычитание — 2;
— арифметическое вычитание с заёмом -3;
— логическое «И» — 4;
— логическое «ИЛИ» — 5;
— исключающее «ИЛИ» — 6;
— инверсия -7;
— инкремент счетчика — 8;
— декремент счетчика — 9;
— сдвиг циклический влево — А;
— сдвиг циклический влево через бит Сr — В;
— сдвиг циклический вправо — Сr;
— сдвиг циклический вправо через бит Сr — D;
— арифметическое сравнение — E;
— десятичная коррекция после сложения — F.
Для команд управления программой варианта задания предусмотрено девять подклассов:
— безусловный переход по программе — 1;
— условный переход по нулю — 2;
— безусловный вызов подпрограммы -3;
— условный вызов подпрограммы по нулю — 4;
— условный переход по переносу / заёму — 5;
— прерывание аппаратное программы — 6;
— прерывание программы командой — 7;
— возврат из подпрограммы — 8;
— возврат из аппаратного прерывания — 9.
Для команд управления процессором предусмотрены шесть подклассов:
— разрешить прерывание аппаратное — 1;
— запретить аппаратное прерывание — 2;
— останов процессора — 3;
— инкремент программного счетчика — 4;
— включить в активное состояние первый из двух банков регистров общего назначения — 5;
— включить в активное состояние второй из двух банков регистров общего назначения — 6;
В вариантах заданий предусмотрены следующие восемь способов задания адресов данных, номера которых являются третьей, четвертой цифрами обозначения варианта:
— прямой регистровый -1;
— косвенный регистровый -2;
— прямой абсолютный -3;
— индексный со смещением 7 F — 4;
— относительный со смещением 7 F -5;
— непосредственный — 6;
— неявный косвенный через указатель стека — 7;
— неявный регистровый — 8.
Для команд преобразования данных в исполнении процессора и микропрограммы следует предусмотреть установку признаков результата нуль/не нуль, наличие / отсутствие переноса (заёма), знака ().
В командах пересылки и преобразования данных задаются явно или неявно не более двух объектов адресации. В командах управления программой и процессором предусматривается один объект адресации. Анализ сведений о команде по варианту следует выполнять, просматривая вариант слева направо и, если четвертая цифра в обозначении не задана, то исполнитель вправе самостоятельно выбрать способ адресации (если он необходим).
Пример записи и анализа варианта задания:
Вариант 2113
Варианту соответствует команда: преобразование по форме арифметическое сложение с учетом установленного предшествующими командами флага перенос двух операндов. Один из операндов находится в ячейке памяти, косвенно адресуемой регистром, а другой — в ячейке памяти, адресуемой прямым абсолютным способом. Место размещения результата не определено. Регистр флагов должно применить при определении суммы, учитывая состояние бита перенос, и установить новое значение флага переноса, нуля, знака по результатам суммирования. Размещение результата заданием не определено и предоставлено на выбор исполнителю задания.
Функциональные узлы фрагмента должны быть определены до уровня принятых для них микроопераций.
Структура внешних связей процессора с памятью команд и данных предполагает три раздельные шины: адреса, данных, управления.
Структура связей внутри процессора заданием не регламентируется, но в отчете по работе должна быть заявлена.
Форма представления микропрограммы рабочего цикла выполнения команды не регламентируется, но должна определять состояние сигнала микрооперации на каждом шаге микропрограммы. Должно быть объявлено обозначение микрооперации в микропрограмме.
Для исполнения микропрограммы переходов необходимо применить микропрограммный автомат, сведения о котором приведены в п. 2
Варианты заданий формируются руководителем по списку учета исполнителей в группе или на курсе указанием номера класса, подкласса, двух способов задания адреса для первого класса, одного адреса для команд второго и третьего классов (если необходимо, для второго класса способ задания еще одного адреса исполнитель может выбрать самостоятельно), Для четвертого класса способ задания адреса неявный.
1. Пример выполнения задания
1.1 Анализ задания по варианту
Задание по варианту определяет пересылку (1) из стековой области памяти (цифра 6) в один из регистров (третья слева направо цифра 1) процессора, содержимого ячейки памяти, адресуемой неявно, косвенным способом (7).
Неявная адресация к ячейке памяти в стеке предполагает наличие в процессоре специального указателя (указатель стека). Далее будет принято уменьшение содержимого указателя стека (УС) перед записью данных в стек и сохранения установленного значения после записи.
В составе процессора не предусмотрена для заданной команды обработка преобразованием, поэтому АЛУ не требуется.
1.2 Структура фрагмента процессора
Структурная схема процессора изображена на рисунке 1.
Буферы данных и адреса предназначены для разделения внутренних и внешних шин данных и адреса.
Операционное устройство (ОУ) для заданной команды представлено совокупностью регистров промежуточного хранения данных (до восьми, согласно заданию).
Управляющее устройство (УУ) предназначено для выполнения следующих функций:
— генерация управляющих сигналов до извлечения команды из памяти;
— хранение кода команды на время выполнения;
— генерация управляющих сигналов, в зависимости от принятого кода команды;
— адресация команды для извлечения и данных, при обращении за ними при исполнении команды.
В соответствии с функциями ОУ и УУ определяются необходимый набор функциональных узлов процессорного блока (ПБ).
1.3 Функциональный состав ПБ
В качестве буфера команд / данных с целью сокращения числа коммутационных линий целесообразно применить двунаправленный формирователь с третьим состоянием. Функциональный узел буфера команд / данных приведен на рисунке 1. Состояние микроприказа на входе Т определяет направление передачи: при Т=1 передача (transmit) со входов DI/0 на выходе D0/I и наоборот, при Т=0 — передача со входов D0/I на выход DI/0.
Буфер адресов (БА) реализует однонаправленную передачу адреса от процессора к внешним объектам (в частности, к памяти команд и данных). БА не требуется обеспечивать третье состояние на выходе и поэтому достаточно применить усилитель мощности, показаны на рисунке 3.
Операционное устройство для заданного варианта будет реализовано на восьми шестнадцатиразрядных регистрах, один из которых показан на рисунке 4. На регистре предусмотрено выполнять микрооперацию записи (WR), для фиксации данных со входов DI. На выходах D0 при этом устанавливается и сохраняется состояние, соответствующее принятому коду. Предпочтительно входы / выходы регистров объединять на общей внутренней магистрали, к которой входами могут быть подключены и иные устройства. Для этого к регистру, изображенному на рисунке 4, необходимо на выходах D0 придать свойство третьего состояния и предусмотреть дополнительный управляющий вход ОЕ микрооперации «открыть выход». Модифицированный вариант регистра, в котором входы / выходы DI/D0 объединены, приведен на рисунке 5. Активное состояние сигнала на входе ОЕ разблокирует выходы регистра для выдачи содержимого на соединительные магистрали. Регистры с объединенными на магистралях входами / выходами являются универсальными для приема и выдач данных и названы регистрами общего назначения (РОН). Для удовлетворения требования задания в ОУ будут применены восемь РОН, изображенных на рисунке 5.
В состав управляющего устройства (УУ) в соответствии с заявленными функциями, включены:
— микропрограммный автомат (МПА);
— регистр команды (РгК) для приема команды;
— счетчик команд (СчК) со входами активизации микроопераций: параллельная запись (WR), инкремент (+1), сброс в нулевое состояние (R), см. рисунок 6;
— указатель адреса в стеке (SP) с сигнальными входами микроопераций инкремента (+1) и декремента (-1), см. рисунок 7.
Заданием варианта предусмотрена адресация объектов в памяти от двух источников: счетчика (PC) к команде и указателя стека (SP) к данным.
Удобно выходы РС и SP объединить на входе буфера адреса (БА), обозначение которого приведено на рисунке 3. Состав микроопераций для РС определяется составом входов:
WR ? по положительному фронту микроприказа выполняется «запись» данных с линии DI;
(+1) — по положительному фронту содержимое РС увеличивается на единицу;
? потенциальный вход обеспечивает низким уровнем снятие третьего состояния выхода РС;
R — вход сброса (reset) — низкий уровень на входе осуществляет установку РС в нулевое состояние.
Функцию указателя стека SP (stack pointer) выполняет регистр, аналогичный показанному на рисунке 6, в котором вход R заменен на вход (-1) с активным состоянием «положительный фронт» (см. рисунок 7).
Функциональная схема микропрограммного автомата (МПА) приведена на рисунке 8.
Рисунок 8 — Схема микропрограммного автомата
На рисунке 8 приняты следующие сокращённые обозначения:
G — генератор периодической последовательности импульсов
Т — период повторения;
RG — функция запоминания;
P — функция «разрешить» выходные сигналы;
D — данные (DI — входные данные, D0 — выходные);
C — сброс (установка в нулевое состояние D0);
З — запись данных;
Пример: вариант 2910.
В следующем подразделе приведен пример, поясняющий функцио-нирование микропрограммного автомата.
1.4 Входные/выходные сигналы распределителя
Комментарий по функционированию МПА приводится далее для абстрактной временной диаграммы, соответствующей выходным сигналам периодически повторяющихся 8 микрокоманд (микропрограмма) на линиях шины L4′, соответствующих абстрактному варианту задания (число N). Три микрокоманды на этих же линиях полагаются одинаковымми для всех вариантов (общая форма микропрограммы). Индивидуальная форма 8-и микрокоманд на линиях L4′ (Y1Y4) кодируется байтом числа М и представляется микрокомандами, образуемыми по следующему правилу:
Значения младших разрядов тетрад Т1, Т2 соответствуют состояниям сигналов на линиях L4 в позициях 4, 4′ на временной диаграмме. Импульсные последовательности состояний в первых трёх тактах на шине L4 общие для всех вариантов заданий изображены на рисунке 9.
Рисунок 9 — Временная диаграмма сигналов на линиях L4/
Диаграмма на рисунке 9 изображена с момента поступления внешнего разрешения (ВР) на схему распределителя. Позициями 1 — 4 и 1′ — 4′ на рисунке 2 обозначены участки кодирования единичных позиций сигнала в микропрограммах вариантов. Поясняющий пример кодирования задаваемой микропрограммы приводится.
Пример: Пусть варианту задания 000001 соответствует М = F1h, где F — старшая тетрада Т2 и 1 — младшая тетрада Т1. Следовательно, в сдвинутой последовательности на линиях Y2, Y4 позиции 1′ — 4′ представлены единичными состояниями. На линиях Y1, Y3 единичное состояние занимает лишь позиция 4.
Временная диаграмма сигналов на линиях Y1 Y4 для примера приведена на рисунке 10. Заполнение пауз между выводимыми состояниями на рисунке 3 выполнено уровнем Uo.
Рисунок 10 — Временная диаграмма управляющих сигналов примера
— на нечетных линиях Y1, Y3 (см. рис. 2) с паузами, равными 1 такту (период T), выдаются последовательности импульсов, наличие или отсутствие единичных состояний которых на интервале 8Т задается младшей тетрадой Т1 числа М;
— на четных линиях Y2, Y4 со сдвигом вправо на один такт (Т) относительно сигналов линий Y1, Y3 с паузами в 1 такт (Т) выдаются последовательности импульсов, наличие или отсутствие единичных состояний которых на интервале 8Т задается старшей тетрадой Т2 числа М.
Входными сигналами распределителя являются:
— внешнее разрешение (ВР) (этот сигнал единичным активным уровнем через D-триггер обеспечивает сброс в нулевое состояние регистра RG (DD4) и разрешает запись в регистр выходного кода из ПЗУ (DD1) и с выхода переключателя МХ).
— шестиразрядный код номера варианта N определяет индивидуаль-ную часть диаграммы управляющих сигналов, если код будет разрешен сигналом с линии L3′.
1.5 Принцип действия распределителя
До подачи сигнала разрешения ВР импульсы с генератора не пропускаются на вход «З» регистра DD4, а предыдущими действиями выходное состояние регистра обнулено. Переключатель МХ в этом состоянии на линии L1 подключает входы В, все разряды которых находятся в состоянии логического «». Таким образом, на линиях L1, L2 установлен адрес для ПЗУ, равный 000h, а код N не оказывает влияния на начальном этапе. По поступлению внешнего разрешения ВР (активный уровень логической «1») ближайшим переходом импульса с генератора G на выходе D-триггера устанавливается разрешение для ПЗУ, для пропуска импульсов с генератора G на вход «З» регистра, и положительный фронт сигнала с выхода D-триггера (DD2) обеспечивает дублирование начального сброса регистра DD4 в нулевое состояние по выходу. Сигнал сброс «С» и сигнал «З» (для записи в регистр кода из ПЗУ) используются из разных (сдвинутых по фазе на 180) фронтов сигнала генератора. Поэтому запись кода из ПЗУ и с выхода заблокированного переключателя МХ (DD5) будет выполнена после обнуления регистра. Совокупность линий L1 и L2 «несет» физический адрес ячейки памяти, в которой должны быть записаны:
первое состояние кода для линии Y1 — Y4 шины L4 для общей формы временной диаграммы;
на шине L2 должен быть код «заготовки» адреса для следующей ячейки ПЗУ при неизменном коде на линии L1;
на линии L3 должен оставаться уровень блокировки переключателя МХ (DD5). Повторный приход сигнала от генератора на вход «З» регистра DD4 должен обеспечить смену состояния на шине L4 и обеспечить «заготовку» увеличенного на единицу адреса на шине L2 при неизменных состояниях на линии L3 и, соответственно, L1.
После второго импульса на входе «З» регистра DD4 на линии L3 к подаче 3-го импульса должен быть установлен уровень «1», разблокирующий переключатель МХ (DD5), и код 0002 на шине L2. Таким образом, к началу 4-го такта на входах регистра с шин L1, L2 будет установлен код адреса, соответствующий началу фрагмента микропрограммы, соответствующей индивидуальному варианту.
Индивидуальный вариант, например для рассмотренного ранее случая, будет кодироваться по линиям L1, L2 и начальная его область будет по адресу 011101 0002 в ПЗУ. Так как индивидуальная микропрограмма содержит 8 позиций (микрокоманд), то размещаться она будет в 8-и ячейках памяти по адресу 0111011112 включительно. Во время исполнения 8-и тактов на линии L3 должен сохраняться уровень логической «1», который перед 9-м тактом должен стать нулевым для блокировки N, а на линиях шины L2 при этом также должно установиться состояние логического «000» для последующего возврата к повтору микропрограммы.
Из приведенного обсуждения следует, что линии L1, L2, L3 используются для модификации адреса используемых для хранения кодов микрокоманд общей и индивидуальной форм.
Общий размер микропрограммы примера составляет 11 микрокоманд (три общих микрокоманды размещаются в ячейках памяти 000h — 002h, а индивидуальные микрокоманды — по адресам (хххххх0002 — хххххх1112), где хххххх2 — код номера варианта).
При выполнении задания диаграмма и таблица прошивки ПЗУ должна быть приведена для управляющих линий шины L4 и адресных линий L1, L2, L3. Всего число линий и, соответственно, разрядов ПЗУ равно 8 (L2 = 3; L3 = 1; L4 = 4). Для заданного варианта команды число линий L3 не изменится, а число линий в группах L1, L2, L4 изменяется в соответствии с вариантом микропрограммы
1.6 Микропрограмма управления для команды 1617
Исходные предположения:
— в счётчике команд РС установлен адрес слова команды;
— в указателе стека SP находится адрес данных стековой области памяти, подлежащих перемещению из стека в, указанный командой регистр, процессора RGi;
— регистры процессора объединены общей внутренней магистралью (ВМД);
— указатели РС и SP выходами объединены на входе буфера адреса, а входами подключены к ВМД;
— регистр команд РгК принимает слово команды (с кодом операции) с ВМД и выходами подключен ко входам переключателя МХ с МПА.
— блок МПА для управления выдает сигналы активизации микро-операций и микрокоманд, образующих микропрограмму выполнения команды, по которой содержимое ячейки памяти М (SP), адресуемой указателем SP, будет скопировано в объявленный командой варианта 1617 РОН процессора. Для определенности принят регистр РОН Ш.
Анализ возможных решений позволяет определить необходимый состав микроприказов и ввести следующие их обозначения:
DIN — буфер данных, направление «ввод в процессор»;
— буфер данных «разрешить передачу»;
— «разрешить выход» РС на БА;
— «разрешить выход» SP на БА;
РС+1 — инкремент содержимого РС;
SP-1 — декремент (уменьшение на единицу) содержимого SP;
RGKWR — запись параллельная в регистр команды РгК;
RGШWR — запись параллельная в РОНШ;
— чтение содержимого памяти (низкий активный уровень).
При записи микрокоманд перечисление микроприказов в шаге (такте) означает активное состояние микроприказа. Отсутствие микроприказа означает его неактивное состояние.
С учетом сделанных предположений, микропрограмма выполнения заданной команды представляется последовательностью микрокоманд:
1 такт (шаг): BDIN, , ;
2 такт (шаг): BDIN, , , ;
3 такт (шаг): BDIN, , , , RGKWR;
4 такт (шаг): BDIN, ;
5 такт (шаг): BDIN, , SPOE;
6 такт (шаг): BDIN, , SPOE;
7 такт (шаг): BDIN, , , , RGШWR;
8 такт (шаг): BDIN, SP-1, PC+1.
Комментарий к микропрограмме:
Микропрограмма выполняется за восемь тактов (шагов) при однофазном способе формирования микроприказов для исключения «гонок» переключения на магистралях.
Микропрограмма в форме временной диаграммы управляющих сигналов изображена на рисунке 11 на диаграмме учтены активные состояния сигналов на управляющих входах функциональных узлов фрагмента процессора.
Для исключения наложения состояний РС и SP на выходах, переключение РС и SP разнесено на один шаг (4-ый такт). Активные фронты изменения содержимого регистров RGK, RGШ, PC, SP отмечены на диаграмме знаком *. Три такта приведенной диаграммы соответствуют извлечению кода команды и записи его в регистр команд. Последующие пять тактов микропрограммы соответствуют реакции процессора на принятую команду.
Временные диаграммы на служебных линиях L2, L3 на диаграммах не показаны. Так как в первых трёх тактах диаграммы выполняется извлечение и фиксация кода первого слова в регистре команды, то, начиная с четвёртого такта, будет выполнятся отработка полученной команды. На её выполнение, как видно по временной диаграмме пять тактов. Следовательно, в группе линий L2 должно кодироваться для рассматриваемой команды пять переходов по адресам ПЗУ МПА, для чего достаточно трёх линий. Число линий управляющих сигналов L4 для рассматриваемого примера равно числу применённых микроопераций т.е. равно девяти. Полная микропрограмма, включая выборку из памяти первого слова, содержит восемь тринадцатиразрядных микрокоманд, коды которых должны быть размещены в ПЗУ.
2. Требования к составу отчета по работе
На титульном листе (см. приложение А) наряду с наименованием работы и дисциплиной следует указать номер варианта.
В отчете привести формулировку задания по варианту, объяснённое решение, микропрограмма в текстовой форме, в форме временной диаграммы таблицы кодов ПЗУ МПА. (адрес ячейки — код микрокоманды).
Функциональная схема должна содержать соединённые выбранные элементы состава и разметку сигналов на входах объектов управляемых объектов.
Рисунок 11
Контрольная работа №2
Контроллер ввода / вывода дискретных сигналов
Задание: 1 Предложитm вариант функциональной схемы контроллера на основе универсального МПУ с раздельными шинами управления, адреса, данных, соответствующими микропроцессору i8080/85.
2 Подготовить программу управления (по вариантам) контролем состояний двоичных переключателей и двоичными индикаторами с применением портов синхронного ввода / вывода.
1 Требования к контроллеру.
1.1 Контроллер следует оснастить двумя портами:
— портом для ввода слова сообщения с двоичных контактных фиксируемых датчиков размером один байт;
— портом для вывода полученного сообщения на светодиодные индикаторы.
1.2 Порты образовать применением параллельного программируемого адаптера (ППА) модели i8255 (сведения см. в приложении Б).
1.3 Область адресов подключения ППА должна соответствовать коду ХХХХХХ**, в котором разряды A7-A2 являются прямым двоичным кодом номера индивидуального варианта задания (число Х2), а разряды A0, A1 знаком «*» принимают значения с учетом спецификации ППА.
1.4 Выбор адресов портов ввода / вывода в пределах отведенной для них области (разряды A1, A0 могут принимать значения от 002 до 102) ограничивается спецификацией портов в ППА.
1.5 Режим функционирования контроллера — программный (без применения режимов прерывания и прямого доступа).
1.7 Предусмотреть аппаратную начальную установку ППА совместно с процессором контроллера.
2 Требования к программе управления
2.1. Программа должна произвести ввод состояний SA1 — SA8 через порт ПВв и анализировать код с датчиков SA1 — SA7;
— если принятый код совпадет со значением числа Х1, предложенного по варианту задания, то должен быть включен светодиод линии D0 на выходе порта ПВыв и контроллер должен переключиться на отработку паузы длительностью 15 сек.;
— во время этой паузы порт ПВв не должен опрашиваться контроллером, предоставляя пользователю программы возможность установить на переключателях двоичный код второго числа Х2, предложенного вариантом задания;
— по истечении паузы 15 сек. контроллер должен повторить ввод с порта ПВв и сравнить введенный код с кодом числа Х2;
— если принятый код совпадает с числом Х2, то принятый код должен быть выведен на линии порта ПВыв для отображения на светодиодах HL1 — HL8 на время паузы Т длительностью:
Т = 3 • Х2, при Х2 = 1 ч 10;
Т = 2 • Х2, при Х2 = 11 ч 30;
Т = 1 • Х2, при Х2 = 31 ч 60.
— по истечении паузы Т следует на выходе порта ПВыв включить светодиод HL1 линии D7, для сигнализации нормального завершения программы и произвести завершение программы с сохранением состояния HL8;
— если по ходу исполнения программы не совпадает принятый с порта ПВв код с числом Х1 в первом опросе, следует включить светодиод HL7 на линии D6 порта ПВыв и произвести завершение без продолжения работы программы с сохранением состояния индикатора HL7;
— если по ходу исполнения программы принятый с порта ПВв код не совпадает с числом Х2 во втором опросе, следует включить светодиод HL6 на линии D5 порта ПВыв и произвести завершение без продолжения программы с сохранением состояния HL6;
2.2. Код числа Х1 на переключателях SA1 — SA7 устанавливается до запуска программы управления.
3 Требования к составу отчета.
3.1 В отчете представить функциональную схему (рисунок) контроллера с подключением датчиков, индикаторов со схемой начальной установки и селектором выбора ППА.
3.2 Микропроцессорное устройство на основе МП 8080/8085 можно не раскрывать, представляя его на уровне необходимого состава шин и сигнальных линий.
3.3 Принятые решения по подключению датчиков, индикаторов, селектора, схемы сброса пояснить и сопроводить указанием адресов портов и кодов загрузки.
3.4 Отчет можно выполнять как машинным, так и ручным способом на листах формата А5, А4.
3.5 В изложении отчета следует привести:
— алгоритм управления вводом / выводом, формированием пауз с комментарием принятых решений;
— исходный текст программы с входными / выходными параметрами, кратким комментарием к блокам программы, отметить принятые назначения объектов программной модели;
— заключение по объему, времени выполнения программы и логике принятого завершения.
4 Варианты заданий
Варианты заданий отличаются значениями чисел Х1, Х2. Число Х1 следует принять равным номеру группы. Цифра Х2 задается преподавателем по спискам учета исполнителей на курсе.
Контрольная работа №3
Управление вводом / выводом данных на ОМЭВМ
Задание: Выполнить контроллер с исходными данными по контрольной работе №2 заменяя МПУ на однокристальную ОМЭВМ (сведения по i 8051 см. в приложении В), реализуя временные паузы на встроенных таймерах.
3. Устройство управления и синхронизации
Кварцевый резонатор, подключаемый к внешним выводам микроконтроллера, управляет работой внутреннего генератора, который в свою очередь формирует сигналы синхронизации. Устройство управления CРU по сигналам синхронизации формирует машинный цикл фиксированной длительности, равной 12 периодам резонатора. Большинство команд микроконтроллера выполняется за один машинный цикл. Некоторые команды, оперирующие с 2-байтными словами или связанные с обращением к внешней памяти, выполняются за два машинных цикла. Команды деления и умножения требуют четырех машинных циклов. На основе этих особенностей работы устройства управления С учётом этого можно выполнять расчёт времени исполнения прикладных программ.
На схеме микроконтроллера к устройству управления примыкает регистр команд (IR). В его функцию входит хранение кода выполняемой команды.
Внешние входные и выходные сигналы устройства управления и синхронизации:
— PSEN — разрешение программной памяти,
— ALE — выходной сигнал разрешения фиксации адреса,
— PROG — сигнал программирования,
— ЕА — блокировка работы с внутренней памятью,
— VPP — напряжение программирования,
— RST — сигнал общего сброса,
— VPD — вывод резервного питания памяти от внешнего источника,
— XTAL — входы подключения кварцевого резонатора.
4. Организация портов ввода вывода микроконтроллера 8051
микроконтроллер процессор управление синхронизация
4.1 Общие сведения
Количество портов — 4. Наименование портов — P0…P3 они адресуются как регистры специальных функций.
Разрядность портов — 8 с возможностью побитной адресации разрядов.
Обмен информацией осуществляется через порты. Все порты двунаправленные. Имеется возможность часть разрядов каждого порта использовать для ввода данных, а другую часть для вывода.
2.2 Альтернативные функции
Из-за ограниченного количества выводов корпуса ИМС микроконтроллера, большинство выводов используется для выполнения двух функций — в качестве линий портов и для альтернативных функций.
Порты Р0 и Р2 используются при обращении к внешней памяти. При этом на выходах Р0 младший байт адреса внешней памяти мультиплексируется с вводимым / выводимым байтом. Выходы Р2 содержат старший байт адреса внешней памяти, если адрес 16-разрядный. При использовании восьмиразрядного адреса портом Р2 можно пользоваться для ввода-вывода информации обычным образом. При обращении к внешней памяти в Р0 автоматически заносятся 1 во все биты. Информация в Р2 при этом остается неизменной.
Порт РЗ помимо обычного ввода и вывода информации используется для формирования и приема специальных управляющих и информационных сигналов. Альтернативные функции порта могут быть активированы только в том случае, если в соответствующие биты порта РЗ предварительно занесены 1. Неиспользуемые альтернативным образом разряды могут использоваться для побитового ввода или вывода.
Разряды порта Р3 (все или частично) при этом могут выполнять следующие альтернативные функции:
— вход последовательного порта РЗ.0 — RXD;
— выход последовательного порта Р3.1 — TXD;
— внешнее прерывание 0 Р3.2 — INT0*;
— внешнее прерывание 1 РЗ.З — INT1*;
— вход таймера-счетчика 0 Р3.4 — Т0;
— вход таймера-счетчика 1 Р3.5 — Т1;
— строб записи во внешнюю память данных Р3.6 — WR*;
— строб чтения из внешней памяти данных Р3.7 — RD*.
4.2 Устройство портов
Каждый из портов содержит регистр-защелку (SFR Р0 — SFR P3), выходную цепь и входной буфер.
Порт Р0
Порт Р1
Порт Р2
Порт РЗ
На рисунке изображены функциональные схемы регистров-защелок и буферов ввода-вывода всех портов микро-ЭВМ 8051. Каждый из разрядов регистра-защелки SFR является D-триггером, информация в который заносится с внутренней шины данных микроконтроллера по сигналу «Запись в SFR Рх» (х = 0, 1, 2, 3) от центрального процессорного элемента (CPU). С прямого выхода D-триггера информация мажет быть выведена на внутреннюю шину по сигналу «Чтение SFR Рх» от CPU, а с вывода микросхемы («из внешнего мира») по сигналу «Чтение выводов Рх». Одни команды активизируют сигнал «Чтение SFR P1», другие — «Чтение выводов PI».
4.3 Особенности электрических характеристик портов
Выходные каскады триггеров SFR портов Р1-РЗ выполнены на полевых транзисторах с внутренней нагрузкой, в то время как аналогичные каскады триггеров SFR P0 выполнены на транзисторах с открытым стоком. Каждая линия любого из портов может независимо использоваться как для ввода, так и для вывода информации (для линий портов Р0 и Р2 это справедливо тогда, когда они не используются для обращения к внешней памяти).
Для перевода любой линии портов Р1 — РЗ в режим ввода информации необходимо в соответствующий разряд SFR занести 1. При этом выходной полевой транзистор отключается. Внутренний нагрузочный резистор «подтягивает» потенциал вывода к напряжению питания. Внешняя нагрузка может сделать его нулевым. Выходные каскады порта Р0 имеют иную структуру. Нагрузочный полевой транзистор линии порта включен только тогда, когда порт выводит 1 при обращении к внешней памяти. В остальных случаях нагрузочный транзистор отключен. Таким образом, при работе в режиме обычного ввода-вывода информации (как, например, порт Р1) выходные каскады порта Р0 представляют собой ступени на транзисторах с открытым стоком. Запись 1 в соответствующий бит SFR отключает и второй транзистор, что приводит к тому, что вывод БИС оказывается под «плавающим» потенциалом. Это позволяет использовать линии порта Р0, как выводы с высокоимпедансным состоянием. Поскольку выходные каскады портов Р1-РЗ имеют внутреннюю нагрузку, при переводе в режим ввода информации они становятся источниками тока для микросхемы или транзистора, нагруженных на данный.
5. Таймеры / счетчики микроконтроллеров семейства 8051
В базовых моделях семейства имеются два программируемых 16-битных таймера / счетчика (Т/СО и Т/С1), которые могут быть использованы как в качестве таймеров, так и в качестве счетчиков внешних событий. В первом случае содержимое соответствующего таймера / счетчика (далее для краткости Т/С) инкрементируется в каждом машинном цикле, т.е. через каждые 12 периодов колебаний кварцевого резонатора, во втором оно инкрементируется под воздействием перехода из 1 в 0 внешнего входного сигнала, подаваемого на соответствующий (Т0, Т1) вывод микро-ЭВМ 8051. Так как на распознавание периода требуются два машинных цикла, максимальная частота подсчета входных сигналов равна 1/24 частоты резонатора. На длительность периода входных сигналов ограничений сверху нет. Для гарантированного прочтения входной сигнал должен удерживать значение 1, как минимум, в течение одного машинного цикла микро-ЭВМ.
Для управления режимами работы Т/С и для организации их взаимодействия с системой прерываний используются два регистра специальных функций (TMOD и TCON), описание которых приведено ниже.
Регистр режима работы таймера / счетчика TMOD
Символ |
Позиция |
Имя и назначение |
|||
GATE |
TMOD.7 для Т/С1 и TMOD.3 для Т/СО |
Управление блокировкой. Если бит установлен, то таймер / счетчик «х» разрешен до тех пор, пока на входе «INTx» высокий уровень и бит управления «TRx» установлен. Если бит сброшен, то Т/С разрешается, как только бит управления TRx» устанавливается |
|||
С/Т |
TMOD.6 для Т/С1 и TMOD.2 для Т/СО |
Бит выбора режима таймера или счетчика событий. Если бит сброшен, то работает таймер от внутреннего источника сигналов синхронизации. Если; установлен, то работает счетчик от внешних сигналов на входе «Тх» |
|||
М1 |
TMOD.5 для Т/С1 и TMOD.1 для Т/СО |
Режим работы |
|||
М1 |
М0 |
||||
0 |
0 |
Таймер ВЕ48. «TLx» работает как 5-битный предделитель |
|||
М0 |
TMOD.4 для Т/С1 и TMOD.0 для Т/СО |
0 |
1 |
16 битный таймер / счетчик. «ТНх» и «TLx» включен последовательно |
|
1 |
0 |
8-битный авто перезагружаемый таймер / счетчик. «ТНх» хранит значение, которое должно быть перезагружено в «TLx» каждый раз по переполнению |
|||
1 |
1 |
Таймер/счетчик 1 останавливается. Таймер/счетчик 0: TLO работает как 8-битный таймер / счетчик, и его режим определяется управляющими битами таймера 0. ТНО работает только как 8 битный таймер, и его режим определяется управляющими битами таймера 1 |
Регистр управления / статуса таймера TCON
Символ |
Позиция |
Имя и назначение |
|
TF1 |
TCON.7 |
Флаг переполнения таймера 1. Устанавливается аппаратно при переполнении таймера / счетчика. Сбрасывается при обслуживании прерывания аппаратно |
|
TR1 |
TCON.6 |
Бит управления таймера 1. Устанавливается, / сбрасывается программой для пуска / останова |
|
TF0 |
TCON.5 |
Флаг переполнения таймера 0. Устанавливается аппаратно. Сбрасывается при обслуживании прерывания. |
|
TR0 |
TCON.4 |
Бит управления таймера 0. Устанавливается / сбрасывается программой для пуска / останова таймера / счетчика |
|
IE1 |
TCON.3 |
3 Флаг фронта прерывания 1. Устанавливается аппаратно, когда детектируется срез внешнего сигнала INT1. Сбрасывается при обслуживании прерывания |
|
IT1 |
TCON.2 |
2 Бит управления типом прерывания 1. Устанавливается / сбрасывается программно для установки спецификации запроса INT1 (срез / низкий уровень) |
|
IE0 |
TCON.1 |
Флаг фронта прерывания 0. Устанавливается по срезу сигнала INTO. Сбрасывается при обслуживании прерывания |
|
IТ0 |
TCON.0 |
Бит управления типом прерывания 0. Устанавливается / сбрасывается программно для установки спецификации запроса INTO (срез / низкий уровень). |
Режимы работы таймеров-счетчиков.
Как следует из описания управляющих бит TMOD, для обоих Т/С режимы работы 0, 1 и 2 одинаковы. Режимы 3 для Т/СО и Т/С1 различны. Работа Т/С в каждом из режимов
определяется схемной организацией таймеров, показанной на рисунке 3.7:
— в режимах 0 и 1 — рис. 3.7 а;
— Т/СО и Т/С1 в режиме 2 — 3.7 б;
— Т/СО в режиме 3 — 3.7 в.
Логика работы Т/СО и Т/С1 в режимах 0, 1, 2, З
Режим 0. Перевод таймеров Т / Сх в режим 0 делает их похожими на таймер ОЭВМ КМ1816ВЕ48 (восьми битный счетчик), к входу которого подключен пятибитный предделитель частоты на 32. Работу Т/С в режиме 0 на примере Т/С1 иллюстрирует рис а. В этом режиме таймерный регистр имеет разрядность 13 бит. При переходе из состояния «все единицы» в состояние «все нули» устанавливается флаг прерывания от таймера TF 1. Входной синхросигнал таймера 1 разрешен (поступает на вход Т/С1), когда управляющий бит TR1 установлен в 1 либо управляющий бит GATE (блокировка) равен 0, либо на внешний вывод запроса прерывания INT1 поступает уровень 1. Отметим попутно, что установка бита GATE в 1 позволяет использовать таймер для измерения длительности импульсного сигнала подаваемого на вход запроса прерывания.
Режим 1. Работа любого Т/С в этом режиме такая же, как и в режиме 0, за исключением того, что таймерный регистр имеет разрядность 16 бит.
Режим 2. В этом режиме работа организована таким образом, что переполнение (переход из состояния «все единицы» в состояние, «все нули») восьмибитного счетчика TL1 приводит не только к установке флага TF1 (см. рис. б), но и автоматически перезагружает в TL1 содержимое старшего байта (ТН 1) таймерного регистра, которое предварительно было задано программным путем. Перегрузка оставляет содержимое ТН1 неизменным. В режиме 2 Т/СО и Т/С1 также работают совершенно одинаково.
Режим 3. В режиме 3 Т/СО и Т/С1 работают по-разному. Т/С1 сохраняет неизменным свое текущее содержимое. Эффект такой же как и при сбросе управляющего бита TR1 в 0. Работу Т/СО иллюстрирует рис. 7. В режиме 3 TL0 и ТНО функционируют как два независимых восьмибитных счетчика. Работу TL0 определяют управляющие биты Т/СО (С/Т, GATE TR0), входной сигнал INTO и флаг переполнения TF0. Работу ТНО, который может выполнять только функции таймера (подсчёт машинных циклов микро-ЭВМ), определяет управляющий бит TR1. При этом ТНО использует флаг переполнения TF1. Режим 3 используется в тех случаях, когда требуется наличие дополнительного восьми битного таймера или счетчика событий. Можно считать, что в этом режиме микро-ЭВМ 8051 имеет в своем составе три таймера / счетчика. В случае же, если Т/СО используется в режиме 3, Т/С1 может-быть или выключен, или переведен в режим 0, 1 или 2, или может быть использован последовательным портом в качестве генератора частоты передачи.
В модернизированных моделях микроконтроллеров семейства MCS-51 может иметься третий таймер счетчик Т/С2 и (или) блок программных счетчиков РСА, которые тоже могут быть использованы для отсчета временных интервалов.
4 Последовательный порт микроконтроллера 8051.
Через универсальный асинхронный приемопередатчик UART (Universal Asynchronous Receiver-Transmitter) осуществляются прием и передача информации, представленной последовательным кодом (младшими битами вперед), в полном дуплексном режиме обмена. В состав приемопередатчика, называемого часто последовательным портом входят принимающий и передающий сдвигающие регистры, а также специальный буферный регистр (SBUF) приемопередатчика.
Работой последовательного порта управляют два служебных регистра — Регистр управления / статуса приемопередатчика SCON и бит SMOD регистра управления мощностью PCON. Запись байта в буфер приводит к автоматической переписи байта в сдвигающий регистр передатчика и инициирует начало передачи байта. Наличие буферного регистра приемника позволяет совмещать операцию чтения ранее принятого байта с приемом очередного. Но если к моменту окончания приема байта предыдущий не был считан из SBUF, то он будет потерян.
Последовательный порт 8051 может работать в четырех различных режимах.
Режим 0. Информация и передается, и принимается через вывод входа приемника (RXLTXi). Принимаются или передается 8 бит данных. Через вывод выхода передатчика (TXD; выдаются импульсы сдвига, которые сопровождают каждый бит. Частота передачи бита информации равна 1/12 частоты кварцевого резонатора
Режим 1. В этом режиме передаются через вывод TXD или принимаются через RXD 10 бит информации: старт-бит (0), 8 бит данных и стоп-бит (1) Тпри приеме информации в бит RB8 регистра управления / статуса приемопередатчика SCON заносятся стоп-бит Скорость приема / передачи — величина переменная и задается таймером.
Режим 2. В этом режиме через вывод TXD передаются или через RXD принимаются 11 бит информации: старт-бит, 8 бит данных, программируемый девятый бит и стоп-бит. При передаче девятый бит данных может принимать значение 0 или 1 или, например, для повышения достоверности передачи путем контроля по четности в него может быть помещено значение признака паритета из слова состояния программы (PSW.0). При приеме девятый бит данных помещается в бит RB8 SCON, а стоп-бит, в отличие от режима 1, теряется. Частота приема / передачи выбирается программой и может быть равна либо 1/32, либо 1/64 частоты резонатора в зависимости от управляющего бита SMOD.
Режим 3. совпадает с режимом 2 во всех деталях, за исключением частоты приема / передачи, которая является величиной переменной и задается таймером.
Во всех случаях передача инициализируется инструкцией, в которой данные перемещаются в SBUF. Прием инициализируется при обнаружении перепада из 1 в 0 на входе приемника. При этом в режиме 0 этот переход должен сопровождаться выполнением условий R1 = 0 и REN= 1 (см. табл. 8), а для остальных режимов — REN = 1.
4.1 Регистр управления / статуса приемопередатчика SCON.
Управление режимом работы приемопередатчика осуществляется через специальный регистр с символическим именем SCON. Этот регистр содержит не только управляющие биты, определяющие режим работы последовательного порта, но и девятый бит принимаемых или передаваемых данных (RB8 и ТВ8) и биты прерывания приемопередатчика (R1 и Т1).
Прикладная программа путем загрузки в старшие биты регистра SCON двухбитного кода определяет режим работы приемопередатчика. Во всех четырех режимах работы передача инициализируется любой командой, в которой буферный регистр SBUF указан как получатель байта. Как уже отмечалось, прием в режиме 0 осуществляется при условии, что R1 = 0 и REN = 1, в остальных режимах — при условии, что REN.
В бите ТВ8 программно устанавливается значение девятого бита данных, который будет передан 8# режиме 2 или 3. В бите RB8 в этих режимах фиксируется девятый принимаемый бит данных. В режиме 1 в бит RB8 заносится стоп-бит. В режиме 0 бит RB8 не используется.
Флаг прерывания передатчика TI устанавливается аппаратно в конце периода передачи стоп-бита во всех режимах. Соответствующая подпрограмма обслуживания прерывания должна сбрасывать бит Tl
Флаг прерывания приемника RI устанавливается аппаратно в конце периода приема восьмого бита данных в режиме 0 и в середине периода приема стоп-бита в режимах 1, 2 и 3. Подпрограмма обслуживания прерывания должна сбрасывать бит RI.
Функциональное назначение бит регистра управления / статуса приемопередатчика SCON
Символ |
Позиция |
Имя и назначение |
|||||
SM0 SM1 |
SCON.7 SCON.6 |
Биты управления режимом работы приемопередатчика. Устанавливаются/сбрасываются программно (см. примечание 1) |
|||||
SM0 |
SM1 |
Режим работы приемопередатчика |
|||||
0 |
0 |
Сдвигающий регистр расширения ввода / вывода |
|||||
1 |
1 |
9 битовый приемопередатчик, изменяемая скорость передачи |
|||||
SM2 |
SCON.5 |
Бит управления режимом приемопередатчика. Устанавливается программно для запрета приема сообщения, в котором девятый бит имеет значение 0 |
|||||
REN |
SCON.4 |
Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения / запрета приема последовательных данных |
|||||
ТВ8 |
SCON. 3 |
Передача бита 8. Устанавливается/сбрасывается программно для задания девятого передаваемого бита в режиме 9-битового передатчика |
|||||
RB8 |
SCON.2 |
Прием бита 8. Устанавливается/сбрасывается аппаратно для фиксации девятого принимаемого бита в режиме 9-битового приемника |
|||||
TI |
SCON. 1 |
Флаг прерывания передатчика. Устанавливается аппаратно при окончании передачи байта. Сбрасывается программно после обслуживания прерывания |
|||||
RI |
SCON.O |
Флаг прерывания приемника. Устанавливается аппаратно при приеме байта. Сбрасывается программно после обслуживания прерывания |
Скорость приема / передачи информации через последовательный порт
Скорость приема / передачи, т.е. частота работы приемопередатчика в различных режимах, определяется различными способами.
В режиме 0 частота передачи зависит только от резонансной частоты кварцевого резонатора f рез:
f=fрез/12.
За машинный цикл последовательный порт передает один бит информации. В режимах 1, 2 и 3 скорость приема / передачи зависит от значения управляющего бита SMOD в регистре специальных функций PCON.
Регистр управления мощностью PCON
Символ |
Позиция |
Наименование и функция |
|
SMOD |
PCON.7 |
Удвоенная скорость передачи. Если бит установлен в 1, то скорость передачи вдвое больше, чем при SMOD = 0. По сбросу SMOD = 0. |
|
PCON.6 |
Не используется |
||
PCON.5 |
Не используется |
||
PCON.4 |
Не используется |
||
GF1 GF0 |
PCON.3 PCON.2 |
Флаги, специфицируемые пользователем (флаги общего назначения) |
|
PD |
PCON.1 |
Бит пониженной мощности. При установке бита в 1 микро-ЭВМ переходит в режим пониженной потребляемой мощности |
|
IDL |
PCON.0 |
Бит холостого хода. Если бит установлен в 1, то микро-ЭВМ переходит в режим холостого хода |
Примечание:
При одновременной записи 1 в PD и IDL бит PD имеет преимущество. Сброс содержимого PCON выполняется путем загрузки в него кода 0XXX0000. В режиме 2 частота передачи определяется выражением
f=2SMODfрез/64.
и при SMOD = 0 частота передачи равна 1/64 частоты fрез, а при SMOD = 1 — 1/32 частоты fрез.
В режимах 1 и 3 в формировании частоты передачи, кроме управляющего бита SMOD, принимает участие таймер 1. Прерывание от таймера 1 в этом случае должно быть заблокировано. Таймер может работать как в режиме таймера, так и в режиме счетчика. Номер режима (0, 1, 2) роли не играет. Наиболее типично использование его в режиме таймера с автоперезагрузкой (старшая тетрада TMOD = 0010В).
Настройка таймера 1 для управления частотой работы приемопередатчика
Частота приема / передачи (BAUD RATE) |
Частота резонатора МГц |
Таймер/счетчик 1 |
||||
SMOD |
ел |
Режим (MODE) |
Перезагружаемое число |
|||
Режим О, макс: 1 МГц |
12 |
X |
X |
X |
X |
|
Режим 2, макс: 375 Кгц |
12 |
1 |
X |
X |
X |
|
Режим 1, 3: 62,2 Кгц |
12 |
1 |
0 |
2 |
0FFh |
|
19,2 Кгц |
11,059 |
1 |
0 |
2 |
0FDh |
|
9,6 Кгц |
11,059 |
0 |
0 |
2 |
0FDh |
|
4,8 Кгц |
11,059 |
0 |
0 |
2 |
0FAh |
|
2,4 Кгц |
11,059 |
0 |
0 |
2 |
0F4h |
|
1,2 Кгц |
11,059 |
0 |
0 |
2 |
0F4h |
|
137,5 Гц |
11,059 |
0 |
0 |
2 |
1Dh |
|
110 Гц |
6 |
0 |
0 |
2 |
72h |
|
110 Гц |
12 |
0 |
0 |
1 |
0FEEBh |
Скорости приема и передачи могут различаться. Предельно низких частот приема передачи можно достичь при использовании таймера в режиме 1 (16-битный таймер) и разрешении прерываний от таймера (старший полубайт TMOD = 0001В). Перезагрузка 16-битного таймера должна осуществляться программным путем.
6. Система прерываний микроконтроллера 8051
Упрощенная схема прерываний микро-ЭВМ 8051 показана на рисунке. Адреса по векторам 0003Н, 0013Н соответствуют внешним прерываниям. Внешние прерывания INT0 и INT1 могут быть вызваны либо уровнем, либо переходом сигнала из 1 в 0 на входах 8051 в зависимости от значений управляющих бит IT0 и IT1 в регистре TCON. От внешних прерываний устанавливаются флаги IE0 и IE1 в регистре TCON, которые инициируют вызов соответствующей программы обслуживания прерывания. Сброс этих флагов выполняется аппаратно только в том случае, если прерывание было вызвано по переходу (срезу) сигнала. Если же прерывание вызвано уровнем входного сигнала, то сбросом флага I должна управлять соответствующая подпрограмма обслуживания прерывания путем воздействия на источник прерывания с целью снятия им запроса. Флаги запросов прерывания от таймеров TF0 и TF1 сбрасываются автоматически при передаче управления подпрограмме обслуживания. Флаги запросов прерывания RI и TI устанавливаются блоком управления приемопередатчика аппаратно, но сбрасываться должны программным путем.
Распределение векторных областей прерывания ОМЭВМ
Прерывания могут быть вызваны или отменены программой, так как все названные флаги программно доступны и могут быть установлены/ сброшены программой с тем же результатом, как если бы они были установлены / сброшены аппаратными средствами.
В блоке регистров специальных функций есть два регистра, предназначенных для управления режимом прерываний IE и уровнями приоритета IP. Возможность программной установки / сброса любого управляющего бита в этих двух регистрах делает систему прерываний 8051 исключительно гибкой.
В более сложных модификациях микроконтроллеров семейства MCS-51 количество периферийных устройств увеличено, что приводит к необходимости использовать один вектор прерывания для нескольких устройств (разделение подпрограмм обслуживания прерываний в этом случае необходимо реализовать программно), либо добавить еще два регистра — режима (маски) и приоритета прерываний.
Регистр масок прерывания (IE).
Символ |
Позиция |
Имя и назначение |
|
ЕА |
IE.7 |
Снятие блокировки прерывания. Сбрасывается, программно для запрета всех прерываний независимо от состояний IE.4 — IE.0 |
|
IE.6 |
Не используется |
||
IE.5 |
Не используется |
||
ES |
IE.4 |
Бит разрешения прерывания, от приемопередатчика Установка/сброс программой для разрешения / запрета прерываний от флагов TI или RI. |
|
ЕТ1 |
IE.3 |
Бит разрешения прерывания от таймера. Установка/сброс программой для разрешения / запрета прерываний от таймера 1 |
|
ЕХ1 |
IE.2 |
Бит разрешения внешнего прерывания 1. Установка/сброс программой для разрешения / запрета прерывания 1 |
|
ЕТО |
IE.1 |
Бит разрешения прерывания от таймера 0. Установка/сброс программой для разрешения / запрета прерываний от таймера 0. |
|
ЕХО |
IE.0 |
эит разрешения внешнего прерывания 0. Установка/сброс программой для разрешения / запрета прерывания 0 |
|
Регистр приоритетов прерываний (IP) |
|||
Символ |
Позиция |
Имя и назначение |
|
— |
IP.7-IP.5 |
Не используется |
|
PS |
IP.4 |
Бит приоритета приемопередатчика. Установка/сброс программой для присваивания прерыванию от приемопередатчика высшего / низшего приоритета |
|
РТ1 |
IP.3 |
Бит приоритета таймера 1. Установка/сброс программой для присваивания прерыванию от гаймера 1 высшего / низшего приоритета |
|
РХ1 |
IP.2 |
Бит приоритета внешнего прерывания 1. Установка/сброс программой для присваивания высшего / низшего приоритета внешнему прерыванию INT1 |
|
РТ0 |
IP.1 |
Бит приоритета таймера 0. Установка/сброс программой для присваивания прерыванию от таймера 0 высшего / низшего приоритета |
|
РХ0 |
IP.0 |
Бит приоритета внешнего прерывания 0. Установка/сброс программой для присваивания высшего / низшего приоритета внешнему прерыванию INTO |
Выполнение подпрограммы прерывания
Система прерываний формирует аппаратный вызов (LCALL) соответствующей подпрограммы обслуживания, если она не заблокирована одним из следующих условий:
— в данный момент обслуживается запрос прерывания равного или высокого уровня приоритета;
— текущий машинный цикл — не последний в цикле выполняемой команды;
— выполняется команда RETI или любая команда, связанная с обращением к регистрам IE или IP
Если флаг прерывания был установлен, но по одному из указанных выше условий не получил обслуживания и к моменту окончания блокировки уже сброшен, то запрос прерывания теряется и нигде не запоминается. По аппаратно сформированному коду LCALL система прерывания помещает в стек только содержимое счетчика команд (PC) и загружает в него адрес вектора соответствующей подпрограммы обслуживания. По адресу вектора должна быть расположена команда безусловной передачи управления (JMP) к начальному адресу подпрограммы обслуживания прерывания. В случае необходимости она должна начинаться командами записи в стек (PUSH) слова состояния программы (PSW), аккумулятора, расширителя, указателя данных и т.д. и должна заканчиваться командами восстановления из стека (POP). Подпрограммы обслуживания прерывания должны завершаться командой RETI, по которой в счетчик команд перезагружается из стека сохраненный адрес возврата в основную программу. Команда RET также возвращает управление прерванной основной программе, но при этом не снимут блокировку прерываний, что приводит к необходимости иметь программный механизм анализа и окончания процедуры обслуживания данного прерывания.
7. Работа с внешней памятью микроконтроллера 8051
Обращения к внешней памяти подразделяются на обращения к внешней памяти программ и обращения к внешней памяти данных. В первом случае для формирования сигнала, активирующего ПЗУ с программой, используется сигнал PSEN, во втором — сигналы RD и WR, активизирующие ОЗУ с данными.
Если используется 16-битовый адрес, старшие восемь бит выводятся через порт Р2, где они сохраняются в течение всего цикла обращения к внешней памяти. Выходные каскады порта Р2 имеют внутреннюю нагрузку, несколько отличающуюся от Р1 и РЗ, благодаря чему в SFR P2 при выводе адресной информации вовсе не обязательно защелкивать все единицы. Добавим также, что при выводе адресной информации информация из SFR P2, хотя и не присутствует на выводах микроЭВМ, но и не теряется, восстанавливаясь на них после окончания обращений к внешней памяти (если в процессе этих обращений SFR P2 не был модифицирован).
Если при обращении к внешней памяти данных используется восьми битный адрес, то на выводах порта остается та же информация, которая там была до начала обращения к внешней памяти. Это позволяет организовать постраничную адресацию внешней памяти данных.
На выводах порта Р0 младший байт адреса мультиплексируется с данными. Сигналы адреса/ данных задействуют оба полевых транзистора выходного каскада порта Р0. Таким образом, в этом случае выводы Р0 уже не являются выводами с открытым стоком и не требуют внешних нагрузочных элементов.
Сигнал ALE используется для фиксации младшего байта адреса во внешнем регистре-защелке. Адресная информация достоверна в момент окончания сигнала ALE.
Выводимый в цикле записи байт заносится в Р0 непосредственно перед активацией сигнала WR и остается неизменным до окончания этого сигнала. В цикле чтения данные на выводах Р0 для достоверного считывания должны быть установившимися к моменту окончания сигнала RD.
Во время обращения к внешней памяти CPU записывает 0FFH в SFR Р0, уничтожая, таким образом, хранимую там информацию. Таким образом, использовать для записи порт Р0 при работе с внешней памятью надо с известной долей осторожности.
Обращение к внешней памяти программ возможно в двух случаях:
— когда сигнал ЕА активен, т.е. имеет нулевой уровень;
— когда программный счетчик PC содержит число больше 0FFH.
Следовательно, при использовании микро-ЭВМ, не имеющей встроенного ПЗУ или не использующей его, на входе ЕА должен присутствовать сигнал с нулевым уровнем.
Когда CPU работает с внешней памятью программ, все линии порта Р2 используются для вывода старшего байта адреса и не могут быть использованы для обычного ввода\вывода информации. При этом, как отмечалось выше, в SFR P2 может быть занесена любая информация — адресная информация, выводимая через Р2, не зависит от состояния его SFR.
8. Режимы микроконтроллера с пониженным энергопотреблением
Во многих вариантах применения микроЭВМ энергопотребление является одним из основных параметров. В этих случаях целесообразно использовать КМОП версии микроЭВМ. В них предусмотрены дополнительные возможности снижения энергопотребления, отсутствующие в стандартных n-МОП изделиях. Выпускались и n-МОП версии микро-ЭВМ, имевшие режимы работы с пониженным энергопотреблением. В настоящее время их выпуск почти повсеместно прекращен. Однако время от времени они все же будут попадать в руки радиолюбителей, поэтому трудно гарантировать наличие или отсутствие этих режимов в тех или иных конкретных n-МОП изделиях.
МикроЭВМ имеют два режима с пониженным потреблением тока:
— режим холостого хода (XX);
— режим выключенного напряжения питания (ВНП).
Режим XX характеризуется пониженным энергопотреблением в сравнении с обычным рабочим режимом микро-ЭВМ. Второй режим фирмой назван «Power Down Mode», но в этом режиме можно снизить энергопотребление МП отключением основного источника питания по выводу Ucc (для сохранения содержимого внутреннего ОЗУ в этом случае нужно подключить резервный источник питания на вывод RST).
В режиме XX (IDL = 1) тактовые сигналы от работающего генератора поступают на систему прерываний, последовательный порт и таймеры / счетчики, но синхронизация устройства управления МП отключается. Регистры встроенной памяти данных сохраняют содержимое, на выводах всех портов удерживаются логические состояния, которые были на них в момент перехода в режим XX.
В режиме ВНП (PD = 1) генератор выключается и прекращается тактирование и последовательного порта, таймеров/ счетчиков, системы прерываний. Как и в режиме XX, состояние регистров, резидентного ОЗУ и выводов портов остается неизменным.
Режимы XX и ВНП активизируются при установке соответствующих битов в SFR PCON (регистре управления мощностью, адрес 87h). При одновременно установленных в состояние 1 битах IDL и PD регистра PCON, состояние PD имеет преимущество и МП переходит в режим ВНП. После сброса автоматически в регистре PCON устанавливается состояние 0XXX0000.
В n-МОП версиях микроЭВМ регистр PCON содержит, как правило, только SMOD. Остальные четыре бита присутствуют только в КМОП устройствах. Пользовательские программы не должны заносить состояние «1» в незанятые биты (PCON4 — PCON6), так как они могут использоваться в последующих модификациях микроЭВМ. Это ограничение справедливо для всех не занятых регистрами областей регистровой памяти данных (включая области регистров SFR). Для достижения совместимости уже разработанного программного обеспечения с новыми изделиями дополнительные возможности последних будут включаться установкой в 1 битов в соответствующих регистрах. Пользовательские программы, устанавливающие в 1 неиспользуемые биты, будет нормально работать на микро-ЭВМ, имеющихся в наличии сегодня, но вовсе не обязательно будет работать на новых микро-ЭВМ, несмотря на их полную программную совместимость с семейством 8051.
9. Режим XX
В режим холостого хода (ХХ) МЭВМ переводится любой командой, устанавливающей в 1 бит PCON.0. В режиме XX выполнение программы приостанавливается, так как на CPU перестает поступать сигнал тактового генератора. Однако содержимое внутреннего ОЗУ и регистров специальных функций остается неизменным, выводы портов удерживают значения, которые были на них до перехода в режим XX, на таймеры / счетчики, приемопередатчик и на систему прерываний продолжают поступать тактовые сигналы. На выводах ALE и PSEN устанавливаются сигналы единичного уровня.
Состояние выводов портов зависит от типа ОЗУ, с которым микро-ЭВМ обменивалась информацией перед тем как перейти в режим XX. При работе с внутренним ОЗУ на выводах портов присутствуют данные из соответствующих SFR (естественно, если порт в режиме вывода информации). При работе с внешним ОЗУ выводы порта 0 переходят в высокоимпедансное состояние, а на выводах порта 2. сохраняется адресная информация. На выводах портов 1 и 3 присутствуют данные из SFR портов.
Вывести микро-ЭВМ из режима XX можно двумя способами. Так, вызов любого из прерываний приведет к аппаратному стиранию бита PCON.0, прекращающему XX. Прерывание будет обслужено, и очередной после RETI выполняемой командой будет та, которая следует за командой, приведшей к переходу микро-ЭВМ в режим XX. флаги GF0 и GF1 могут использоваться для индикации того, произошло ли прерывание во время нормальной работы или во время XX. Например, команда, запускающая этот режим, может также устанавливать один или оба флага. Когда режим XX прекращен прерыванием, сервисная программа прерывания может проверять состояние флагов.
Другой способ прекращения XX — с помощью аппаратного сброса. Поскольку синхрогенератор продолжает работать, аппаратный сброс должен поддерживаться в активном состоянии, только в течение двух машинных циклов (24 периодов колебаний).
Сигнал сброса стирает бит PCON.0. В этот момент CPU возобновляет выполнение программы с самого начала. Как показано на рис. 14, перед началом отработки алгоритма внутреннего запуска могут иметь место два или три машинных цикла выполнения программы. Встроенное в микросхему устройство в это время препятствует доступу к внутреннему ОЗУ, но доступ к выводам порта не ограничен. Чтобы исключить возможность появления неопределенных выходных сигналов на выводах порта, команда, следующая за вызывающей XX, не должна быть командой, записывающей информацию в SFR порта или во внешнее ОЗУ данных. Напомним, что после аппаратного сброса содержимое SFR переопределяется.
9 Режим ВНП.
Команда, устанавливающая в 1 бит PCON.1, переводит микро-ЭВМ в режим ВНП. В нем генератор микро-ЭВМ, как отмечалось, останавливается, прекращает функционирование не только CPU, но и таймеры / счетчики, приемопередатчик, система прерываний. При наличии основного или резервного источника питающего напряжения встроенное ОЗУ и регистры SFR сохраняют свое содержимое. Состояние портов не отличается от состояния при переходе в режим XX (см. выше). Однако в отличие от режима XX на выводах ALE и PSEN устанавливаются сигналы с нулевым уровнем.
Единственный способ выйти из этого режима — аппаратный сброс. Он переопределяет содержимое всех SFR, но не меняет содержимого встроенного ОЗУ.
В рассматриваемом режиме напряжение питания Ucc может снижаться вплоть до 2 В. Следует, однако, позаботиться, чтобы снижалось оно не раньше перехода микроэвм в режиме ВНП и восстанавливалось до прежнего значения прежде, чем она выйдет из этого режима. Сигнал сброса, возвращающий микро-ЭВМ в обычный режим, не должен подаваться раньше, чем Ucc достигнет своего рабочего значения, и должен поддерживаться в активном состоянии достаточно долго, чтобы генератор успел запуститься и его колебания стабилизировались (обычно — не менее 10 мс).
10 Система команд микроконтроллера семейства 8051.
10.1 Общая характеристика.
Микро-ЭВМ рассматриваемого семейства являются типичными микропроцессорными устройствами с архитектурой SISC — со стандартным набором команд. Поэтому их система команд довольно обширна и включает в себя 111 основных команд. Их длина — один, два или три байта, причем большинство из них (94%) — одно- или двухбайтные. Все команды выполняются за один или два машинных цикла (соответственно 1 или 2 мкс при тактовой частоте 12 МГц), исключение — команды умножения и деления, которые выполняются за четыре машинных цикла (4 мкс). Микро-ЭВМ семейства 8051 используют прямую, непосредственную, косвенную и неявную, адресацию данных
В качестве операндов команд микро-ЭВМ семейства 8051 могут использовать отдельные биты, четырехбитные цифры, байты и двухбайтные слова.
Все эти черты обычны для набора команд любого SISC-процессора и по сравнению с RISC набором команд обеспечивает большую компактность программного кода и увеличение быстродействия при выполнении сложных операций.
В то же время, набор команд семейства 8051 имеет несколько особенностей, связанных с типичными функциями, выполняемыми микроконтроллерами — управлением, для которого типичным является оперирование с одноразрядными двоичными сигналами, большое число операций ввода выводи и ветвлений программы.
Наиболее существенная особенность системы команд рассматриваемых микро ЭВМ это возможность адресации отдельных бит в резидентной памяти данных. Кроме того, как отмечалось, некоторые регистры блока регистров специальных функций также допускают адресацию отдельных бит. Карты адресов отдельных бит в резидентной памяти данных и в блоке регистров специальных функций.
10.2 Типы команд
Всего микро-ЭВМ выполняют 13 типов команд, они приведены в таблице 6. Как следует из нее, первый байт команды всегда содержит код операции (КОП), а второй и третий (если они присутствуют в команде) — адреса операндов или их непосредственные значения.
Типы команд
Тип команды |
Первый байт D7…D0 |
Второй байт D7…D0 |
Третий байт D7…D0 |
|
тип 1 |
коп |
|||
тип 2 |
коп |
#d |
||
тип 3 |
коп |
ad |
||
тип 4 |
коп |
bit |
||
тип 5 |
коп |
rel |
||
тип 6 |
коп |
a7…a0 |
||
тип 7 |
коп |
ad |
#d |
|
тип 8 |
коп |
ad |
rel |
|
тип 9 |
коп |
ads |
add |
|
тип 10 |
коп |
#d |
rel |
|
тип 11 |
коп |
bit |
rel |
|
тип 12 |
коп |
ad16h |
ad16l |
|
тип 13 |
коп |
#d16h |
#d16l |
10.3 Типы операндов
Состав операндов включает в себя операнды четырёх типов: биты, 4-битные цифры, байты и 16-битные слова.
Микроконтроллер имеет 128 программно-управляемых флагов пользователя. Имеется также возможность адресации отдельных битов блока регистров специальных функций и портов. Для адресации битов используется прямой 8-битный адрес (bit). Косвенная адресация битов невозможна. Карты адресов отдельных битов представлены на рис. 9.
Четырёхбитные операнды используются только при операциях обмена SWAP и XCHD.
Восьмибитным операндом может быть ячейка памяти, программ (ПП) или данных (резидентной (РПД) или внешней (ВПД)), константа (непосредственный операнд), ‘регистры специальных функций, а также порты ввода / вывода. Порты и регистры специальных функций адресуются только прямым способом. Байты памяти могут адресоваться также и косвенным образом через адресные регистры R0, R1, DPTR и PC.
Двухбайтные операнды — это константы и прямые адреса, для представления которых используются второй и третий байты команды.
(D7) |
(Do) |
|||||||
7F |
7Е |
7D |
7С |
7В |
7А |
79 |
78 |
|
77 |
76 |
75 |
74 |
73 |
72 |
71 |
70 |
|
6F |
6Е |
6D |
6С |
6В |
6А |
69 |
68 |
|
67 |
66 |
65 |
64 |
63 |
62 |
61 |
60 |
|
5F |
5Е |
5D |
5С |
5В |
5А |
59 |
58 |
|
57 |
56 |
55 |
54 |
53 |
52 |
51 |
50 |
|
4F |
4Е |
4D |
4С |
4В |
4А |
49 |
48 |
|
47 |
46 |
45 |
44 |
43 |
42 |
41 |
40 |
|
3F |
ЗЕ |
3D |
ЗС |
ЗВ |
ЗА |
39 |
38 |
|
37 |
36 |
35 |
34 |
33 |
32 |
31 |
30 |
|
2F |
2Е |
2D |
2С |
2В |
2А |
29 |
28 |
|
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
|
1F |
1Е |
1D |
1С |
1В |
1А |
19 |
18 |
|
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
|
0F |
0Е |
0D |
0С |
0В |
0А |
09 |
08 |
|
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
|
Банк 3 |
||||||||
Банк 2 |
||||||||
Банк 1 |
||||||||
Банк 0 |
10.4 Группы команд.
Система команд семейства MCS-51 содержит 111 базовых команд, которые по функциональному признаку можно подразделить на пять:
— пересылки данных;
— арифметических операций;
— логических операций;
— операций над битами;
— передачи управления.
Формат команд — одно-, двух- и трехбайтовый, причем большинство команд (94) имеют формат один или два байта. Первый байт любых типа и формата всегда содержит код операции, второй и третий байты содержат либо адреса операндов, либо непосредственные операнды.
Состав операндов включает в себя операнды четырех типов: биты, ниблы (4 разряда), байты и 16-битные слова. Время исполнения команд составляет 1, 2 или 4 машинных цикла. При тактовой частоте 12 мГц длительность машинного цикла составляет 1 мкс, при этом 64 команды исполняются за 1 мкс, 45 команд — за 2 мкс и 2 команды (умножение и деление) — за 4 мкс.
Набор команд MCS-51 поддерживает следующие ряд режимов адресации.
Прямая адресация (Direct Addressing).Операнд определяется 8-битным адресом в инструкции. Эта адресация используется только для внутренней памяти данных и регистров SFR.
Косвенная адресация (Indirect Addressing).В этом случае инструкция адресует регистр, содержащий адрес операнда. Данный вид адресации может применяться при обращении как к внутреннему, так и внешнему ОЗУ. Для указания 8-битных адресов могут использоваться регистры R0 и R1 выбранного регистрового банка или указатель стека SP.
Для 16-битной адресации используется только регистр «указатель данных» (DPTR — Data Pointer).
Регистровая адресация (Register Instruction).Данная адресация применяется для доступа к регистрам R0+R7 выбранного банка. Команды с регистровой адресацией содержат в байте кода операции трехбитовое поле, определяющее номер регистра. Выбор одного из четырех регистровых банков осуществляется программированием битов селектора банка (RS1, RS0) в PSW.
Непосредственная адресация (Immediate constants).Операнд содержится непосредственно в поле команды вслед за кодом операции и может занимать один или два байта (data8, data-i6).
Индексная адресация (Indexed Addressing). Индексная адресация используется при обращении к памяти программ и только при чтении. В этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (DPTR или PC) указывает базовый адрес требуемой таблицы, а аккумулятор указывает на точку входа в нее. Адрес элемента таблицы находится сложением базы с индексом (содержимым аккумулятора).
Другой тип индексной адресации применяется в командах «перехода по выбору» (Case Jump). При этом адрес перехода вычисляется как сумма указателя базы и аккумулятора.
Неявная адресация (Register—Specific Instructions).Некоторые инструкции используют индивидуальные регистры (например, операции с аккумулятором, DPTR), при этом данные регистры не имеют адреса, указывающего на них; это заложено в код операции
10.5 Обозначения, используемые при описании команд.
Rn (n = 0,1,…, 7) — регистр общего назначения в выбранном банке регистров;
@Ri (i= 0, 1) — регистр общего назначения в выбранном банке регистров, используемый в качестве регистра косвенного адреса;
ad — адрес прямо адресуемого байта;
ads — адрес прямо адресуемого байта-источника;
add — адрес прямо адресуемого байта-получателя;
ad11 — 11-разрядный абсолютный адрес перехода;
ad16 — 16-разрядный абсолютный адрес перехода;
rel — относительный адрес перехода;
#d — непосредственный операнд;
#d16 — непосредственный операнд (2 байта);
bit — адрес прямо адресуемого бита;
/bit — инверсия прямо адресуемого бита;
А — аккумулятор;
PC — счетчик команд;
DPTR — регистр указатель данных;
() — содержимое ячейки памяти или регистра,
10.6 Команды пересылки данных микроконтроллера 8051.
Эта группа представлена 28 командами, их краткое описание приведено в таблице, где также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Команды передачи данных
Название команды |
Мнемокод |
КОП |
T |
Б |
Ц |
Операция |
|
Пересылка в аккумулятор из регистра (п=0+7) |
MOV A, Rn |
11101rrr |
1 |
1 |
1 |
(A)^(Rn) |
|
Пересылка в аккумулятор прямоадресуемого байта |
MOV A, ad |
11100101 |
3 |
2 |
1 |
(A)< — (ad) |
|
Пересылка в аккумулятор байта из РПД (i=0,1) |
MOV A, @Ri |
1110011i |
1 |
1 |
1 |
(A)» — ((Ri)) |
|
Загрузка в аккумулятор константы |
MOV A, #d |
01110100 |
2 |
2 |
1 |
(A) < — #d |
|
Пересылка в регистр из аккумулятора |
MOV Rn, A |
11111ГГГ |
1 |
1 |
1 |
(Rn)^(A) |
|
Пересылка в регистр прямоадресуемого байта |
MOV Rn, ad |
10101rrr |
3 |
2 |
2 |
(Rn)<^(ad) |
|
Загрузка в регистр константы |
MOV Rn, #d |
01111rrr |
2 |
2 |
1 |
(Rn)<-#d |
|
Пересылка по прямому адресу аккумулятора |
MOV ad, A |
11110101 |
3 |
2 |
1 |
(ad) < — (A) |
|
Пересылка по прямому адресу регистра |
MOV ad, Rn |
10001rrr |
3 |
2 |
2 |
(ad)< — (Rn) |
|
Пересылка прямоадресуемого байта по прямому адресу |
MOV add, ads |
10000101 |
g |
3 |
2 |
(add) < — (ads) |
|
Пересылка байта из РПД по прямому адресу |
MOV ad, @Ri |
1000011i |
3 |
2 |
2 |
(ad)< — ((Ri)) |
|
Пересылка по прямому адресу константы |
MOV ad, #d |
01110101 |
7 |
3 |
2 |
(ad)<-#d |
|
Пересылка в РПД из аккумулятора |
MOV @Ri, A |
1111011i |
1 |
1 |
1 |
((Ri))^(A) |
|
Пересылка в РПД прямоадресуемого байта |
MOV @Ri, ad |
0110011i |
3 |
2 |
2 |
((Ri))< — (ad) |
|
Пересылка в РПД константы |
MOV @Ri, #d |
0111011J |
2 |
2 |
1 |
((Ri))^#d |
|
Загрузка указателя данных |
MOV DPTR, #d16 |
10010000 |
13 |
3 |
2 |
(DPTR)<-#d16 |
|
Пересылка в аккумулятор байта из ПП |
MOVC A, @A+DPTR |
10010011 |
1 |
1 |
2 |
< — ((A) +(DPTR)) |
|
Пересылка в аккумулятор байта из ПП |
MOVC A, @A+PC |
10000011 |
1 |
1 |
2 |
(PC)< — (PC)+1, (A) < — ((A)+(PC)) |
|
Название команды |
Мнемокод |
КОП |
T |
Б |
Ц |
Операция |
|
Пересылка в аккумулятор байта из ВПД |
MOVX A, @Ri |
1110001i |
1 |
1 |
2 |
(A) < — ((Ri)) |
|
Пересылка в аккумулятор байта из расширенной ВПД |
MOVXA,@DPTR |
11100000 |
1 |
1 |
2 |
(A) < — ((DPTR)) |
|
Пересылка в ВПД из аккумулятора |
MOVX @Ri, A |
1111001i |
1 |
1 |
2 |
((Ri))< — (A) |
|
Пересылка в расширенную ВПД из аккумулятора |
MOVX @DPTR, A |
11110000 |
1 |
1 |
2 |
((DPTR)) < — (A) |
|
Загрузка в стек |
PUSH ad |
11000000 |
3 |
2 |
2 |
(SP)< — (SP) + 1, ((SP))» — (ad) |
|
Извлечение из стека |
POP ad |
11010000 |
3 |
2 |
2 |
(ad)< — (SP), (SP) < — (SP) — 1 |
|
Обмен аккумулятора с регистром |
XCH A, Rn |
11001rrr |
1 |
1 |
1 |
(A) «-» (Rn) |
|
Обмен аккумулятора с прямоадресуемым байтом |
XCH A, ad |
11000101 |
3 |
2 |
1 |
(A) «-» (ad) |
|
Обмен аккумулятора с байтом из РПД |
XCH A, @Ri |
1100011i |
1 |
1 |
1 |
(A) — ((Ri)) |
|
Обмен младших тетрад аккумулятора и байта РПД |
XCHD A, @Ri |
1101011i |
1 |
1 |
1 |
(A0…3) W(Ri) o з) |
По команде MOV выполняется пересылка данных из второго операнда в первый. Эта команда не имеет доступа ни к внешней памяти данных, ни к памяти программ. Для этих целей предназначены команды M0VX и MOVC соответственно. Первая из них обеспечивает чтение / запись байт из внешней памяти данных, вторая — чтение байт из памяти программ.
По команде ХСН выполняется обмен байтами между аккумулятором и ячейкой РПД, а по команде XCHD — обмен младшими тетрадами (битами 0 — 3), (4 — 7).
Команды PUSH и POP предназначены соответственно для записи данных в стек и их чтения из стека. Размер стека ограничен лишь размером резидентной памяти данных. В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.
Группа команд пересылок микроконтроллера имеет следующую особенность — в ней нет специальных команд для работы со специальными регистрами: PSW, таймером, портами ввода-вывода. Доступ к ним, как и к другим регистрам специальных функций, осуществляется заданием соответствующего прямого адреса, т.е. это команды обычных пересылок, в которых вместо адреса можно ставить название соответствующего регистра.
Например, чтение PSW в аккумулятор может быть выполнено командой
MOV A, PSW, которая преобразуется Ассемблером к виду
MOVA, 0D0h(E5D0),
где Е5 — код операции, a D0 — операнд (адрес PSW).
В микро-ЭВМ аккумулятор имеет два различных имени в зависимости от способа адресации: А — при неявной адресации (например, MOV A, R0) и АСС — при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.
10.7 Команды арифметических операций 8051.
В эту группу входят 24 команды, краткое описание которых приведено в таблице. Из нее следует, что микроЭВМ выполняет достаточно широкий набор команд для организации обработки целочисленных данных, включая команды умножения и деления.
В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Арифметические операции.
Название команды |
Мнемокод |
КОП |
T |
Б |
Ц |
Операция |
|
Сложение аккумулятора с регистром (п=0*7) |
ADD A, Rn |
00101 rrr |
1 |
1 |
1 |
(A) < — (A) + (Rn) |
|
Сложение аккумулятора с прямоадресуемым байтом |
ADD A, ad |
00100101 |
3 |
2 |
1 |
(A) < — (A) + (ad) |
|
Сложение аккумулятора с байтом из РПД (i = 0,1) |
ADD A, @Ri |
0010011i |
1 |
1 |
1 |
(A) «_ (A) + ((Ri)) |
|
Сложение аккумулятора с константой |
ADD A, #d |
00100100 |
2 |
2 |
1 |
(A) «- (A) + #d |
|
Сложение аккумулятора с регистром и переносом |
ADDC A, Rn |
00111 rrr |
1 |
1 |
1 |
(A) < — (A) + (Rn) + (C) |
|
Сложение аккумулятора с прямоадресуемым байтом и переносом |
ADDC A, ad |
00110101 |
3 |
2 |
1 |
(A) < — (A) + (ad) + (C) |
|
Сложение аккумулятора с байтом из РПД и переносом |
ADDC A, @Ri |
0011011i |
1 |
1 |
1 |
(A) < — (A) + ((Ri)) + (C) |
|
Сложение аккумулятора с константой и переносом |
ADDC A, #d |
00110100 |
2 |
2 |
1 |
(A) < — (A) + # d + (C) |
|
Десятичная коррекция аккумулятора |
DA A * |
11010100 |
1 |
1 |
1 |
Если (Ао з)>9 или ((АС)=1), то (Ао..з)< — (Ao 3) + 6, затем если (Ад. 7)>9 или((С)=1), то (Ад…7) < — (Ад.7) + 6 |
|
Вычитание из аккумулятора регистра и заёма |
SUBB A, Rn |
10011 rrr |
1 |
1 |
1 |
(А) < — (А) — (С) — (Rn) |
|
Вычитание из аккумулятора прямоадресуемого байта и заема |
SUBB A, ad |
10010101 |
3 |
2 |
1 |
(А) «- (А) — (С) — ((ad)) |
|
Вычитание из аккумулятора байта РПД и заема |
SUBB A, @Ri |
1001011i |
1 |
1 |
1 |
(А) < — (А) — (С) — ((Ri)) |
|
Вычитание из аккумулятора константы и заема |
SUBB A, d |
10010100 |
2 |
2 |
1 |
(А) < — (А) — (С) — #d |
|
Инкремент аккумулятора |
INC A |
00000100 |
1 |
1 |
1 |
(А) < — (А) + 1 |
|
Название команды |
Мнемокод |
КОП |
T |
Б |
Ц |
Операция |
|
Инкремент регистра |
INCRn |
00001 rrr |
1 |
1 |
1 |
(Rn)< — (Rn)+ 1 |
|
Инкремент прямоадресуемого байта |
INC ad |
00000101 |
3 |
2 |
1 |
(ad)< — (ad) + 1 |
|
Инкремент байта в РПД |
INC@Ri |
0000011i |
1 |
1 |
1 |
((Ri))< — ((Ri))+1 |
|
Инкремент указателя данных |
INC DPTR |
10100011 |
1 |
1 |
2 |
(DPTR) < — (DPTR) + 1 |
|
Декремент аккумулятора |
DEC A |
00010100 |
1 |
1 |
1 |
(A)» — (A) — 1 |
|
Декремент регистра |
DECRn |
00011 rrr |
1 |
1 |
1 |
(Rn)< — (Rn) — 1 |
|
Декремент прямоадресуемого байта |
DEC ad |
00010101 |
3 |
2 |
1 |
(ad)< — (ad) — 1 |
|
Декремент байта в РПД |
DEC @Ri |
0001011i |
1 |
1 |
1 |
«Ri))< — ((Ri)) — 1 |
|
Умножение аккумулятора на регистр В |
MULAB |
10100100 |
1 |
1 |
4 |
(B) (A) < — (A)*(B) |
|
Деление аккумулятора на регистр В |
DIVAB |
10000100 |
1 |
1 |
4 |
(B). (A) 4 — (A)/(B) |
По результату выполнения команд ADD, ADDC, SUBB, MUL и DIV устанавливаются флаги PSW, структура которых приведена в таблице. Ц
Флаг С устанавливается при переносе из разряда D7, т.е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DAA.
Флаг OV устанавливается при переносе из разряда D6, т.е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.
Флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р = 1, в противном случае Р = 0.
10.8 — Команды логических операций микроконтроллера 8051.
В этой группе 25 команд, их краткое описание приведено в таблице. Нетрудно видеть, что эти команды позволяют выполнять операции над байтами: логическое И (Л), логическое ИЛИ (V), исключающее ИЛИ ((+)), инверсию (NOT), сброс в нулевое значение и сдвиг. В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Логические операции
Название команды |
Мнемокод |
КОП |
T |
Б |
Ц |
Операция |
|
Логическое И аккумулятора и регистра |
ANL A, Rn |
01011 rrr |
1 |
1 |
1 |
(A) < — (A) AND (Rn) |
|
Логическое И аккумулятора и прямоадресуемого байта |
ANL A, ad |
01010101 |
3 |
2 |
1 |
(A) <_ (A) AND (ad) |
|
Логическое И аккумулятора и байта из РПД |
ANL A, @Ri |
0101011i |
1 |
1 |
1 |
(A)< — (A) AND((Ri)) |
|
Логическое И аккумулятора и константы |
ANL A, #d |
01010100 |
2 |
2 |
1 |
(A) < — (A) AND #d |
|
Логическое И прямоадресуемого байта и аккумулятора |
ANL ad, A |
01010010 |
3 |
2 |
1 |
(ad) < — (ad) AND (A) |
|
Логическое И прямоадресуемого байта и константы |
ANL ad, #d |
01010011 |
7 |
3 |
2 |
(ad) < — (ad) AND #d |
|
Логическое ИЛИ аккумулятора и регистра |
ORLA, Rn |
01001 rrr |
1 |
1 |
1 |
(A) < — (A) OR (Rn) |
|
Логическое ИЛИ аккумулятора и прямоадресуемого байта |
ORLA, ad |
01000101 |
3 |
2 |
1 |
(A) «- (A) OR (ad) |
|
Логическое ИЛИ аккумулятора и байта из РПД |
ORLA, @Ri |
0100011i |
1 |
1 |
1 |
(A) «- (A) OR ((Ri)) |
|
Логическое ИЛИ аккумулятора и константы |
ORL A, #d |
01000100 |
2 |
2 |
1 |
(A) < — (A) OR #d |
|
Логическое ИЛИ прямоадресуемого байта и аккумулятора |
ORL ad, A |
01000010 |
3 |
2 |
1 |
(ad) < — (ad) OR (A) |
|
Логическое ИЛИ прямоадресуемого байта и константы |
ORL ad, #d |
01000011 |
7 |
3 |
2 |
(ad) < — (ad) OR #d |
|
Исключающее ИЛИ аккумулятора и регистра |
XRL A, Rn |
01101 rrr |
1 |
1 |
1 |
(A) < — (A) XOR (Rn) |
|
Исключающее ИЛИ аккумулятора и прямоадресуемого байта |
XRL A, ad |
01100101 |
3 |
2 |
1 |
(A) < — (A) XOR (ad) |
|
Исключающее ИЛИ аккумулятора и байта из РПД |
XRL A, @Ri |
01100111 |
1 |
1 |
1 |
(A) 4 — (A) XOR ((Ri)) |
|
Исключающее ИЛИ аккумулятора и константы |
XRL A, #d |
01100100 |
2 |
2 |
1 |
(A) < — (A) XOR #d |
|
Исключающее ИЛИ прямоадресуемого байта и аккумулятора |
XRL ad, A |
01100010 |
3 |
2 |
1 |
(ad) < — (ad) XOR (A) |
|
Исключающее ИЛИ прямоадресуемого байта и константы |
XRL ad, #d |
01100011 |
7 |
3 |
2 |
(ad) < — (ad) XOR #d |
|
Сброс аккумулятора |
CLRA |
11100100 |
1 |
1 |
1 |
(A)<-0 |
|
Инверсия аккумулятора |
CPLA |
11110100 |
1 |
1 |
1 |
(A) < — NOT(A) |
|
Сдвиг аккумулятора влево циклический |
RLA |
00100011 |
1 |
1 |
1 |
(An+1)< — (An), n=CH3, (Ao) < — (A7) |
|
Сдвиг аккумулятора влево через перенос |
RLCA |
00110011 |
1 |
1 |
1 |
(An+i)< — (An), n=0+6 (Ao) < — (С), (С) НАт) |
|
Сдвиг аккумулятора вправо циклический |
RRA |
00000011 |
1 |
1 |
1 |
(An)» — (An+i)1n=0+6, (A7)» — (Ao) |
|
Сдвиг аккумулятора вправо через перенос |
RRCA |
00010011 |
1 |
1 |
1 |
(An)< — (An+i), n=0*6 (A7) < — (С), (С) «- (Ao) |
|
Обмен местами тетрад в аккумуляторе |
SWAP A |
11000100 |
1 |
1 |
1 |
(A0…3) < — «¦ (A4…7) |
10.9 Команды операций над битами микроконтроллера 8051.
Группа состоит из 12 команд, краткое описание которых приведено в таблице. Эти команды позволяют выполнять операции над отдельными битами: сброс, установку, инверсию бита, а также логические И (Л) и ИЛИ (V). В качестве «логического» аккумулятора, участвующего во всех операциях с двумя операндами, выступает признак переноса С (разряд D7 PSW), в качестве операндов могут использоваться 128 бит из резидентной памяти данных и регистры специальных функций, допускающие адресацию отдельных бит.
В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Операции с битами
Название команды |
Мнемокод |
КОП |
т |
Б |
Ц |
Операция |
|
Сброс переноса |
CLRC |
11000011 |
1 |
1 |
1 |
(С)<-0 |
|
Сброс бита |
CLR bit |
11000010 |
4 |
2 |
1 |
(b)<-0 |
|
Установка переноса |
SETBC |
11010011 |
1 |
1 |
1 |
(С)<-1 |
|
Установка бита |
SETB bit |
11010010 |
4 |
2 |
1 |
(b)<-1 |
|
Инверсия переноса |
CPLC |
10110011 |
1 |
1 |
1 |
(С) < — NOT(C) |
|
Инверсия бита |
CPL bit |
10110010 |
4 |
2 |
1 |
(b)< — NOT(b) |
|
Логическое И бита и переноса |
ANL C, bit |
10000010 |
4 |
2 |
2 |
(C)< — (C) & (b) |
|
Логическое И инверсии бита и переноса |
ANL C, /bit |
10110000 |
4 |
2 |
2 |
(С)< — (С)& (NOT(b)) |
|
Логическое ИЛИ бита и переноса |
ORL C, bit |
01110010 |
4 |
2 |
2 |
(С) < — (С) OR (b) |
|
Логическое ИЛИ инверсии бита и переноса |
ORL C, /bit |
10100000 |
4 |
2 |
2 |
(С)< — (С) OR (NOT(b)) |
|
Пересылка бита в перенос |
MOV C, bit |
10100010 |
4 |
2 |
1 |
(C)< — (b) |
|
Пересылка переноса в бит |
MOV bit, С |
10010010 |
4 |
2 |
2 |
(b)< — (C) |
10.10 Команды передачи управления микроконтроллера 8051.
Группа представлена командами безусловного и условного переходов, командами вызова подпрограмм и командами возврата из подпрограмм.
В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Команды передачи управления
Название команды |
Мнемокод |
КОП |
T |
Б |
Ц |
Операция |
|
Длинный переход в полном объеме ПП |
LJMP ad16 |
00000010 |
12 |
3 |
2 |
(PC)<-ad16 |
|
Абсолютный переход внутри страницы в 2 Кб |
AJMPad11 |
aioa9a800001 |
6 |
2 |
2 |
(PC) < — (PC) + 2, (РСо-ю) < — ad11 |
|
Короткий относительный переход внутри страницы в 256 байт |
SJMP rel |
10000000 |
5 |
2 |
2 |
(PC) < — (PC) + 2, (PC) < — (PC) +rel |
|
Косвенный относительный переход |
JMP ©A+DPTR |
01110011 |
1 |
1 |
2 |
(PC) < — (A) + (DPTR) |
|
Переход, если аккумулятор равен нулю |
JZrel |
01100000 |
5 |
2 |
2 |
(PC)< — (PC)+2, если (А)=0, то (PC)» — (PC)+rel |
|
Переход, если аккумулятор не равен нулю |
JNZ rel |
01110000 |
5 |
2 |
2 |
(PC)< — (PC)+2, если (А)*0, то (PC)< — (PC)+rel |
|
Переход, если перенос равен единице |
JCrel |
01000000 |
5 |
2 |
2 |
(PC)< — (PC)+2, если (С)=1, то (PC)< — (PC)+rel |
|
Переход, если перенос равен нулю |
JNC rel |
01010000 |
5 |
2 |
2 |
(PC)< — (PC)+2, если (С)=0, то (PC)< — (PC)+rel |
|
Переход, если бит равен единице |
JB bit, rel |
00100000 |
11 |
3 |
2 |
(PC)< — (PC)+3, если (b)=l, то (PC)< — (PC)+rel |
|
Переход, если бит равен нулю |
JNB bit, rel |
00110000 |
11 |
3 |
2 |
(PC)< — (PC)+3, если (b)=0, то (PC)< — (PC)+rel |
|
Переход, если бит установлен, с последующим сбросом бита |
JBC bit, rel |
00010000 |
11 |
3 |
2 |
(PC) < — (PC) + 3, если(Ь)=1, то (b) <- 0 и (РС)< — (PC) + rel |
|
Декремент регистра и переход, если не нуль |
DJNZ Rn, rel |
11011rrr |
5 |
2 |
2 |
(PC) < — (PC) + 2, (Rn) < — (Rn) -1, если (Rn) t 0, то (PC) < — (PC) + rel |
|
Декремент прямоадресуемого байта и переход, если не нуль |
DJNZ ad, rel |
11010101 |
8 |
3 |
2 |
(PC) < — (PC) + 2, (ad)< — (ad) — 1, если (ad) t 0, то (PC) < — (PC) + rel |
|
Сравнение аккумулятора с прямоадресуемым байтом и переход, еслк не равно |
CJNE A, ad, rel |
10110101 |
8 |
3 |
2 |
(PC) 4 — (PC) + З.если (A) t (ad), то (PC) < — (PC) + ге1, если (A) < (ad), то (С) < — 1, иначе (С) <- 0 |
|
Сравнение аккумулятора с константой и переход, если не равно |
CJNE A, #d, rel |
10110100 |
10 |
3 |
2 |
(PC) < — (PC) + З.если (А) * #d, то (PC) < — (PC) + ге1, если (А) < #d, то (C)< — 1, иначе (С) <-0 |
|
Сравнение регистра с константой и переход, если не равно |
CJNE Rn, #d, re |
10111rrr |
10 |
3 |
2 |
(PC) «- (PC) + З.если (Rn) t #d, то (PC) < — (PC) + rel, если (Rn) < #d, то (C)< — 1, иначе (С) <- 0 |
|
Сравнение байта в РПД с константой и переход, если не равно |
CJNE @Ri,#d, re |
1011011i |
10 |
3 |
2 |
(PC) < — (PC) + З.если ((Ri)) * #d, то (PC) «- (PC) + ге1, если ((Ri)) < #d, то (C)< — 1, иначе (С) <-0 |
|
Длинный вызов подпрограммы |
LCALL adl6 |
00010010 |
12 |
3 |
2 |
(PC) < — (PC) + 3, (SP) < — (SP) +1, ((SP)) < — (PC0…7), (SP)< — (SP)+1, ((SP))» — (PCe…i5), (PC)«-ad16 |
|
Абсолютный вызов подпрограммы в пределах страницы в 2 Кб |
ACALLad11 |
a10a9a8i0001 |
6 |
2 |
2 |
(PC) 4 — (PC) + 2, (SP) < — (SP) + 1, ((SP)) < — (PC0…7), (SP)» — (SP)+1, ((SP)) < — (PC8…is), (PC0-10) < — ad11 |
|
Возврат из подпрограммы |
RET |
00100010 |
1 |
1 |
2 |
(PC8…15)» — ((SP)), (SP)< — (SP) — 1, (PCo…7) < — ((SP)), (SP) < — (SP) — 1 |
|
Возврат из подпрограммы обработки прерывания |
RETI |
00110010 |
1 |
1 |
2 |
(PCe..15) < — ((SP)), (SP)» — (SP) — 1, (PC0…7) < — ((SP)), (SP) <r — (SP) — 1 |
|
Пустая операция |
NOP |
00000000 |
1 |
1 |
1 |
(PC)< — (PC)+ 1 |
Команда безусловного перехода LJMP (L — long — длинный) осуществляет переход по абсолютному 16-битному адресу, указанному в теле команды, т.е. команда обеспечивает переход в любую точку памяти программ.
Действие команды AJMP (А — absolute — абсолютный) аналогично команде LJMP, однако в теле команды указаны лишь 11 младших разрядов адреса. Поэтому переход осуществляется в пределах страницы размером 2 Кбайт, при этом надо иметь в виду, что сначала содержимое счетчика команд увеличивается на 2 и только потом заменяются 11 разрядов адреса.
В отличие от предыдущих команд, в команде SJMP (S — short — короткий) указан не абсолютный, а относительный адрес перехода. Величина смещения rel рассматривается как число со знаком, а, следовательно, переход возможен в пределах — 128…+127 байт относительно адреса команды, следующей за командой SJMP.
Команда косвенного перехода JMP @A+DPTR позволяет вычислять адрес перехода в процессе выполнения самой программы.
Командами условного перехода можно проверять следующие условия:
JZ — аккумулятор содержит нулевое значение;
JNZ — аккумулятор содержит не нулевое значение
JC — бит переноса С установлен;
JNC — бит переноса С не установлен;
JB — прямо адресуемый бит равен 1
NB — прямо адресуемый бит равен 0;
JBC — прямо адресуемый бит равен 1 и сбрасывается в нулевое значение при выполнении команды.
Все команды условного перехода рассматриваемых микро-ЭВМ содержат короткий относительный адрес, т.е. переход может осуществляться в пределах-128… +127 байт относительно следующей команды.
Команда DJNZ предназначена для организации программных циклов. Регистр Rn или байт по адресу ad, указанные в теле команды, содержат счетчик повторений цикла, а смещение rel — относительный адрес перехода к началу цикла. При выполнении команды содержимое счетчика уменьшается на 1 и проверяется на 0. Если значение содержимого счетчика не равно 0, то осуществляется переход на начало цикла, в противном случае выполняется следующая команда.
Команда CJNЕ для реализации процедур ожидания внешних событий. В теле команды указаны «координаты» двух байт и относительный адрес перехода rel. В качестве двух байт могут быть использованы, например, значения содержимого аккумулятора и прямо адресуемого байта или косвенно адресуемого байта и константы. При выполнении команды значения указанных двух байт сравниваются и в случае, если они не одинаковы, осуществляется переход. Например, команда WAIT: CJNE A, PO, WAIT будет выполняться до тех пор, пока значения на линиях порта Р0 не совпадут со значениями содержимого аккумулятора.
Действие команд вызова процедур полностью аналогично действию команд безусловного перехода. Единственное отличие состоит в том, что они сохраняют в стеке адрес возврата.
Команда возврата из подпрограммы RET восстанавливает из стека значение содержимого счетчика команд, а команда возврата из процедуры обработки прерывания RETI, кроме того, разрешает прерывание обслуженного уровня. Команды RET и RETI не различают, какой командой — LCALL или ACALL — была вызвана подпрограмма, так как и в том, и в другом случае в стеке сохраняется полный 16-разрядный адрес возврата.
Большинство Ассемблеров допускают обобщенную мнемонику JMP — для команд безусловного перехода и CALL — для команд вызова подпрограмм. Конкретный тип команды определяется Ассемблером, исходя из «длины» перехода или вызова.
На рисунке приведен состав внешних выводов МП 8051.
Состав внешних выводов МП
Размещено на