Функциональное назначение выводов корпуса МК48.

Микроконтроллер конструктивно выполнен в корпусе БИС с 40 выводами. Все выводы электрически совместимы с элементами ТТЛ: входы представляют собой единичную нагрузку, а выходы могут быть нагружены одной ТТЛ – нагрузкой. Цоколевка корпуса МК48 показана на рис. 3.

 

Рис. 3. Цоколевка корпуса МК48 и наименование выводов.

 

ОБЩ (VSS) – потенциал земли,

+5В ОСН (VCC) – основное напряжение питания +5В, подается во время работы и при программировании РПП,

+5В ДОП (VDD) – дополнительное напряжение +5В, во время работы обеспечивает питание только для РПД, на этот вывод при программировании РПП подается уровень +25В,

ПРОГ (PROG) – вход для подачи программирующего импульса +25В. при загрузке РПП, выход стробирующего сигнала для БИС расширителя ввода/вывода

X1 – вход для подключения вывода кварцевого резонатора или вход для сигнала от внешнего источника синхронизации,

X2 – вход для подключения второго вывода резонатора,

– вход сигнала общего сброса при запуске МК, сигнал 0 при программировании и проверке РПП,

– сигнал, который совместно с сигналом САВП позволяет при отладке выполнять программу с остановом после исполнения очередной команды,

– разрешение внешней памяти программ, сигнал выдается только при обращении к внешней памяти программ,

САВП (ALE) – строб адреса внешней памяти, сигнал использует два приема и фиксации адреса внешней памяти на внешнем регистре, сигнал является идентификатором машинного цикла, так как всегда выводится из МК с частотой, в 5 раз меньше основной частоты синхронизации,

– стробирующий сигнал при чтении из внешней памяти данных или УВВ,

 

– стробирующий сигнал при записи во внешнюю память данных или УВВ,

Т0 – входной сигнал, опрашиваемый по командам условного перехода JT0 и JNTO, кроме того, используется при программировании РПП, может быть использован для вывода сигнала синхронизации после команды ENTO CLK,

T1 – входной сигнал, опрашиваемый по командам условного перехода JT1 и JNT1, кроме того, используется в качестве входа внутреннего счетчика внешних событий после исполнения команды STRT CNT,

Порт 2 (Р2) – 8–битный квазидвунаправленный порт ввода/вывода информации, каждый разряд порта может быть запрограммирован на ввод или на вывод, биты Р2 (0–3) во время чтения из ВПП содержат старшие четыре бита счетчика команд СК (8–11), используются для подключения БИС расширителя ввода/вывода (порты Р4–Р7),

Порт BUS (DB) – 8–битный двунаправленный порт ввода/вывода информации, может быть отключен от нагрузки, может выполнять прием и выдачу байтов синхронно с сигналами ЧТ и ЗП, при обращении к ВПП содержит 8 младших бит счетчиак команд и затем по сигналу РВПП принимает выбранную команду, при обращении к ВПД содержит младшие 8–бит адреса синхронно с сигналом САВП и байт данных синхронно с сигналами ЧТ и ЗП.

Память микроконтроллера.

Память программ. Память программ и память данных в МК48 физически и логически разделены. Память программ реализована в резидентном СППЗУ емкостью 1 Кбайт. Максимальное адресное пространство, отводимое для программ, составляет 4 Кбайта. Счетчик команд (СК) содержит 12 бит, но инкрементируются в процессе счета только младшие 11 бит. Поэтому счетчик команд из предельного состояния 7FFH (если только по этому адресу на расположена команда передачи управления) перейдет в состояние 000H. Состояние старшего бита счетчика команд может быть изменено специальными командами (SEL MB0, SEL MB1). Подобный режим работы счетчика команд позволяет создать два банка памяти емкостью по 2 КБайта каждый. Карта адресов памяти программ показана на рис. 4.

   
Рис. 4 Карта адресов памяти программ Рис. 5 Карта адресов РПД

 

В рездентной памяти программ имеется три специализированных адреса: адрес 0, к которому передается управление после окончания сигнала СБР, по этому адресу должна находится команда безусловного перехода к началу программы,

адрес 3, по которому расположен вектор прерывания от внешннего источника,

