- •1.Организация микроконтроллера мк1816
- •1.1.Общие сведения о семействе микроконтролеров к1816.
- •2.Арифметическо-логическое устройство (алу) микроконтроллера мк1816
- •3.Память микроконтроллера мк1816
- •3.1.Память программ (или - память команд, пк)
- •3.2.Память данных (или - оперативная память, озу)
- •4.Организация ввода – вывода в микроконтроллере мк1816
- •4.1.Порты (или каналы) ввода - вывода р1 и р2.
- •4.2.Порт ввода - вывода bus (или db).
- •5.Управление работой микроконтроллера мк1816
- •5.1.Синхронизация микроконтроллера.
- •5.2.Системный сброс.
- •5.3.Пошаговый режим работы.
- •6.Варианты структур микроконтроллерных систем(мкс) на основе мк1816
- •6.1.Мк-система с расширенной памятью программ.
- •6.2.Мк-система с расширенной памятью данных.
- •6.3.Мк-система с расширенным вводом-выводом.
- •7.Система команд микроконтроллера мк1816
- •7.1.Команды пересылки и обмена
- •7.2.Команды арифметических и логических операций (в том числе и операций над признаками)
- •7.2.1.Общие сведения.
- •7.2.2.Команды группы арифметических операций
- •7.2.3.Команды группы логических операций:
- •Xrl a,Rr - Исключающее или аккумулятора с маской в регистре
- •Xrl a,#d - Исключающее или аккумулятора с непосредственным операндом
- •Xrl a,@Rr - Исключающее или аккумулятора и маской в ячейке памяти
- •7.3.Команды ввода – вывода
- •7.4.Команды передачи управления (в том числе и операций с подпрограммами)
- •7.5.Команды операций с таймером
- •7.6.Команды управления режимом работы мк
2.Арифметическо-логическое устройство (алу) микроконтроллера мк1816
В состав арифметическо-логического устройства входят следующие блоки:
комбинационная схема обработки байт,
регистр временного хранения операнда Т,
регистр-аккумулятор А,
схема десятичного корректора,
схема формирования признаков, часть из которых фиксируется в регистре слова состояния программы ССП и используется логической схемой управления-переходами по программе.
Аккумулятор является двухтактным регистром, так как он используется в качестве регистра операнда и регистра результата. Динамический регистр Т программно недоступен. Он служит для временного хранения второго операнда при выполнении двухоперандных команд.
Комбинационная схема АЛУ может выполнять следующие операции:
сложение байта с переносом или без него;
логические операции И, ИЛИ и исключающее ИЛИ;
инкремент;
декремент байта;
инверсию бита;
циклический сдвиг влево, вправо (через или минуя признак переноса);
обмен тетрад в байте;
десятичную коррекцию содержимого аккумулятора.
При выполнении операций обработки данных в АЛУ формируются признаки, часть которых не фиксируется на триггерах, а формируется на комбинационной схеме. К таким признакам относятся следующие:
признак нулевого содержимого аккумулятора,
признак наличия единицы в селектируемом разряде аккумулятора.
Логика условных переходов по указанным признакам позволяет без фиксации на триггерах выполнять команды передачи управления (JZ, JNZ, JB0 - JB7).
Признаки переноса (переполнения) и вспомогательного переноса (перенос из младшей тетрады в старшую) фиксируются на триггерах, входящих в состав регистра слова состояния процессора ССП. Формат ССП показан на рисунке ниже.
Кроме перечисленных признаков, при условных переходах МК оперирует
признаками F0 и F1. Их функциональное назначение определяется разработчиком,
признаком переполнения таймера FT,
признаками наличия сигналов на входах Т0 и Т1.
Программистом могут быть использованы признаки рабочего банка регистров BS и выбранного блока внешней памяти программ MB.
Кроме того, после окончания каждого машинного цикла опрашивается еще один признак, а именно признак разрешения/запрета прерываний EI.
Подробно работа АЛУ освещается при описании системы команд МК 1816.
3.Память микроконтроллера мк1816
Внутреннее устройство памяти разделено на модули памяти программ и памяти данных.
3.1.Память программ (или - память команд, пк)
Реализована в резидентном СППЗУ емкостью 1 Кбайт. Максимальное адресное пространство, отводимое для программ, составляет 4 Кбайт. Счетчик команд (СК, или программный счетчик - PC) содержит 12 разрядов, но инкрементируются в процессе счета только младшие 11 разрядов. Поэтому счетчик команд из предельного состояния 7FFH (если только по этому адресу не расположена команда передачи управления) перейдет в состояние 000H. Состояние старшего разряда счетчика команд может быть изменено специальными командами ("SEL МВ0" и "SEL MB1"). Подобный режим работы СК позволяет создать два блока памяти емкостью по 2 Кбайт каждый. Карта адресов памяти программ показана на рисунке
В резидентной памяти программ имеются три специализированных адреса:
адрес 0, к которому передается управление сразу после окончания сигнала системного сброса СБРОС; по этому адресу должна находиться команда безусловного перехода к началу программы (точка входа после начальной установки);
адрес 3, по которому расположен вектор прерывания от внешнего источника (точка входа при обработке внешних прерываний);
адрес 7, по которому расположен вектор прерывания от таймера или начальная команда подпрограммы обслуживания прерывания по признаку переполнения таймера/счетчика событий (точка входа при обработке прерываний по переполнению таймер-счетчика).
ПК служит для записи, как команд, так и таблиц констант. Для отладки программ в микро-ЭВМ существует возможность отключения внутренней ПК подачей сигнала высокого уровня на вывод РВП (ЕА) микро-ЭВМ.
СК микро-ЭВМ имеет 12 разрядов, 11 из которых меняются последовательно от 000H до 7FFH. При переполнении младших 11 разрядов с 7FFH в 000H переноса в 12-й разряд не происходит. Таким образом, все адресное пространство ПК состоит из двух банков МВ0 и МВ1 по 2К байт. Внутренняя ПК микро-ЭВМ занимает младшие 1К байт. Команды перехода и вызова программ указывают адрес длиной 11 разрядов, а старший разряд загружается во время их выполнения из триггера банка, состояние которого можно менять с помощью специальных команд. При вызове подпрограмм и возврате из них полный 12-разрядный адрес возврата загружается в стек и извлекается оттуда. Такая организация памяти приводит к возникновению затруднений при программировании, связанных с тем, что программе не всегда известно текущее значение разряда триггера банка и отсутствуют средства для его считывания. Для устранения неопределенностей во время обработки прерываний старший разряд программного счетчика принудительно устанавливается в ?0? до выполнения команды возврата из подпрограммы обслуживания прерывания.
Память программ, состоящая из двух блоков объемом 2 Кбайт, в свою очередь, разделяется на страницы по 256 байт в каждой. В командах условного перехода задается 8-битный адрес передачи управления в пределах текущей страницы. В случае, когда в программе необходимо иметь много условных переходов, то возможны проблемы размещения подпрограмм в границах страницы и на нескольких страницах. Команды вызова подпрограмм модифицируют 11 разрядов счетчика команд, обеспечивая тем самым межстраничные переходы в пределах выбранного блока памяти программ.
Так как СППЗУ используется не только для хранения команд, но и констант, то в МК 1816 применяются два способа адресации постоянной памяти для чтения неизменяемых данных:
непосредственная адресация, при которой второй байт двухбайтной команды представляет собой операнд;
косвенная адресация, при которой содержимое аккумулятора используется в качестве указателя данных в текущей странице или в странице 3 памяти программ.
В расширенной МК-системе, работающей с внешней памятью программ, возникает проблема размещения подпрограмм в двух блоках памяти. Проблема связана с тем, что МК не имеет средств считывания и анализа признака МВ (работы с внешней памятью расширения системы), соответствующего содержимому старшего разряда счетчика команд СК11. Поэтому, в каждый текущий момент исполнения программы, состоящей из потока вызовов подпрограмм, нет возможности определения блока памяти, из которого осуществляется выборка. Так как межблочные переходы выполняются только по командам SEL MB0 и SEL MB1 (SEL - выбор), то необходимо следить за тем, чтобы подпрограммы, взаимно вызывающие друг друга, располагались в пределах одного блока памяти. В противном случае возникает необходимость модификации признака MB в вызываемой подпрограмме и восстановления его при возврате в вызывающую подпрограмму. Но если вызов такой подпрограммы носит условных характер, то проблема восстановления может оказаться трудноразрешимой.
При обработке запросов прерываний в МК 1816 старший разряд СК11 принудительно устанавливается в 0. Это приводит к необходимости подпрограмму обслуживания прерывания и все подпрограммы, вызываемые ею, размещать в пределах блока памяти MB0.