адрес 7, по которому расположены вектор прерывания от таймера или начальная команда подпрограммы обслуживания прерывания по признаку переполнения таймера/счетчика.

Память программ делятся не только на банки емкостью 2 КБайта, но и на страницы по 256 байт в каждой. В командах условного перехода задается 8-битный адрес передачи управления в пределах текущей страницы. В случае когда в программе необходимо иметь много переходов по условию, из-за небольшого размера страницы возникает проблема размещения соответствующих программных модулей в границах страницы. Команда вызова подпрограмм модифицирует 11 бит счетчика команд, обеспечивая тем самым межстраничные переходы в пределах выбранного банка памяти программ.

В МК-системе работающей с внешней памятью программ, возникает проблема размещения подпрограмм в двух банках памяти. Проблема эта связана с тем, что МК не имеет средст считывания и анализа флагов МВ, равного содержимому старшего бита счетчика команд СК11. Поэтому в каждый текущий момент исполнения программы, состоящий из потока вызовов подпрограмм, нет возможности определения номера банка памяти, из которого осуществляется выборка. Так как переходы между банками выполняются только по командам SEL MB, необходимо следить за тем, чтобы подпрограммы, взаимно вызывающие друг друга, располагались в пределах одного банка памяти. В противном случае возникает необходимость модификации признака МВ в вызываемой подпрограмме и восстановление его при возврате в вызывавшую подпрограмму. Но если вызов такой подпрограммы носит условный характер, то проблема восстановления может оказаться неразрешимой.

При обработке запросов прерывания в МК48 старший бит счетчика команд СК принудительно устанавливается в 0. Это приводит к необходимости подпрограмму обслуживания прерывания и все подпрограммы, вызываемые ею, размещать в пределах банка памяти 0.

Память данных. Резидентная память данных емкостью 64 байта имеет в своем составе два банка рабочих регистров 0-7 и 24-31 по восемь регистров в каждом. Выбор одного из банков регистров выполняется по команде SEL RB. Рабочие регистры доступны по командам с прямой адресацией, а все ячейки РПД доступны по командам с косвенной адресацией. В качестве регистров косвенного адреса используются регистры R0, R1 и R0*, R1* рис. 5.

Ячейки РПД с адресами 8-23 адресуются указателем стека из ССП и могут быть использованы в качестве 8-уровневого стека. В случае, если уровень вложенности подпрограмм меньше восьми, незадействованные в стеке ячейки могут использоваться как ячейки РПД. При переполнении стека регистр-указатель стека, построенный на основе 3-битного счетчика, переходит из состояния 7 в состояние 0. Малая емкость стека ограничивает число возможных внешних источников прерывания в МК-системе. МК48 не имеет команд загрузки байта в стек или его извлечение из стека, и внем фиксируются только содержимое счетчика команд и старшая тетрада ССП (флаги). В силу этого разработчику необходимо следить за тем, чтобы вложенные подпрограммы не использовали одни и те же рабочие регистры.

Практически все команды с обращением к РПД оперируют с одним байтом. Однако по командам вызова и возврата осуществляется доступ к двухбайтным словам. В памяти данных слова хранятся так, что старший байт слова располагается в ячейки с большим адресом. Отметим, что в памяти программ порядок расположения байтов по старшинству при хранении двухбайтных слов обратный.

В МК-системах, где используется внешнее ОЗУ, через регистры косвенного адреса R0 и R1 возможен доступ к ВПД емкостью 256 байт.

 

Рис.6.

 

Рис.7.

 

Задание к лабораторной работе:

1. Ознакомиться с программой пользователя Эмулятора МК48.

2. Поменять содержимое отдельных команд пробного файла.

Содержание отчета

Отчеты должны содержать:

1. Структурную схему МК.

2. Карту адресов памяти программ и памяти данных.

3. Описание работы с Эмулятором.

4. Вывод.

Контрольные вопросы

1. АЛУ ее состав, какие выполняет операции.

2. Слова состояния программы, перечислите признаки, флаги условных переходов.

3. Память программ, как реализована, расскажите о работе счетчика команд.

4. Память данных, как реализована, расскажите как работает стек.


Лабораторная работа №2. Ввод/вывод, общие сведения о системе команд МК48, команды пересылки данных.

 

Цель работы: Ознакомление с организацией ввода/вывода МК48; исследование выполнения команд пересылки данных и различных способов адресации.

2.1. Организация ввода/вывода информации

Для связи МК48 с обьектом управления, для ввода и вывода информации используются 27 линий. Эти линии сгруппированы в три порта по восемь линий в каждом и могут быть использованы для вывода/ввода или для ввода/вывода через двунаправленные линии. Кроме портов ввода/вывода имеются три линии, сигналы на которых могут изменять ход программы по командам условного перехода: линии ЗПР используются для ввода в МК сигнала запроса прерывания от внешнего источника, линии ТО используются для ввода тестирующего сигнала от двоичного датчика объекта управления, кроме того, под управлением программы (по команде ENTO CLK) по этой линии из МК может передаваться сигнал синхронизации, линия Т1 используется для ввода тестирующего сигнала или в качестве входа счетчика событий (по команде STRT CNT).

Порты ввода/вывода P1 и P2. Специальная схемотехника портов Р1 и Р2, которая получила название квазидвунаправленная, позволяет ввод, вывод или ввод/вывод. Каждая линия портов Р1 и Р2 может быть программным путем настроена на ввод, вывод или на работу с двунаправленной линией передачи. Для того, чтобы настроить некоторую линию на ввод в МК, необходимо перед этим в буферный триггер этой линии записать сигнал1. Квазидвунаправленная структура портов Р1 и Р2 для программиста МК1816 специфична тем, что в процессе ввода информации выполняется операция логического И над вводимыми данными и текущими (последними) выведенными данными. Квазидвунаправленные схемы портов Р1 и Р2 и команды логических операций ANL и ORL предоставляют разработчику эффективное средство маскирования для обработки однобитных входных и выходных переменных.

В системе команд МК есть команды, которые позволяют выполнять запись нулей и единиц в любой разряд или группу разрядов порта, но так как в этих разрядах маска задается непосредственным операндом, то необходимо знать распределение сбрасываемых и устанавливаемых линий на этапе разработки прикладной программы. В этом случае, если маска вычисляется программой и заранее не известна, в ОЗУ необходимо иметь копию состояния порта вывода. Эта копия по командам логических операций объединяется с вычисляемой маской в аккумуляторе и загружается в порт. Необходимость этой процедуры вызвана тем, что в МК отсутствует возможность выполнить операцию чтения значений портов Р1 и Р2 для определения прежнего состояния порта вывода. Порт Р2 отличается от порта Р1 тем, что его младшие 4 бита могут быть использованы для расширения МК–системы по вводу/выводу. Через младшую тетраду порта Р2 по специальным командам обращения возможен доступ к 4 внешним четырехбитным портам ввода/вывода Р4–Р7. Работа этих внешних портов синхронизируется сигналом ПРОГ.

Порт ввода/вывода BUS представляет собой двунаправленный буфер с тремя состояниями и предназначен для побайтового ввода, вывода и ввода/вывода информации. Если порт BUS используется для двунаправленных передач, то обмен информации через него выполняется по командам MOVX. При выводе байта генерируется стробирующий сигнал ЗП, а выводимый байт фиксируется в буферном регистре. При вводе байта генерируется стробирующий сигнал ЧТ, но вводимый байт в буферном регистре не фиксируется. В отсутствии передач порт BUS по своим выходам находится в высокоимпедансном состоянии. Если порт BUS используется как однонаправленный, то вывод через него выполняется по команде OUTL, а ввод - по команде INS.

Вводимые и выводимые через порт BUS байты можно маскировать с помощью команд ORL и ANL, что позволяет выделять и обрабатывать в байте отдельный бит или группу бит.

В МК-системах простой конфигурации, когда порт BUS не используется в качестве порта-расширителя системы, обмен выполняется по командам INS, OUTL и MOVX. Возможно попеременное использование команд ОUTL и MOVX. Однако при этом необходимо помнить, что выводимый по команде OUTL байт фиксируется в буферном регистре порта BUS. (Команда INS не уничтожает содержимое буферного регистра порта). В МК-системах, имеющих внешнюю память программ, порт BUS используется для выдачи адреса внешней памяти и для приема команды из внешней памяти программ. Следовательно, в таких системах использование команды OUTL лишено смысла.