Справочник от Автор24
Поделись лекцией за скидку на Автор24

Основы вычислительной техники

  • ⌛ 2015 год
  • 👀 30608 просмотров
  • 📌 30566 загрузок
  • 🏢️ ГУАП
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Основы вычислительной техники» pdf
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ Санкт-Петербургский Государственный университет аэрокосмического приборостроения КОНСПЕКТ ЛЕКЦИЙ ПО КУРСУ «ОСНОВЫ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ» СОСТАВИТЕЛЬ ДОЦЕНТ ГОРБАЧЕВ С.В. Санкт-Петербург 2015 2 Содержание Введение....................................................................................................................................3 1 Особенности проектирования микроконтроллерных устройств управления объектами ...4 1.1 Введение в предметную область ....................................................................................4 1.2 Основные положения......................................................................................................5 1.3 Структура МК-системы управления...............................................................................7 1.4 Особенности разработки аппаратурных средств МК-систем........................................8 1.5 Особенности разработки прикладного программного обеспечения МК-систем .........9 2 Структурная организация и система команд микроконтроллера 1816ВЕ48/i8048 ...........12 2.1 Функциональное назначение выводов корпуса МК48 ................................................12 2.2 Структурная схема МК48 .............................................................................................14 2.2.1 Арифметико-логическое устройство .....................................................................14 2.2.2 Память микроконтроллера .....................................................................................15 2.2.3 Организация ввода/вывода информации ..............................................................17 2.2.4 Устройство управления микроконтроллера .........................................................18 2.3 Система команд МК48 .................................................................................................21 2.3.1 Общие сведения о системе команд ........................................................................21 2.3.2 Группа команд пересылки данных ............................................................................22 2.3.3 Группа команд арифметических операций ...........................................................24 2.3.4 Группа команд логических операций .............................................................25 2.3.5 Группа команд передачи управления..............................................................25 2.3.6 Группа команд управления режимом работы МК................................................28 2.4 Особенности работы МК48 на этапе отладки прикладных программ .......................29 2.4.1 Микроконтроллер в пошаговом режиме работы и в режиме внешнего доступа.29 2.4.2 Загрузка прикладных программ в резидентную память микроконтроллера........30 2.5 Варианты структурной организации систем на основе МК48 ....................................32 2.5.1 МК-система с внешней памятью программ..........................................................32 2.5.2 МК-система с внешней памятью данных .............................................................33 2-5.3. МК-система с расширенным вводом/выводом ....................................................34 Список сокращений, символических имен и аббревиатур....................................................35 1. Русская нотация...............................................................................................................35 2. Английская нотация........................................................................................................36 3. Специальные символы ....................................................................................................38 3 Введение Развитие микроэлектроники как элементной базы вычислительной техники и широкое применение ее изделий в промышленном производстве, в устройствах и системах управления самыми разнообразными объектами и процессами является в настоящее время одним из основных направлений научно-технического прогресса. Использование микроэлектронных средств в изделиях производственного и культурно-бытового назначения не только приводит к повышению техникоэкономических показателей изделий (стоимости, надежности, потребляемой мощности, габаритных размеров) и позволяет многократно сократить сроки разработки и отодвинуть сроки «морального старения» изделий, но и придает им принципиально новые потребительские качества (расширенные функциональные возможности, модифицируемость, адаптивность и т.д.). За последние годы в микроэлектронике бурное развитие получило направление, связанное с выпуском однокристальных микроконтроллеров, которые предназначены для "интеллектуализации" оборудования различного назначения. Однокристальные (однокорпусные) микроконтроллеры представляют собой приборы, конструктивно выполненные в виде БИС и включающие в себя все составные части «голой» микроЭВМ: микропроцессор, память программ и память данных, а также программируемые интерфейсные схемы для связи с внешней средой. Использование микроконтроллеров в системах управления обеспечивает достижение исключительно высоких показателей эффективности при столь низкой стоимости (во многих применениях система может состоять только из одной БИС микроконтроллера), что микроконтроллерам, видимо, нет разумной альтернативной элементной базы для построения управляющих и/или регулирующих систем. К настоящему времени более двух третей мирового рынка микропроцессорных средств составляют именно однокристальные микроконтроллеры. Отечественная микроэлектронная промышленность освоила широкомасштабный выпуск однокристальных микроконтроллеров, по существу представляющих собой особый класс вычислительной техники. К этому классу можно отнести: 4-битовые микроконтроллеры серий 1814, 1820, 1829 и 1013; 8-битовые микроконтроллеры серии 1816 – аналоги микроконтроллеров серии MCS-51 фирмы Intel; микроконтроллеры сигнальные (аналоговые микропроцессоры) серии 1813. Часто в публикациях микроконтроллеры называют однокристальными микроЭВМ. По нашему мнению, для этих приборов в большей степени подходит название МИКРОКОНТРОЛЛЕР, так как незначительная емкость памяти, физическое и логическое разделение памяти программ (ПЗУ) и памяти данных (ОЗУ), упрощенная и ориентированная на задачи управления система команд, примитивные методы адресации команд и данных, а также специфическая организация ввода/вывода информации предопределяют область их использования в качестве специализированных вычислителей, включенных в контур управления объектом или процессом. Структурная организация, набор команд и аппаратурно-программные средства ввода/вывода информации микроконтроллеров лучше всего приспособлены для решения задач управления и регулирования в приборах, устройствах и системах автоматики, а не для решения задач обработки данных. Микроконтроллеры не являются машинами классического "фон- 4 неймановского" типа, так как физическая и логическая разделенность памяти программ и памяти данных исключает возможность модификации и/или замены (перегрузки) прикладных программ микроконтроллеров во время работы, что сильно затрудняет их использование в качестве универсальных средств обработки данных. Исходя из этих соображений, мы полагаем, что для всех приборов, отличающихся перечисленными признаками, наиболее точным является наименование МИКРОКОНТРОЛЛЕР (МК). В данном курсе в качестве базовых выбраны однокристальные микроконтроллеры, принадлежащие серии 1816. В состав этой серии входят два типа микроконтроллеров: КМ1816ВЕ48 и КМ1816ВЕ51, обозначаемые далее для краткости МК48 и МК51 соответственно (аналоги микроконтроллеров фирмы Intel i8048 и i8051). В предлагаемом курсе систематически излагаются основные вопросы проектирования цифровых устройств и систем на основе однокристальных 8-битовых микроконтроллеров. Дается описание структурной организации и систем команд МК48 и МК51; приводятся типовые процедуры управления объектами; излагается формализованная методика разработки цифровых устройств на основе микроконтроллеров и рассматриваются примеры процесса проектирования. Основное внимание в книге уделено обобщению опыта разработки цифровых устройств на микроконтроллерах и формализованной методике, регламентирующей последовательность действий при разработке прикладного программного обеспечения на самом сложном и слабо формализуемом этапе работы – «от постановки задачи к исходной программе». 1 Особенности проектирования микроконтроллерных устройств управления объектами 1.1 Введение в предметную область Простейший в серии 1816 микроконтроллер МК48 имеет на кристалле (в корпусе БИС) следующие аппаратурные средства: процессор разрядностью 1 байт; стираемое программируемое ПЗУ программ емкостью 1 Кбайт; ОЗУ данных емкостью 64 байта; программируемый 8-битнЫй таймер/счетчик; программируемые схемы ввода/вывода (27 линий); блок векторного прерывания от двух источников; генератор; схему синхронизации и управления. Значительно более сложный и развитый МК51 имеет в своем составе такие аппаратурные средства: процессор, в состав которого входят 1-байтное АЛУ и схемы аппаратурной реализации команд умножения и деления; стираемое ПЗУ программ емкостью 4 Кбайт, ОЗУ данных емкостью 128 байт; два 16-битных таймера/счетчика; программируемые схемы ввода/вывода (32 линии); блок двухуровневого векторного прерывания от пяти источников; асинхронный канал дуплексного последовательного ввода/вывода информации со скоростью до 375 кбит/с; генератор, схему синхронизации и управления. Структуры микроконтроллеров серии 1816 и их системы команд таковы, что в случае необходимости функционально-логические возможности контроллеров могут быть расширены. С использованием внешних дополнительных БИС постоянной и оперативной памяти адресное пространство МК может быть расширено, а путем подключения 5 различных интерфейсных БИС число линий связи МК с объектом управления может быть увеличено практически без ограничений. Микроконтроллеры серии 1816 требуют одного источника электропитания напряжением +5 В ± 10%, рассеивают мощность около 1,5 Вт и работают в диапазоне температур от 0 до 70 °С. По входам и выходам МК серии 1816 электрически совместимы с интегральными схемами ТТЛ. МК48 и МК51 имеют различные системы команд и, следовательно, не обладают свойством программной совместимости на уровне объектных кодов. При этом они программно совместимы по принципу "снизу вверх" (МК48 →МК51) на уровне исходных текстов программ, написанных на языке ассемблера. Таблица 1.1. Семейство МК серии 1816 Тип МК Емкость резидентной Емкость резидентной Частота памяти программ, Кбайт памяти данных, байт синхронизации, МГц КМ1816ВЕ48 КМ1816ВЕ49 КМ1816ВЕ35 КМ1816ВЕ51 КМ1816ВЕ31 СППЗУ 1 ПЗУ 2 СППЗУ 4 - 64 128 64 128 128 6 11 11/6 12 12 Микроконтроллер МК48 может работать в диапазоне частот синхронизации от 1 до 6 МГц, а минимальное время выполнения команды составляет 2,5 мкс. Микроконтроллер МК51 может работать в диапазоне частот от 1,2 до 12 МГц, при этом минимальный цикл выполнения команды равен 1 мкс, а быстродействие равно одному миллиону коротких операций в секунду. Из такой краткой характеристики однокристальных МК серии 1816 видно, что эти приборы обладают значительными функционально-логическими возможностями и представляют собой эффективное средство компьютеризации (автоматизации на основе применения средств и методов обработки данных и цифрового управления) разнообразных объектов и процессов. Семейство МК серии 1816 имеет в своем составе различные модификации, отличающиеся друг от друга признаками, которые перечислены в табл. 1.1. Анализ основных признаков МК серии 1816 показывает, что МК48 и МК51 целесообразно использовать на этапе опытно-конструкторской разработки и отладки систем, а также в малосерийных изделиях. Микроконтроллер МК49 имеет масочное ПЗУ программ, и поэтому его следует применять в крупносерийных изделиях. Микроконтроллеры, в которых нет резидентной памяти программ, используют, как правило, не в конечных изделиях, а в автономных отладочных устройствах и многофункциональных программируемых контроллерах, где в качестве памяти программ и данных используются внешние БИС и имеются средства загрузки программ. 1.2 Основные положения В устройствах управления объектами (контроллерах) на основе МК аппаратурные средства и программное обеспечение существуют в форме неделимого аппаратурнопрограммного комплекса. При проектировании контроллеров приходится решать одну из самых сложных задач разработки, а именно задачу оптимального распределения функций контроллера между аппаратурными средствами и программным обеспечением. Решение 6 этой задачи осложняется тем, что взаимосвязь и взаимовлияние аппаратурных средств и программного обеспечения в микропроцессорной технике претерпевают динамичные изменения. Если в начале развития МП-техники определяющим было правило, в соответствии с которым аппаратурные средства обеспечивают производительность, а программное обеспечение – дешевизну изделия, то в настоящее время это правило нуждается в серьезной корректировке. Так как МК представляет собой стандартный массовый (относительно недорогой) логический блок, конкретное назначение которого определяет пользователь с помощью программного обеспечения, то с ростом степени интеграции и, следовательно, функционально-логических возможностей МК резко понижается стоимость изделия в пересчете на выполняемую функцию, что в конечном итоге и обеспечивает достижение высоких технико-экономических показателей изделий на МК. При этом затраты на разработку программного обеспечения изделия в 2-10 раз превышают (за время жизни изделия) затраты на приобретение и изготовление аппаратурных средств. В настоящее время наибольшее распространение получил методологический прием, при котором весь цикл разработки контроллеров рассматривается как последовательность трех фаз проектирования: 1) анализа задачи и выбора (и/или разработки) аппаратурных средств контроллера; 2) разработки прикладного программного обеспечения; 3) комплексирования аппаратурных средств и программного обеспечения в прототипе контроллера и его отладки. Фаза разработки программного обеспечения, т.е. фаза получения прикладных программ, в свою очередь, разбивается на два различных этапа: 1) "от постановки задачи к исходной программе"; 2) "от исходной программы к объектному модулю". Этап разработки "от исходной программы к объектному модулю" имеет целью получение машинных кодов прикладных программ, работающих в МК. Этот этап разработки прикладного программного обеспечения легко поддается формализации и поддержан всей мощью системного программного обеспечения МК, направленного на автоматизацию процесса получения прикладных программ. В состав средств системного программного обеспечения входят трансляторы с различных алгоритмических языков высокого уровня, ассемблеры, редакторы текстов, программы-отладчики, программыдокументаторы и т.д. Наличие всех этих системных средств придает инженерной работе на этом этапе проектирования контроллеров характер ремесла, а не инженерного творчества. Так как в конечном изделии (контроллере) имеются только "голый" МК и средства его сопряжения с объектом, то выполнять отладку разрабатываемого прикладного программного обеспечения на нем невозможно (из-за отсутствия средств ввода, вывода, ОЗУ большой емкости и операционной системы), и, следовательно, разработчик вынужден обращаться к средствам вычислительной техники для выполнения всех формализуемых стадий разработки: трансляции, редактирования, отладки, загрузки объектных кодов в программируемую постоянную память МК. Попутно отметим, что системные средства автоматизации разработки прикладных программ МК на этапе "от исходной программы к объектному модулю" широко распространены и существуют в среде операционных систем персональных компьютеров. 7 Совсем по-другому выглядит инженерный труд на этапе разработки программного обеспечения «от постановки задачи к исходной программе», так как он практически не поддается формализации и, следовательно, не может быть автоматизирован. Проектная работа здесь носит творческий характер, изобилует решениями, имеющими «волевую» или «вкусовую» окраску, и решениями, продиктованными конъюнктурными соображениями. В силу перечисленных обстоятельств именно на этапе проектирования "от постановки задачи к исходной программе" разработчик сталкивается с наибольшим количеством трудностей. Качество получаемого прикладного программного обеспечения контроллера всецело зависит от уровня проектных решений, принятых на этапе разработки «от постановки задачи к исходной программе». Уровень проектных решений в свою очередь из-за отсутствия теории проектирования программируемых контроллеров определяется только опытом, квалификацией и интуицией разработчика. Однако накопленный опыт убеждает в том, что систематический подход к процессу разработки прикладных программ для контроллеров обеспечивает достижение хороших результатов даже начинающими разработчиками. 1.3 Структура МК-системы управления Типовая структура МК-системы управления показана на рис. 1.1 и состоит из объекта управления, микроконтроллера и аппаратуры их взаимной связи. Микроконтроллер путем периодического опроса осведомительных слов (ОС) генерирует в соответствии с алгоритмом управления последовательности управляющих слов (УС). Осведомительные слова это сигналы состояния объекта (СС), сформированные датчиками объекта управления, и флаги. Выходные сигналы датчиков вследствие их различной физической природы могут потребовать промежуточного преобразования на аналого-цифровых преобразователях (АЦП) или на схемах формирователей сигналов (ФС), которые чаще всего выполняют функции гальванической развязки и формирования уровней двоичных сигналов стандарта ТТЛ. Микроконтроллер с требуемой периодичностью обновляет управляющие слова на своих выходных портах. Некоторая часть управляющего слова Р и с . 1 . 1 – С т р у к т у р а М К -си с т ем ы интерпретируется как совокупность прямых двоичных у п р а в л е н и я о б ъ е к т о м сигналов управления (СУ), которые через схемы формирователей сигналов (усилители мощности, реле, оптроны и т.п.) поступают на исполнительные механизмы (ИМ) и устройства индикации. Другая часть управляющего слова представляет собой упакованные двоичные коды, которые через цифро-аналоговые преобразователи (ЦАП) воздействуют на исполнительные механизмы аналогового типа. Если объект управления использует цифровые датчики и цифровые исполнительные механизмы, то наличие ЦАП и АЦП в системе необязательно. 8 В состав аппаратуры связи, которая, как правило, строится ни интегральных схемах серии ТТЛ, входит регистр флагов, на котором фиксируется некоторое множество специфицируемых признаков, как объекта управления, так и процесса работы контроллера. Этот регистр флагов используется в качестве аппаратурного средства реализации механизма взаимной синхронизации относительно медленных и вероятностных процессов в объекте управления и быстрых процессов в контроллере. Регистр флагов доступен как контроллеру, так и датчикам. Вследствие этого он является удобным местом фиксации сигналов ГОТОВ/ОЖИДАНИЕ при передачах с квитированием или сигналов ЗАПРОС ПРЕРЫВАНИЯ/ПОДТВЕРЖДЕНИЕ при взаимодействии контроллера и объекта в режиме прерывания. Если МК-система имеет многоуровневую систему прерываний, то регистр флагов содержит схему упорядочивания приоритетов. Для аппаратурной реализации временных задержек, формирования сигналов требуемой частоты и скважности в состав аппаратуры связи включают программируемые интервальные таймеры в том случае, если их нет в составе МК или их число недостаточно. Законы функционирования МК-системы управления со структурой, показанной на рис. 1.1, всецело определяются прикладной программой, размещаемой в резидентной памяти программ МК. Иными словами, специализация контроллера типовой структуры на решение задачи управления конкретным объектом осуществляется путем разработки прикладных программ МК и аппаратуры связи МК с датчиками и исполнительными механизмами объекта. 1.4 Особенности разработки аппаратурных средств МК-систем Применение однокристальных МК в устройствах управления объектами привело к кардинальным изменениям в разработке аппаратурных средств устройств и систем. И дело здесь заключается в следующем. Микроконтроллер представляет собой логический автомат с высокой степенью детерминированности, который допускает очень немного вариантов его системного включения. Именно поэтому типовой состав аппаратурных средств ядра любой МК-системы (МК, ППЗУ, ОЗУ, интерфейсные БИС, схемы синхронизации и системного управления) оформляется конструктивно в виде одноплатных универсальных программируемых контроллеров, которые предназначены для встраи¬вания в контур управления объектом или процессом. На печатной плате такой МК-системы имеются гнезда для установки БИС пользователя На некоторых моделях таких плат имеется еще и так называемое «монтажное поле пользователя», на котором он имеет возможность ,смонтировать свои специфические схемы, такие как оптронные развязки, АЦП, ЦАП, реле и т.п. Кроме того, на плате МК-системы может быть размещен источник электропитания. Если разработчик положит в основу проектируемого изделия такой одноплатный контроллер, то он будет избавлен от необходимости разрабатывать и сопровождать конструкторской и эксплуатационной документацией самую сложную, центральную часть изделия. Как известно, вес документации на систему автоматического управления примерно на порядок превышает вес самой системы, а изготовление и согласование этой документации растягивается на годы. При использовании стандартного контроллера в качестве комплектующего системного элемента объем документации на аппаратурные средства изделия многократно сокращается и может содержать только 9 документацию на аппаратуру сопряжения ядра системы с датчиками и исполнительными механизмами объекта управления. В результате этих структурных сдвигов объем трудозатрат на разработку аппаратурных средств изделия постоянно уменьшается по отношению к суммарным затратам на разработку и отладку прикладного программного обеспечения. Объем проектной документации на аппаратурные средства изделия постоянно уменьшается из-за все более широкого применения в аппаратуре сопряжения интегральных ЦАП, АЦП и интерфейсных БИС. Кроме того, во множестве конкретных применений для реализации ядра системы оказывается достаточно средств, содержащихся в единственной БИС микроконтроллера. Объем документации на программное обеспечение изделия имеет устойчивую тенденцию роста из-за стремления разработчиков использовать все более совершенные и, следовательно, более сложные алгоритмы управления. В этих условиях основным проектным документом на изделие становится листинг (распечатка исходного текста и машинных кодов) прикладной программы МК. Таким образом, освященный традициями стереотип мышления, суть которого сводится к лозунгу «главное – это разработать аппаратуру, а программу потом «прилепим», оказывается не только неверным, но и гарантирует неудачу разработки. Появление однокристальных МК иллюстрирует тот факт, что все более сложные функционально насыщенные части аппаратурных средств контроллеров в процессе интеграции переходят из разряда подсистем в разряд комплектующих изделий. Так как эти комплектующие изделия являются сложно организованными приборами, функционирующими под управлением программ, то удельный вес прикладного программного обеспечения МК-систем имеет устойчивую тенденцию к увеличению, а удельный вес аппаратурных средств – к снижению. 1.5 Особенности разработки прикладного программного обеспечения МКсистем Как уже отмечалось, при проектировании МК-систем прежде всего возникает необходимость решения задачи об оптимальном (по ряду критериев) распределении функций между аппаратурными средствами и программным обеспечением. При этом в самом общем случае необходимо исходить из того, что использование специализированных интерфейсных БИС упрощает разработку и обеспечивает высокое быстродействие системы в целом, но сопряжено с увеличением стоимости, объема и потребляемой мощности больший удельный вес программного обеспечения позволяет сократить число компонентов системы и стоимость ее аппаратурных средств, но это приводит к снижению быстродействия и увеличению затрат и сроков разработки и отладки прикладных программ. При этом еще может несколько увеличиться и число БИС внешней памяти МК-системы. Решение о выборе того или иного варианта распределения функций между аппаратурными и программными средствами системы принимается в зависимости от тиражности изделия, ограничений по стоимости, объему, потребляемой мощности и быстродействию изделия. Следует отметить, во время жизни изделия, в котором большая часть функций реализована в программном обеспечении, многократно возрастает за счет того, что срок «морального старения» изделия может быть существенно отодвинут. Программная реализация основных элементов алгоритма работы контроллера 10 допускает его модификацию относительно простыми средствами (путем перепрограммирования), в то время как возможность изменения уже существующей фиксации элементов алгоритма в аппаратуре контроллера практически отсутствует. Опыт проектирования МК-систем свидетельствует, что имеет место неподготовленность значительной части потенциальных пользователей МК к переходу на принципиально новую элементную базу, отсутствие навыков программной реализации тех функций, которые в данной предметной области профессиональных знаний, в конкретной прикладной задаче традиционно выполнялись на основе аппаратных средств. Отчасти такое положение объясняется отсутствием общей теории проектирования программируемых контроллеров, и это в свою очередь приводит к необходимости использовать программистов высокой квалификации для программирования и сопровождения простейших программ. Довольно распространенная практика работы «тандемом», когда над разработкой прикладных программ для МК совместно работают профессиональный программист и непрограммирующий профессионал, т.е. специалист, владеющий «тайнами ремесла» в конкретной предметной области, имеет серьезным недостатком то, что при попытках изложить программисту смысл прикладной задачи этот смысл зачастую ускользает. В результате такой практики формализуются и программируются наиболее очевидные, проще говоря – тривиальные, прикладные задачи, а наиболее профессионально интересные остаются вне пределов досягаемости. Видимо, это объясняется тем, что время, необходимое на формализацию профессиональных знаний при работе «тандемом», нередко составляет до 70% всего времени, требующегося для получения законченного микроконтроллерного изделия. Работа «тандемом» в огромном большинстве случаев приводит к тому, что конечный пользователь МК-системы отказывается от своих ранее сформулированных требований на программу и утверждает, что «имелось в виду нечто похожее, но не это». Такое положение, скорее всего, объясняется тем, что начало процесса программирования задач, которые ставит конечный пользователь, немедленно изменяет его собственное представление об этих задачах. Отметим попутно, что до 60% ошибок прикладных программ МП-контроллеров вызваны не ошибками в машинных кодах, не логическими ошибками в программе, а ошибочной формализацией прикладной задачи. Трудоемкость устранения этих ошибок, наработанных «тандемом» (профессиональный программист − непрограммирующий профессионал), столь велика, что зачастую вынуждает приступить к разработке прикладной программы МК-системы заново и с иными средствами. Ресурсы, затрачиваемые собственно на программирование, т. е. на получение машинных кодов, столь незначительны по сравнению с ресурсами, затрачиваемыми на процесс формализации прикладной задачи и разработку алгоритма, что следует говорить не о проблеме разработки прикладного программного обеспечения МК-систем, а о проблеме формализации профессиональных знаний конечного пользователя микроконтроллерных изделий. Подобно тому как появление микропроцессорных и микроконтроллерных средств привело к продолжающемуся процессу перемещения основного объема затрат на проектирование контроллеров из сферы разработки аппаратных средств в сферу разработки программного обеспечения, так и стремительное расширение возможных областей применения МК приводит к перемещению центра тяжести усилий по разработке 11 прикладного программного обеспечения с фазы реализации на фазу постановки и формализации задачи. Сложившаяся к настоящему времени структура трудозатрат в разработке МК-систем позволяет выделить три основные стадии проектирования прикладного программного обеспечения: 1) анализ предметной области с целью определения задач, автоматизация решения которых на основе МК обещает наибольший эффект; 2) разработку алгоритма решения поставленной задачи (или комплекса задач); 3) собственно программирование, или, точнее, сопровождение разработки прикладных программ системными средствами поддержки проектирования. Распределение трудозатрат в процентах по этим трем стадиям выглядит примерно так: 40-50-10. Это означает, что если первая стадия работы уже выполнена с участием специалиста по системному анализу, т. е. если задача уже поставлена, то наиболее сложной, слабо формализуемой (из-за тесной связанности с областью приложения будущей программы) и трудоемкой стадией работы является стадия анализа задачи, ее инженерной интерпретации и разработки «функциональной спецификации» программы для формирования алгоритма решения поставленной задачи. Вся последующая работа по преобразованию алгоритма в машинные коды, т. е. создание прикладного программного обеспечения, представляет собой просто совокупность процессов трансляции. Эти процессы хорошо формализуемы, и их реализация опирается на уже существующие системные средства поддержки (трансляторы, редакторы, отладчики). Именно вследствие этого собственно программирование требует только около 10% общих трудозатрат. Очевидно, что основную творческую нагрузку при разработке прикладных программ для МК-систем несет не профессиональный программист, а непрограммирующий профессионал – специалист в данной области знаний. Если этот специалист овладеет основами программирования и станет программирующим профессионалом, то можно ожидать, что процесс формализации его профессиональных знаний будет протекать много результативнее, чем при «игре в испорченный телефон», т. е. при алгоритмизации прикладной задачи «тандемом». Ориентация на разработку прикладных программ для МК-систем силами программирующих профессионалов получает распространение еще и потому, что в условиях быстро дешевеющей памяти изменились стиль и технология разработки программ. Экономят теперь уже не памяти МК-системы, а время разработчика программного обеспечения, т.е. сокращают сроки разработки изделия. Вследствие этого прикладные программы, созданные программирующим профессионалом, с точки зрения профессионального программиста зачастую выглядят неуклюжими и неизящными. Но зато они обладают одним общим достоинством – они действительно работают в контроллерах, чего нельзя сказать о девяти из каждых десяти изящных программ, созданных профессиональным программистом, не могущим (по определению) быть профессионалом и в каждой конкретной предметной области знаний. С учетом масштабов выпуска и перспектив применения средств микроконтроллерной техники выход из создавшегося положения видится в том, чтобы побудить специалистов, работающих в своих предметных областях знаний, взять дело разработки прикладного программного обеспечения МК-систем в свои руки полностью 12 (при некоторой технической поддержке профессиональных программистов). Для этого нужны не очень значительные усилия и первоначальные затраты: надо прежде всего решиться взять всю полноту ответственности за программное обеспечение на свои плечи, надо овладеть одним из языков программирования и освоить «кухню» программной реализации ограниченного множества наиболее употребимых процедур и функций данной предметной области. Вслед за этим потребуется, конечно, выработать навыки алгоритмизации более сложных процедур и функций объекта автоматизации. Однако эта задача относительно легко решается с использованием метода декомпозиции (разбиения сложной функции на множество простых взаимосвязанных функций). К подобной постановке вопроса организации разработки прикладного программного обеспечения для МК-систем приводит и вполне очевидное соображение о том, что быстрый рост числа выпускаемых МК и областей их проблемных применений не может более сопровождаться соответствующим ростом числа программистов. 2 Структурная организация и система команд микроконтроллера 1816ВЕ48/i8048 2.1 Функциональное назначение выводов корпуса МК48 Микроконтроллер конструктивно выполнен в корпусе БИС с 40 внешними выводами. Все выводы электрически совместимы с элементами ТТЛ: входы представляют собой единичную нагрузку, а выходы могут быть нагружены одной ТТЛ-нагрузкой. Цоколевка корпуса МК48 показана на рис. 2.1. Ниже приводятся символические имена выводов корпуса и даются краткие пояснения их назначения: ОБЩ (VSS) - потенциал земли; +5В.ОСН (VCC) - основное напряжение питания +5 В; подается во время работы и при программировании РПП; +5В.ДОП (VCC) - дополнительное напряжение питания +5 В; во время работы обеспечивает электропитание только для РПД; на этот вывод при программировании РПП подается уровень +25 В; ПР0Г (PROG) - вход для подачи программирующего импульса +25 В при загрузке РПП; выход стробирующего сигнала для БИС расширителя ввода/ вывода; X1 - вход для подключения вывода кварцевого резонатора или вход для сигнала от внешнего источника синхронизации; X2 - вход для подключения второго вывода резонатора; СБР/ (RST/) - вход сигнала общего сброса при запуске МК; сигнал 0 при программировании и проверке РПП; ШАГ/ (SS/) - сигнал, который совместно с сигналом САВП позволяет при отладке выполнять программу с остановом после исполнения очередной команды; РВПП/ (PSEN/) - разрешение внешней памяти программ; сигнал выдается только при обращении к внешней памяти программ; 13 САВП (ALE) ЧТ/ (RD/) ЗП/ (WR/) Т0 Tl ЗПР/ (INT/) ОРПП (EA) Порт 1 (P1) Порт 2 (Р2) Рис. 2.1 – Цоколевка корпуса МК48 - строб адреса внешней памяти; сигнал используется для приема и фиксации адреса внешне памяти на внешнем регистре; сигнал является идентификатором машинного цикла, так как всегда выводится из МК с частотой, в 5 раз меньшей основной частоты синхронизации; - стробирующий сигнал при чтении памяти данных или УВВ; - стробирующий сигнал при записи во внешнюю память данных или УВВ; - входной сигнал, опрашиваемый по командам условного перехода JT0 и JNT0; кроме того, используется при программировании РПП; может быть использован для вывода сигнала синхронизации после команды ENT0 CLK; - входной сигнал, опрашиваемый командами условного перехода JT1 и JNT1; кроме того, используется в качестве входа внутреннего счетчика внешних событий после исполнения команды STRT CNT; - сигнал запроса прерывания от внешнего источника; вызывает подпрограмму обслуживания прерывания, если прерывание разрешено ранее по команде EN I; сигнал СБР/ запрещает прерывания; - отключение РПП; уровень 1 на этом входе заставляет МК выполнять выборку команд только из внешней памяти программ; используется при тестировании прикладной программы и отладке МК; 25 В при программировании РПП; - 8-битовый квазидвунаправленный порт ввода/вывода информации; каждый разряд порта может быть запрограммирован на ввод или вывод; - 8-битный квазидвунаправленный порт ввода/вывода информации; каждый разряд порта может быть запрограммирован на ввод или вывод; биты Р20-3 во время чтения из ВПП содержат старшие четыре бита счетчика команд СК8-11; используются для подключения БИС расширителя ввода/вывода (порты Р4-Р7); 14 Порт BUS (DB) - 8-битный двунаправленный порт ввода/вывода информации; может быть отключен от нагрузки; может выполнять прием и выдачу байтов синхронно с сигналами ЧТ/ и ЗП/; при обращении к ВПП содержит 8 младших бит счетчика команд и затем по сигналу РВПП принимает выбранную команду; при обращении к ВПД содержит младшие 8 бит адреса синхронна с сигналом САВП и байт данных синхронно с сигналами ЧТ или ЗП. 2.2 Структурная схема МК48 На рис. 2.2. показана структурная схема МК48. Рис. 2.2 – Структурная схема МК48 Основу структуре МК образует внутренняя двунаправленная 8-битная шина, которая свя зывает между собой все устройства БИС: арифметическо-логическое устройство (АЛУ), устройство управления, память и порты ввода/вы вода информации. Рассмотрим последовательно основные элементы структуры и особенности организации МК. 2.2.1 Арифметико-логическое устройство В состав АЛУ входят следующие блоки: комбинационная схема обработки байтов, регистры Т, регистр-аккумулятор А, схема десятичной корректора и схема формирования признаков. Аккумулятор используется в качестве регистра операнда и регистра 15 результата. Регистр временного хранения операнда Т1 программно недоступен и используется для временного хранения второго операнда при выполнении двухоперандных команд. Комбинационная схема АЛУ может выполнять следующие операции: сложение байтов с переносом или без него; логические операции И, ИЛИ и исключающее ИЛИ; инкремент, декремент, инверсию; циклический сдвиг влево, вправо через (или минуя) флаг переноса, обмен тетрад в байте; десятичную коррекцию содержимого аккумулятора. При выполнении операций обработки данных в АЛУ вырабатываются флаги (признаки), которые (за исключением флага переноса С) формируются на комбинационной схеме и не фиксируются на триггерах. К таким флагам относятся флаг нулевого содержимого аккумулятора и флаг наличия единицы в селектируемом бите аккумулятора. Логика условных переходов по указанным флагам позволяет выполнять команды передачи управления (JZ, JNZ, JB0-JB7) без их фиксации на триггерах. Флаги переноса и вспомогательного переноса (перенос из младшей тетрады в старшую) фиксируются на триггерах, входящих в состав регистра слова состояния программы (ССП). Формат ССП показан на рис. 2.3. Кроме перечисленных признаков логика условных переходов МК оперирует флагами F0 и F1, функциональное назначение которых определяется разработчиком; флагом переполнения таймера TF, сигналами на входах Т0 и Т1. Программистом могут быть также использованы флаги рабочего банка регистров BS и выбранного банка внешней памяти программ MB. Кроме того, логикой переходов после окончания каждого машинного цикла опрашивается еще один флаг, а именно флаг разрешения/запрета прерываний. 2.2.2 Память микроконтроллера Память программ. Память программ и память данных в МК48 физически и логически разделены. Память программ реализована в резидентном СППЗУ емкостью 1 Кбайт. Максимальное адресное пространство, отводимое для программ, составляет 4 Кбайт. Счетчик команд (СК) содержит 12 бит, но инкрементируются в процессе счета только младшие 11 бит. Поэтому счетчик команд из предельного состояния 7FFH (если только по этому адресу не расположена команда передачи управления) перейдет в состояние 000Н. Состояние старшего бита счетчика команд может быть изменено специальными командами (SEL MB0, SEL МВ1). Подобный режим работы счетчика команд позволяет создать два банка памяти емкостью по 2 Кбайт каждый. Карта адресов памяти программ показана на рис. 2.4. В резидентной памяти программ имеется три специализированных адреса:  адрес 0, к которому передается управление сразу после окончания сигнала СБР/; по этому адресу должна находиться команда безусловного перехода к началу программы;  адрес 3, по которому расположен вектор прерывания от внешнего источника;  адрес 7, по которому расположены вектор прерывания от таймера или начальная команда подпрограммы обслуживания прерывания по признаку переполнения таймера/счетчика. Память программ разделяется не только на банки емкостью 2 Кбайт, но и на страницы по 256 байт в каждой. В командах условного перехода задается 8-битный адрес 16 передачи управления в пределах текущей страницы. В случае, когда в программе необходимо иметь много переходов по условию, из-за небольшого размера страницы возникает проблема размещения соответствующих программных модулей в границах страницы. Команда вызова подпрограмм модифицирует 11 бит счетчика команд, обеспечивая тем самым межстраничные переходы в пределах выбранного банка памяти программ. Рис. 2.4. Карта адресов памяти программ Рис. 2.5. Карта адресов РПД В МК-системе, работающей с внешней памятью программ, возникает проблема размещения подпрограмм в двух банках памяти. Проблема эта связана с тем, что МК не имеет средств считывания и анализа флага MB, равного содержимому старшего бита счетчика команд СК11. Поэтому в каждый текущий момент исполнения программы, состоящей из потока вызовов подпрограмм, нет возможности определения номера банка памяти, из которого осуществляется выборка. Так как переходы между банками выполняются только по командам SEL MB, необходимо следить за тем, чтобы подпрограммы, взаимно вызывающие друг друга, располагались в пределах одного банка памяти. В противном случае возникает необходимость модификации признака MB в вызываемой подпрограмме и восстановления его при возврате в вызывавшую подпрограмму. Но если вызов такой подпрограммы носит условный характер, то проблема восстановления может оказаться неразрешимой. При обработке запросов прерываний в МК48 старший бит счетчика команд CK11 принудительно устанавливается в 0. Это приводит к необходимости подпрограмму обслуживания прерывания и все подпрограммы, вызываемые ею, размещать в пределах банка памяти 0. Память данных. Резидентная память данных емкостью 64 байта имеет в своем составе два банка рабочих регистров 0-7 и 24-31 по восемь регистров в каждом. Выбор одного из банков регистров выполняется по команде SEL RB. Рабочие регистры доступны по командам с прямой адресацией, а все ячейки РПД доступны по командам с косвенной 17 адресацией. В качестве регистров косвенного адреса используются регистры R0, Rl и R0*, R1* (рис. 2.5.) Ячейки РПД с адресами 8-23 адресуются указателем стека из ССП и могут быть использованы в качестве 8-уровневого стека. В случае, ясли уровень вложенности подпрограмм меньше восьми, незадействованные в стеке ячейки могут использоваться как ячейки РПД. При переполнении стека регистр-указатель стека, построенный на основе 3битового счетчика, переходит из состояния 7 в состояние 0. Малая емкость стека ограничивает число возможных внешних источников прерывания в МК-системе. МК48 не имеет команд загрузки байта в стек или его извлечения из стека, и в нем фиксируются только содержимое счетчика команд и старшая тетрада ССП (флаги). В силу этого разработчику необходимо следить за тем, чтобы вложенные подпрограммы не использовали одни и те же рабочие регистры. Практически все команды с обращением к РПД оперируют с одним байтом. Однако по командам вызова и возврата осуществляется доступ к двухбайтным словам. В памяти данных слова хранятся так, что старший байт слова располагается в ячейке с большим адресом. Отметим, что в памяти программ порядок расположения байтов по старшинству при хранении двухбайтных слов обратный. В МК-системах, где используется внешнее ОЗУ, через регистры косвенного адреса R0 R1 возможен доступ к ВПД емкостью 256 байт. 2.2.3 Организация ввода/вывода информации Для связи МК48 с объектом управления, для ввода и вывода информации используются 27 линий. Эти линии сгруппированы в три порта по восемь линий в каждом и могут быть использованы для вывода, ввода или для ввода/вывода через двунаправленные линии. Кроме портов ввода/вывода имеются три линии, сигналы на которых могут изменять ход программы по командам условного перехода: линия ЗПР/ используется для ввода в МК сигнала запроса прерывания от внешнего источника; линия Т0 используется для ввода тестирующего сигнала от двоичного датчика объекта управления; кроме того, под управлением программы (по команде ENT0 CLK) по этой линии из МК может выдаваться сигнал синхронизации; линия Т1 используется для ввода тестирующего сигнала или в качестве входа счетчика событий (по команде STRT CNT). Порты ввода/вывода Р1 и Р2. Специальная схемотехника портов Р1 и Р2, которая получила название квазидвунаправленной, позволяет выполнять ввод, вывод или ввод/вывод. Каждая линия портов Р1 и Р2 может быть программным путем настроена на ввод, вывод или на работу с двунаправленной линией передачи. Для того чтобы настроить некоторую линию на режим ввода в МК, необходимо перед этим в буферный триггер этой линии записать 1. Сигнал СБР автоматически записывает во все линии портов Р1 и Р2 сигнал 1. Квазидвунаправленная структура портов Р1 и Р2 для программиста МК 1816 специфична тем, что в процессе ввода информации выполняется операция логического И над вводимыми данными и текущими (последними) выведенными данными. Квазидвунаправленные схемы портов Р1 и Р2 и команды логических операций ANL и ORL предоставляют разработчику эффективное средство маскирования для обработки однобитных входных и выходных переменных. 18 В системе команд МК есть команды, которые позволяют выполнять запись нулей и единиц в любой разряд или группу разрядов порта, но так как в этих командах маска задается непосредственным операндом, то необходимо знать распределение сбрасываемых и устанавливаемых линий на этапе разработки прикладной программы. В том случае, если маска вычисляется программой и заранее не известна, в ОЗУ необходимо иметь копию состояния порта вывода. Эта копия по командам логических операций объединяется с вычисляемой маской в аккумуляторе и затем загружается в порт. Необходимость этой процедуры вызвана тем, что в МК отсутствует возможность выполнить операцию чтения значений портов Р1 и Р2 для определения прежнего состояния порта вывода. Порт Р2 отличается от порта Р1 тем, что его младшие четыре бита могут быть использованы для расширения МК-системы по вводу/выводу. Через младшую тетраду порта Р2 по специальным командам обращения возможен доступ к четырем внешним четырехбитовым портам ввода/вывода Р4-Р7. Работа этих внешних портов синхронизируется сигналом ПРОГ. Порт ввода/вывода BUS представляет собой двунаправленный буфер с тремя состояниями и предназначен для побайтного ввода, вывода или ввода/вывода информации. Если порт BUS используется для двунаправленных передач, то обмен информацией через него выполняется по командам MOVX. При выводе байта генерируется стробирующий сигнал ЗП, а выводимый байт фиксируется в буферном регистре. При вводе байта генерируется стробирующий сигнал ЧТ/, но вводимый байт в буферном регистре не фиксируется. В отсутствие передач порт BUS по своим выходам находится в высокоимпедансном состоянии. Если порт BUS используется как однонаправленный, то вывод через него выполняется по команде OUTL, а ввод — по команде INS. Вводимые и выводимые через порт BUS байты можно маскировать с помощью команд ORL и ANL, что позволяет выделять и обрабатывать в байте отдельный бит или группу бит. В МК-системах простой конфигурации, когда порт BUS не используется в качестве порта-расширителя системы, обмен выполняется по командам INS, OUTL и MOVX. Возможно попеременное использование команд OUTL и MOVX. Однако при этом необходимо помнить, что выводимый по команде OUTL байт фиксируется в буферном регистре порта BUS, а команда MOVX уничтожает содержимое буферного регистра порта BUS. (Команда INS не уничтожает содержимое буферного регистра порта.) В МКсистемах, имеющих внешнюю память программ, порт BUS используется для выдачи адреса внешней памяти и для приема команды из внешней памяти программ. Следовательно, в таких системах использование команды OUTL лишено смысла. 2.2.4 Устройство управления микроконтроллера Устройство управления МК совместно с логической схемой переходов В каждом цикле команды формирует последовательность сигналов, управляющих функциями всех блоков МК и системой их взаимосвязи. Рассмотрение МК и особенностей реализации тех или иных процедур удобно выполнить путем анализа работы отдельных блоков МК в различных режимах его работы. 19 Синхронизация МК. Опорную частоту синхронизации определяет или кварцевый резонатор, подключаемый к выводам XI и Х2, или LC-цепь. X1 является входом, а Х2 — выходом генератора, способного работать в диапазоне частот от 1 до 6 МГц. На вход X1 может подаваться сигнал от источника внешней синхронизации. Варианты схем синхронизации МК показаны на рис. 2.6. В состав генератора МК входят два счетчика с модулями пересчета 3 и 5. Первый используется для формирования сигнала системной синхронизации СС (0,5 мкс). Этот же сигнал поступает на счетчик машинных циклов, на выходе которого через каждые пять сигналов синхронизации формируется сигнал САВП (2,5 мкс), идентифицирующий машинный цикл и используемый в расширенных МКсистемах для стробирования адреса внешней памяти. Рис. 2.6. Варианты схем синхронизации МК48 Рис. 2.7. Схема начальной установки МК48 Системный сброс. В обслуживаемых МК-системах для инициализации используется кнопка СБРОС, которая заземляет соответствующий вход МК. В необслуживаемых МК-системах к входу СБР подсоединяется конденсатор емкостью 1 мкФ, что обеспечивает подачу сигнала, близкого к потенциалу земли, длительностью не менее 50 мс после того, как напряжение электропитания установится (рис. 2.7). Сигнал СБР/ производит следующие действия: сбрасывает счетчик команд и указатель стека; устанавливает порт BUS в высокоимпедансное состояние, а порты Р1 и Р2 — на режим ввода; выбирает банк регистров 0 и банк памяти 0; запрещает прерывания; останавливает таймер и выдачу синхросигнала на вывод Т0; сбрасывает флаг переполнения таймера TF и флаги пользователя F0 и F1. Логика условных переходов. Логическая схема условных переходов МК позволяет программе проверять не только признаки, но и условия, внешние по отношению к МК. По командам условного перехода в случае удовлетворения проверяемого условия в счетчик команд (биты 0-7) из второго байта команды загружается адрес перехода. Логика переходов МК оперирует с набором условий, перечисляемых в табл. 2.1. Режим прерывания. Линия запроса прерывания от внешнего источника ЗПР/ проверяется каждый машинный цикл во время действия сигнала САВП, но передача управления ячейке 3, где расположена команда JMP, выполняется только по завершению цикла команды. При обработке прерывания, как и при вызове подпрограммы, содержимое счетчика команд и старшей тетрады ССП сохраняется в стеке. К входу ЗПР/ микроконтроллера через монтажное ИЛИ от схем с открытым коллектором могут быть подключены несколько источников прерывания. После распознавания прерывания все последующие запросы прерывания игнорируются до тех пор, пока по команде возврата 20 RETR вновь будет разрешена работа логики прерываний. Режим прерываний может быть запрещен или разрешен программой по командам DIS I и EN I. Сигнал ЗПР/ должен быть снят внешним устройством перед окончанием подпрограммы обслуживания, т. е. до исполнения команды RETR. В том случае, если внешнее устройство не сбрасывает свой флаг запроса прерываний при обращении МК к его буферному регистру, одна из выходных линий МК используется подпрограммой обслуживания прерывания для сброса этого флага во внешнем устройстве. Так как вход ЗПР/ может быть проверен по команде условного перехода JNI, то при запрещенном режиме прерывания вход ЗПР/ может быть использован в качестве дополнительного тестирующего входа подобно входам Т0 и Т1. Т а б л и ц а 2.1 – Условия переходов по программе . Устройство Условие перехода инверсное Аккумулятор Выбранный бит аккумулятора Флаг переноса С Флаги пользователя F0 и F1 Флаг переполнения таймера TF Тестовые входы (ТО, Т1) Вход запроса прерывания ЗПР Не все нули прямое Все нули 1 1 1 1 1 - При необходимости в МК можно создать двухуровневую систему прерываний. Для этого надо разрешить прерывания от таймера, загрузить и него число 0FFH и перевести в режим подсчета внешних событий, фиксируемых на входе Т1. Переход сигнала на входе Т1 из состояния 1 и состояние 0 приведет к прерыванию по вектору в ячейке 7. В случае одновременного запроса прерываний от внешнего источника и запроса in флага переполнения таймера приоритет остается за источником, воздействующим на вход ЗПР/. При входе в подпрограммы обслуживания прерываний старший бит счетчика команд CK11 принудительно устанавливается в нуль. Следовательно, вся процедура обработки прерывания должна быть размещена банке памяти 0. Таймер/счетчик. Внутренний 8-битовый двоичный суммирующий счетчик может быть использован для формирования временных задержек и для подсчета внешних событий. Содержимое таймера/счетчика (Т/С) можно прочитать (MOV А, Т) или изменить (MOV Т, А). Две команды STRT T и STRT CNT настраивают и запускают таймер/счетчик в режиме таймера или в режиме счетчика событий соответственно. Остановить работу (но не сбросить содержимое) таймера/счетчика можно или командой STOP TCNT, или сигналом системного сброса СБР/. Из максимального состояния FFH таймер/счетчик переходит в начальное состояние 00Н. При этом устанавливается в «1» флаг переполнения, который может вызвать прерывание, если оно разрешено командой EN TCNTI. Прерывание от таймера/счетчика может быть запрещено командой DIS TCNTI, но при этом флаг переполнения может быть опрошен по команде условного перехода JTF. Выполнение команды JTF, как и переход к подпрограмме обработки прерывания по вектору с адресом 7, сбрасывает флаг переполнения таймера/счетчика. В режиме таймера на вход таймера/счетчика через делитель .частоты па 32 поступают основные синхросигналы машинного цикла СВАП (400 КГц), и счетчик увеличивает свое состояние на 1 через каждые 80 мкс (12,5 КГц). Путем программной 21 установки таймера/счетчика в исходное состояние и анализа флага переполнения могут быть реализованы различные временные задержки, лежащие в диапазоне 80 мкс до 20,48 мс. Временные задержки, превышающие по длительности 20 мс (256 состояний счетчика), могут быть получены накоплением переполнений в рабочем регистре под управлением программы. В режиме счетчика событий внутренний счетчик увеличивает свое состояние на 1 каждый раз, когда сигнал на входе Т1 переходит из состояния «1» в состояние «0». Минимально возможное время между двумя входными сигналами равно 7,5 мкс (3 машинных цикла при использовании резонатора 6 МГц). Минимальная длительность единичного сигнала на входе Т1 составляет 0,5 мкс. 2.3 Система команд МК48 2.3.1 Общие сведения о системе команд Система команд МК48 включает в себя 96 основных команд и ориентирована на реализацию процедур управления. Все команды имеют формат один или два байта (70% команд однобайтные). Время выполнения команд составляет 2,5 или 5,0 мкс [один или два машинных цикла (МЦ) соответственно] при тактовой частоте 6,0 МГц. Большинство команд выполняется за один машинный цикл. За два машинных цикла выполняются команды с непосредственным операндом, ввода/вывода и передачи управления. Микроконтроллер оперирует с командами четырех типов (рис. 2.8). В МК48 используются четыре способа адресации: прямая, непосредственная, косвенная и неявная. Рис. 2.8. Типы команд МК48 Все множество команд можно разбить на пять групп по функциональному признаку: команды пересылки данных, арифметических операций, логических операций, передачи управления и управления режимами работы МК. К достоинствам системы команд МК48 можно отнести: эффективный ввод/вывод, включая маскирование и возможность управления отдельными битами портов; возможность ветвления по значению отдельных бит; возможность обработки как двоичных, так и десятичных двоично-кодированных чисел. При выполнении команд могут использоваться значения отдельных флагов, входящих в ССП, и флагов пользователя. Все команды, в результате выполнения которых модифицируются флаги, перечислены в табл. 2.2. 22 Т а б л и ц а 2. 2 – Команды, модифицирующие флаги Команды Флаги Команды Флаги ADD, ADDС С, АС JTF TF = 0 CLR C С=0 MOV PSW, А C, AC, F0, BS CPL C С RETR С, AC, F0, BS МП 1" F0 = 0 RLC А С Ilk м F1 = 0 RRC А С СИ 1 п F0 1 Н II F1 SEL МВ0, SEL МВ1 DBF НА Л С, АС SEL RB0, SEL RB1 BS Ниже приводится краткое описание команд МК48, сгруппированных по функциональному признаку. При описании команд используются мнемокоды языка ассемблера МК48, а операции, выполняемые по командам, описываются на языке микрооператоров с использованием символических имен и сокращений, которые перечисляются в списке сокращений. 2.3.2 Группа команд пересылки данных Данная группа состоит из 24 команд (табл. 2.3). Все команды (кроме MOV PSW, А) не оказывают воздействия на флаги. Команды пересылки данных внутри МК выполняются за один машинный цикл, обмен с внешней памятью и портами требует двух машинных циклов. Структура информационных связей. На рис. 2.9 представлен граф возможных пересылок, который иллюстрирует структуру информационных связей МК48. Можно выделить девять типов операндов, между которыми наполняется информационный обмен. Операнды, участвующие в операциях пересылки, различаются по месту расположения и способу адресации. К операндам относятся: аккумулятор, регистры общего назначения, ССП, таймер, порты, непосредственный операнд, внешняя и резидентная память данных и память программ (ПП). Аккумулятор является как бы «почтовым ящиком», через который остальные устройства (операнды) могут обмениваться данными. К памяти программ существует только односторонний доступ для чтения. Форматы данных. Большинство команд выполняет пересылку 8-битовых (1байтовых) операндов. Существуют также несколько команд, оперирующих с 4-битовыми операндами (тетрадами). Команды пересылки тетрад используются при обращении к 4битовым портам внешней схемы расширителя ввода/вывода (Р4-Р7). Режимы передачи данных. В МК48 возможна передача данных в двух режимах: пересылки (загрузки) и обмена. Пересылка предполагает передачу данных в направлении от источника к приемнику. При этом источник не изменяет своего содержимого. Обмен предполагает одновременную передачу данных в двух направлениях: в результате операции обмена изменяются значения обоих операндов, Рис. 2.9. Граф пересылок данных участвующих в операции. 23 Таблица 2.3 – Группа команд пересылки данных (Т - тип команды, Б - формат в байтах, Ц - число машинных циклов) Название команды Мнемокод КОП T Б Ц Операция (A) (Rn) (A) ((Ri)) (A) #d (Rn)  (A) (Rn)  #d ((Ri)) (A) ((Ri))#d (A) (PSW) (PSW) (A) (A)  (T) (T)  (A) (A)  ((Ri)) ((Ri))  (A) (PC0_7)  (A) (A) ((PC)) (PC0-7)  (A) (PC8_11)=0011 (A)  ((PC)) (A) ↔ (Rn) (A) ↔ ((Ri)) (A0-3) ↔ ((Ri)(0-3) (A)  (Pp) (A)  (BUS) (PP)  (A) (BUS)  (A) (А0-3)  (Pp) (A4-7)  0000 (PP)  (A0-3) Пересылка регистра в аккумулятор Пересылка байта из РПД в аккумулятор Пересылка непосредственного операнда в аккумулятор Пересылка аккумулятора в регистр Пересылка непосредственного операнда в регистр Пересылка аккумулятора в РПД Пересылка непосредственного операнда в РПД Пересылка ССП в аккумулятор Пересылка аккумулятора в ССП Пересылка содержимого таймера/счетчика в аккумулятор Пересылка аккумулятора в таймер/счетчик Пересылка байта из ВПД в аккумулятор Пересылка аккумулятора в ВПД Пересылка байта из текущей страницы программной памяти в аккумулятор Пересылка байта из третьей страницы программной памяти в аккумулятор MOV A, Rn MOV A, @Ri MOV A,*d MOV Rn, A MOV Rn, #d MOV @Ri, A MOV @Ri, * d MOV A.PSW MOV PSW.A MOV A, T MOV T, A MOVX A, @Ri MOVX @Ri, A MOVP3 A, @A 11111rrr 1111000i 00100011 10101rrr 10111rrг L0l0000i 10110001 11000111 11010111 01000010 01100010 10000001 L00l000i 10100011 1 1 2 1 2 1 2 1 1 1 1 1 1 1 1 1 2 1 2 1 2 1 1 1 1 1 1 1 1 1 2 1 2 1 2 1 1 1 1 2 2 2 MOVP3 A,@A 11100011 1 1 2 Обмен регистра с аккумулятором Обмен аккумулятора с РПД Обмен младших тетрад аккумулятора и байта РПД Пересылка данных из порта Рр (р =1,2) в аккумулятор Стробируемый ввод данных из порта BUS Пересылка аккумулятора в порт Рр (р = 1,2) Стробируемый вывод данных из аккумулятора в порт BUS Ввод тетрады из порта Рр (р = 4 - 7) схемы расширителя XCH A, Rn XCH A, @Ri XCHD A, @Ri IN A, Pp INS A, BUS OUTL Рр, A OUTL BUS, A MOVD A,Pp 00101rrr 0010000i 0011000i 000010pp 00001000 001110pp 00000010 000011pp 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 Вывод тетрады в порт Рр (р = 4 - 7) схемы расширителя MOVD Pp,A 001111pp 1 1 2 Способы адресации. Для обращения к данным используются четыре способа адресации: 1) прямая, когда адрес операнда содержится в теле самой команды, например Mov А,RN ; (A)  (RN) . Номер регистра, пересылаемого в аккумулятор, указывается в трех младших битах кода операции (КОП); 2) непосредственная, когда сам 8-битовый операнд (константа) располагается непосредственно в теле команды (второй байт команды), например Mov А,#05 ; (A)  05 . Cодержимое второго байта команды (05) пересылается в аккумулятор; 3) косвенная, при которой адрес операнда располагается в регистре (R0 или R1), например Mov А,@R0 ; (A)  ((R0)) . Cодержимое ячейки РПД по адресу, хранимому в регистре R0, пересылается в аккумулятор; 4) неявная, при которой в коде операции содержится неявное (по умолчанию) указание на один из операндов. Чаще всего таким операндом является аккумулятор, как, например, в команде Mov А,RN ; (A)  (RN) . Особенности передач через порты. Порты Р1 и Р2 представляют собой управляемые буферные регистры. При выдаче информации выводимый байт данных 24 фиксируется в буферном регистре порта, а при вводе он не фиксируется и должен быть прочитан контроллером в течение периода присутствия байта на входах порта. Ориентация МК на применение в устройствах управления объектами привела к появлению в его системе команд таких команд, которые позволяют выполнять операции ввода/вывода информации с использованием маскирования, что предоставляет разработчику удобные средства обмена не только байтами, но отдельными битами и их произвольными комбинациями. Схемотехника портов Р1 и Р2 такова, что ввод данных в некоторую линию возможен только в том случае, если предварительно в данный бит порта программой МК была записана 1. Порт BUS может выполнять все функции, перечисленные для портов P1 и Р2,| но в отличие от них он не может специфицировать отдельные линии на ввод или вывод. Все восемь линий порта BUS должны одновременно быть либо входными, либо выходными. По командам MOVX порт BUS используется в качестве двунаправленного синхронного канала для доступа к ВПД. 2.3.3 Группа команд арифметических операций Данная группа состоит из 12 команд (табл. 2.4) и позволяет выполнять следующие операции над 8-битовыми целыми двоичными числам без знака: двоичное сложение (ADD), двоичное сложение с учетом переноса (ADDC), десятичная коррекция (DA), инкремент (INC) и декремент (DEC). Таблица 2.4 – Группа команд арифметических операций Название команды Сложение регистра с аккумулятором Сложение байта из РПД с аккумулятором Сложение константы с аккумулятором Сложение регистра с аккумулятором и переносом Сложение байта из РПД с аккумулятором и переносом Сложение константы с аккумулятором и переносом Десятичная коррекция аккумулятора Мнемокод ADD A,Rn КОП 01101rrr T 1 Б 1 Ц 1 Операция (A)  (A) + (Rn) ADD A, @Ri 0110000i 1 1 1 (A)  (A) + ((Ri)) ADD A, #d 00000011 2 2 2 (A)  (A) + #d ADDC A, Rn 01111rrr 1 1 1 (A)  (A) + (Rn) + (C) ADDC A,@Ri 0111000i 1 l 1 (A)  (A) + ((Ri)) + (C) ADDC A,@d 00010011 2 2 2 (A)  (A)+ #d+ (C) DA A 01010111 1 1 1 Инкремент аккумулятора Инкремент регистра Инкремент байта в РПД Декремент аккумулятора Декремент регистра INC A INC Rn INC @Ri DEC A DEC Rn 00010111 00011rrr 0001000i 00000111 11001rrr 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 если ((A0_3) >9) V((AC) = 1), то (А0_3)  (A0-3) + 6. Затем, если ((A4_7) >9) V ((C) = 1), то (A4-7)  (A4-7) + 6 (A)  (A) + 1 (Rn)  (Rn) + 1 ((Ri))  ((Ri)) + 1 (A)  (A) - 1 (Rn)  (Rn) - 1 При сложении используется неявная адресация источника первого операнда и места назначения результата, в качестве которых выступает аккумулятор. Содержимое аккумулятора А можно сложить с содержимым регистра, константой и с содержимым ячейки РПД. В результате суммирования возможно появление переноса, который фиксируется в специальном триггере переноса (флаг С). Команда сложения с учетом переноса позволяет выполнять суммирование многобайтных чисел. 25 При необходимости выполнять двоичное вычитание требуется перевести вычитаемое в дополнительный код и произвести сложение с уменьшаемым. Все более сложные операции (умножение, деление) выполняются по подпрограммам. 2.3.4 Группа команд логических операций Данная группа состоит из 28 команд (табл. 2.5) и позволяет выполнять следующие операции над байтами: дизъюнкцию, конъюнкцию, исключающее ИЛИ, инверсию, сброс и сдвиг. Две команды (сброс и инверсия) позволяют выполнять операции над битами. Широко используется неявная адресация аккумулятора в качестве источника операнда и места фиксации результата. Вторым операндом в командах может быть регистр, константа или ячейка РПД. Существуют команды (ANL, ORL), оперирующие с портами, что позволяет эффективно управлять значениями отдельных бит при вводе/выводе информации. 2.3.5 Группа команд передачи управления Данную группу образуют 19 команд передачи управления, из них две команды безусловного перехода, 14 команд условного перехода, команда вызова подпрограмм и две команды возврата из подпрограмм. В табл. 2.6 приводится описание команд передачи управления. Команды ветвления с прямой адресацией. В большинстве команд прямо указывается адрес перехода. В теле команды при этом содержится 8 (ad) или 11 (ad 11) бит адреса перехода. Команда JMP позволяет передать управление в любое место 2048байтного банка памяти программ (ПП). Номер банка ПП определяется флагом DBF, значение которого копируется в старший бит счетчика команд (PC11) при выполнении команды JMP или CALL. Для перехода из нулевого банка ПП в первый недостаточно только установить флаг DBF, необходимо также выполнить команду перехода JMP, которая и изменит значение старшего бита счетчика команд. Все остальные команды (кроме команд возврата) содержат только; восемь младших бит адреса перехода. При этом оказывается возможным осуществить переход только в пределах одной страницы ПП (256 байт). Если команда короткого перехода расположена на границе двух страниц (т. е. первый байт команды на одной странице, а второй – на следующей), то переход будет выполнен в пределах той страницы, где располагается второй байт команды. Для условного перехода с одной страницы на другую можно воспользоваться тандемом из команды условного перехода и длинного безусловного перехода (JMP). Переход по косвенному адресу. Команда JMPP осуществляет переход по адресу, содержащемуся в ячейке ПП, на которую указывает содержимое аккумулятора. Таким образом, аккумулятор содержит адрес адреса перехода. Ячейка с адресом перехода должна находиться на тои же странице ПП, что и команда перехода JMPP. Команда косвенного перехода обеспечивает простой доступ к таблице, содержащей векторы переходов по программе в зависимости от содержимого аккумулятора, что позволяет легко реализовать механизм множественных ветвлений. 26 Таблица 2. 5 – Группа команд логических операций Название команды Мнемокод КОП T Б Ц Операция 01011m 0101000i 1 1 1 1 1 1 (A) (A)  (А)  (А) (Rn) ((Ri)) ANL A,*d 01010011 2 2 2 (A)  (А) #d ORL ORL A, Rn A, @Ri 01001rrr 0100000i 1 1 1 1 1 1 (A) (A)  (A)  (A) (Rn) ((Ri)) ORL A, #d 01000011 2 2 2 (A)  (A)  #d XRL A, Rn 11011rrr 1 1 1 (A)  (A)  (Rn) XRL A, @Ri 1101100i 1 1 1 (A)  (A)  ((Ri)) XRL A, #d 11010011 2 2 2 (A)  (A)  #d CLR CPL SWAP RL A A A A 00100111 00110111 01000111 11100111 1 1 1 1 1 1 1 1 1 1 1 1 Сдвиг влево аккумулятора через перенос RLC A 11110111 1 1 1 Циклический сдвиг вправо аккумулятора RR А 01110111 1 1 1 Сдвиг вправо аккумулятора через перенос RRC А 01100111 1 1 1 Логическое И константы и порта Рр (Р=1,2) Логическое И константы и порта BUS Логическое И аккумулятора и порта Рр (p=4-7) Логическое ИЛИ константы и порта Рр (p=1,2) Логическое ИЛИ константы и порта BUS Логическое ИЛИ аккумулятора и порта Рр (р = 4-7) Сброс переноса Сброс флага F0 Сброс флага F1 Инверсия переноса Инверсия флага F0 Инверсия флага F1 Pp, #d 100110рр 2 2 2 (A)  0 (A)  (A/) (A0-3)  (A4-7) (An+1)  (An), n = 06 (A0)  (A7) (An+i)  (An), n = 0-6 (A0) (С); (C)  (A7) (An) (An+i), n = 0-6 (A7)  (A0) (An) (An+i), n = 0-6 (A7)  (С); (C)  (A0) (Pp) (Pp) #d ANL BUS, #d ANLD Рр, А 10011000 100111 pp 2 1 2 1 2 2 ORL 100010рр 2 2 2 (BUS)  (BUS) #d (Pp)  (Pp) (A03) (Pp)  (Pp) #d ORL BUS, #d ORLD Рр, А 10001000 100011pp 2 1 2 1 2 2 (BUS) (BUS) #d (Pp) (Pp) (A0-3) CLR СLR CLR CPL CPL CPL 10010111 10000101 10100101 10100111 10010101 10110101 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (C) (F0) (Fl) (C) (F0) (Fl) Логическое И регистра и аккумулятора Логическое И байта из РПД и аккумулятора Логическое И константы и аккумулятора ANL Логическое ИЛИ регистра и аккумулятора Логическое ИЛИ байта из РПД и аккумулятора Логическое ИЛИ константы и аккумулятора Исключающее ИЛИ регистра и аккумулятора Исключающее ИЛИ байта из РПД и аккумулятора Исключающее ИЛИ константы и аккумулятора Сброс аккумулятора Инверсия аккумулятора Обмен тетрад в аккумуляторе Циклический сдвиг влево аккумулятора ANL ANL ANL A, Rn A, @Ri Pp, #d С F0 Fl С F0 Fl 0 0 0  (С/)  (F0/)  (Fl/) Условные переходы. По командам условных переходов могут проверяться не только внутренние флаги, но и некоторые сигналы на внешних входах МК. Это позволяет эффективно выполнять ветвления в программе без использования процедуры предварительного ввода и последующего сравнения. Все команды условных переходов используют прямую короткую адресацию, что накладывает определенные ограничения на размещение программ в памяти. Анализируемые признаки за исключением С и F0 не фиксируются в специальных триггерах флагов, а представляются мгновенными значениями сигналов в АЛУ или на соответствующих входах МК. 27 Таблица 2.6 – Группа команд передачи управления Название команды Мнемоко КОП д Т Б Ц Операция Безусловный переход JMP ad 11 a10a9a800100 3 2 2 Косвенный переход в текущей JMPP @А странице ПП Декремент регистра и переход, если DJNZ не нуль Rn,ad 10110011 1 1 2 11101rrr 4 2 2 Переход, если перенос JC ad 11110110 4 2 2 Переход, если нет переноса JNC ad 11100110 4 2 2 Переход, если аккумулятор содержит нуль Переход, если аккумулятор содержит не нуль Переход, если на входе Т0 высокий уровень Переход, если на входе Т0 низкий уровень Переход, если на входе T1 высокий уровень Переход, если на входе Т1 низкий уровень Переход, если флаг F0 установлен JZ ad 11000110 4 2 2 JNZ ad 10010110 4 2 2 JT0 ad 00110110 4 2 2 JNT0 ad 00100110 4 2 2 JT0 ad 11011110 4 2 2 JNT1 ad 01000110 4 2 2 JF0 ad 10110110 4 2 2 Переход, если флаг F1 установлен JF1 ad 01110110 4 2 2 Переход, если флаг переполнения таймера установлен Переход, если на входе ЗПР/ низкий уровень Переход, если бит аккумулятора равен единице (b = 0-7) Вызов подпрограммы JTF ad 00010110 4 2 2 JNI ad 10000110 4 2 2 JBb ad bbb10010 4 2 2 CALL ad11 a10a9a810100 3 2 2 Возврат из подпрограммы Возврат из подпрограммы и восстановление ССП RET RETR 1 1 2 2 10000011 10010011 1 1 (РС0-10)  ad11, (РС11)  DBF (РС0-7)  ((A)) (Rn)  (Rn)-1; если (Rn) ≠ 0, то (РС0-7)  ad, иначе (PC)  (PC)+2 Если (С) = 1,то (РС0-7)  ad, иначе (PC)  (PC)+2 Если (С)=0,то (РС0-7)  ad, иначе (PC)  (PC)+2 Если (А)=0, то (РС0-7)  ad, иначе (PC)  (PC)+2 Если (А)≠0, то (РС0-7)  ad, иначе (PC)  (PC)+2 Если Т0=1, то (РС0-7)  ad, иначе (PC)  (PC)+2 Если Т0=0, то (РС0-7)  ad, иначе (PC)  (PC)+2 Если Т1=1, то (РС0-7)  ad, иначе (PC)  (PC)+2 Если T1 = 0, то (РС0-7)  ad, иначе (PC)  (PC)+2 Если (F0) = 1, то (РС0-7)  ad, иначе (PC)  (PC)+2 Если (Fl) = l, тo (РС0-7)  ad, иначе (PC)  (PC)+2 Если TF = 1, то (РС0-7)  ad, иначе (PC)  (PC)+2 Если ЗПР/ = 0, то (РС0-7)  ad, иначе (PC)  (PC)+2 Если (Bb) = 1, то (РС0-7)  ad, иначе (PC)  (PC)+2 ((SP))  (PC), (PSW4-7), (SP) (SP)+l, (PC11)  DBF, (РС0-10)  ad 11 (SP)  (SP)-1, (PC)  ((SP)) (SP)  (SP)-1, (PC)  ((SP)), (PSW4-7)  ((SP)) Программные циклы. Для организации циклов удобно использовать команду DJNZ. Счетчик циклов организуется в одном из регистров текущего банка, для чего в этот регистр загружается число повторений цикла. При выполнении команды DJNZ производится декремент и последующая проверка на нуль содержимого регистра – счетчика циклов. Если его содержимое оказывается не нулевым, то происходит переход к началу цикла, иначе – выход из цикла. Структура программы при этом будет следующей: Следует отметить, что команды от метки LOOP до метки CYCLE включительно должны находиться в пределах одной страницы памяти программ. 28 Работа с подпрограммами. Дня вызова подпрограмм существует команда CALL, позволяющая обратиться в любое место текущего банка ПП. При вызове подпрограммы в стеке запоминается адрес возврата и часть ССП. Глубина вложений подпрограмм ограничена емкостью стека (16 байт) и не должна превышать восьми. Для возврата из подпрограммы необходимо выполнить команду RET, которая восстановит в счетчике команд адрес возврата. Для выхода из подпрограммы обработки прерывания служит команда RETR, которая кроме адреса возврата восстанавливает ССП и разрешает прерывание от данного источника. При программировании МК необходимо внимательно отслеживать ситуацию вызова подпрограммы, находящейся в альтернативном (по отношению к текущему) банке ПП. В этом случае перед вызовом подпрограммы необходимо выбрать соответствующий банк памяти, а перед возвратом – восстановить старое значение DBF. Если в подпрограмме нет команды восстановления DBF, то возврат все же будет выполнен правильно (гак как в стеке сохранен полный действительный адрес возврата), однако первая же команда длинного перехода передаст управление в альтернативный банк ПП. Если к подпрограмме производится обращения из разных банков памяти, то, оказывается, затруднительно восстановить значение DBF перед возвратом. В этом случае можно рекомендовать использовать команду восстановления DBF в основной программе вслед за командой вызова. Разработчику надо обратить внимание на указанные особенности как на возможный источник ошибок программирования. Пусть, например, требуется вызвать подпрограмму с именем SUBROUT, находящуюся в первом банке ПП, из программы, расположенной в нулевом банке ПП. Корректный вызов подпрограммы реализуется последовательностью команд 2.3.6 Группа команд управления режимом работы МК В эту группу входят команды управления таймером/счетчиком, прерываниями и флагами переключения банков регистров и банков ПП. В табл. 2.7 перечислены команды этой группы. Операции с таймером. Кроме рассмотренных ранее команд обмена между таймером и аккумулятором (MOV А,Т и MOV Т,А), по которым содержимое таймера может быть прочитано во время остановки счета и во время счета ("на лету") или изменено (перезагружено), в МК выполняются специальные команды управления режимом работы таймера. Таймер может быть (в зависимости от команды) использован как счетчик тактов или как счетчик событий от внутреннего или внешнего источника сигналов соответственно. Система команд МК располагает средствами разрешения или запрета прерывания от таймера. 29 Таблица 2.7 – Группа команд управления режимами работы МК48 Название команды Запуск таймера Запуск счетчика Останов таймера/счетчика Разрешение прерывания от таймера/счетчика Запрещение прерывания от таймера/счетчика Разрешение внешнего прерывания Запрещение внешнего прерывания Выбор нулевого банка регистров Выбор первого банка регистров Выбор нулевого банка ПП Выбор первого банка ПП Разрешение выдачи синхросигнала на выход Т0 Холостая команда Мнемокод КОП Ф Б Ц Операция STRT STRT STOP EN T CNT TCNT TCNTI 01010101 01000101 01100101 00100101 1 1 1 1 1 1 1 1 1 1 1 I DIS TCNTI 00110101 1 1 1 EN DIS SEL SEL SEL SEL ENTO I I RB0 RB1 MB0 MB1 CLC 00000101 00010101 11000101 11010101 11100101 11110101 01110101 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (BS)  0 (BS)  1 (DBF) 0 (DBF)  1 Т0 - синхросигнал (2 МГц) 00000000 1 1 1 (PC)  (PC) + 1 NOP Описание команд приведено в тексте Специальной командой ENT0 на вывод Т0 разрешается передача импульсов с частотой опорного синхросигнала, поделенной на три. Выдача этого сигнала может быть отключена только сигналом общего сброса. Синхросигнал на выходе Т0 используется для общей синхронизации внешних устройств, согласованных с МК по частоте работы. Переключение Банков регистров и ПП. Переключение банка памяти программ (т.е. изменение старшего бита счетчика команд) происходит в момент выполнения команды длинного перехода или вызова подпрограммы. Наличие команд переключения банков регистров позволяет при вызове подпрограмм и обработке прерываний эффективно использовать второй банк регистров в качестве рабочего, сохраняя параметры вычислительного процесса не в стеке, а в исходном банке регистров. При программировании процедур обработки прерывания можно переключать или не переключать банки регистров. В том случае, когда банки регистров переключаются, возврат к исходному банку регистров будет выполнен автоматически, если подпрограмма обработки прерывания оканчивается командой возврата с восстановлением ССП (RETR). 2.4 Особенности работы МК48 на этапе отладки прикладных программ 2.4.1 Микроконтроллер в пошаговом режиме работы и в режиме внешнего доступа Пошаговый режим. Схема запуска и временная диаграмма работы МК и пошаговом режиме показаны на рис. 2.10. Этот режим используется на этапе откладки МК-системы и предоставляет разработчику возможность выполнить прикладную программу покомандно. Сигнал ШАГ/ = 0 останавливает работу МК после окончания цикла текущей команды, после чего МК выдает подтверждающий сигнал САВП=1. Для вывода МК из состояния останова необходимо подать сигнал ШАГ/ = 1, на который МК откликается генерацией подтверждающею сигнала САВП = 0. Для того чтобы МК остановился после следующей команды, на вход ШАГ/ вновь должен быть подан сигнал 0, как только сигнал САВП станет равным нулю. Переход от команды к команде осуществляется по нажатию кнопки ШАГ/, устанавливающей буферный D-триггер по входу синхронизации. Сигнал ШАГ/ на выходе D-триггера не приобретет значение 1 до тех пор, пока сигнал САВП не 30 будет равен 1. Так как вход R асинхронного сброса D-триггера эквивалентен трем ТТЛнагрузкам, то между выходом САВП и входом сброса D-триггера необходимо установить усилитель. Рис. 2.10 – Схема (а) и временная диаграмма (б) пошагового режима работы MK48 Режим внешнего доступа. Подача уровня +5 В на вход ОРПП позволяет отключить резидентную память программ МК и осуществлять выборку команд только из внешней памяти. Этот режим работы удобен на этапе отладки МК-системы, так как позволяет пользователю подключать внешнюю память, содержащую или диагностическую программу или варианты прикладной программы. При помощи этого же сигнала ОРПП с уровнем +25 В возможно выполнить чтение содержимого РПП1 извне, что необходимо на этапе программирования МК для проверки вводимой информации. 2.4.2 Загрузка прикладных программ в резидентную память микроконтроллера Процесс загрузки прикладных программ в РПП микроконтроллера, не очень точно называемый процессом программирования МК, требует использования программатора, генерирующего специальные сигналы и предоставляющего средства ввода в МК адресов/данных и средства визуального или иного контроля введенной информации. Процесс загрузки программ в РПП состоит из ряда последовательных действий: 1) настройки на режим загрузки РПП (VDD = + 5 В, X1 синхросигнал с частотой 1-6 МГц, СБР/ = 0; Т0 = +5 В, ОРПП = +5 В); 2) установки БИС МК48 в панельку (сокет) программатора; 3) инициализации режима загрузки (Т0 = 0, ОРПП = +25 В; ПРОГ=0) ;| 31 4) подачи кода адреса на шину порта BUS и линии 0 и 1 порта Р2 в соответствии со схемой на рис. 2.11,а; 5) подачи +5 В на вход СБР (защелка адреса); 6) подачи байта на шину порта BUS; Рис. 2.11 – Схема (в) и временная диаграмма (б) загрузки РПП с контролем вводимой информации 7) подачи электропитания загрузки (VDD = +25 В); 8) подачи импульса загрузки (ПРОГ = +25 В длительностью 50 мс); 9) снятия электропитания загрузки (VDD = +5 В); 10) задания режима проверки (Т0 = +5 В); 11) чтения и проверки байта на шине BUS; 12) перехода к загрузке следующего байта прикладной программы (ТО = 0, СВР = 0; перехода к п. 4 данной последовательности действий); 32 13) выполнения п. 1 по окончании загрузки прикладной программы; 14) удаления БИС МК48 из панельки программатора. При загрузке программ в РПП участвует большая группа контактов корпуса МК, сигналы на которых должны формироваться в строго определенной последовательности. Эта временная последовательность приводится на рис. 2.11, б. Верификация прикладной программы, содержащейся в резидентной памяти МК, может быть выполнена путем прочтения ее содержимого в режиме внешнего доступа. 2.5 Варианты структурной организации систем на основе МК48 В тех случаях, когда функционально-логических возможностей одно кристального МК оказывается недостаточно, можно относительно простыми средствами расширить МК-систему до следующих размеров память программ – до 4 Кбайт; память данных – до 320 байт; лини ввода/вывода – практически неограниченно. Кроме того, путем подключения специализированных БИС, входящих в микропроцессорный комплект К1810, в МК-системе могут быть реализованы различные вспомогательные функции: связь с дисплеем и клавиатурой, многоуровневая программируемая система прерываний, сложная система таймирования, связь с телеграфно-телефонной линией передачи информации и т.д. С использованием средств буферирования и мультиплексирования адресов/данных можно под управлением программы создавать МК-системы любых требуемых состава и назначения. 2.5.1 МК-система с внешней памятью программ Шина BUS по своим свойствам подобна широко распространенной двунаправленной шине данных многих микропроцессоров, и все расширения МК выполняются с использованием этой шины. При обращении к резидентной памяти программ МК не генерирует внешних управляющих сигналов (за исключением САВП, который всегда идентифицирует каждый машинный цикл). Начиная с адреса 1024, МК автоматически формирует управляющие сигналы, обеспечивающие выборку команд из внешней памяти. На рис. 2.12 иллюстрируется процесс выборки команды из внешней памяти:  содержимое счетчика команд выводится через порт BUS и младшую тетраду порта Р2;  по спаду сигнала САВП на внешнем регистре фиксируется адрес;  сигналом РВПП разрешается работа внешней памяти;  по спаду сигнала РВПП шина BUS переходит в режим ввода. Рис. 2.12 – Временная диаграмма выборки команды из ВПП Ячейки памяти с адресами, лежащими за пределами банка памяти 0, могут быть доступны после выполнения команды переключения банков памяти SEL MB1, за которой должна следовать команда перехода (JMP или CALL). На рис. 2.13 показана структура МК-системы с внешней памятью программ. Три дополнительные БИС памяти емкостью по 1 Кбайт подключаются к шине BUS своими информационными выходами. 33 Рис. 2.13 – Структура МК-системы с внешней памятью программ Младший байт адреса по сигналу САВП фиксируется на внешнем буферном регистре. Старшая тетрада адреса, выводимая через порт Р2, не нуждается в буферизации, так как она стабильна на протяжении всего цикла выборки. Два самых старших бита адреса заводятся на внешний дешифратор (пробируемый сигналом РВПП/) для селекции требуемой БИС памяти программ. 2.5.2 МК-система с внешней памятью данных На рис. 2.14 показана схема МК-системы, в состав которой включены две дополнительные БИС ОЗУ суммарной емкостью 256 байт. Рис. 2.14 – Структура МК-системы с внешней памятью данных Внешняя оперативная память доступна МК по командам пересылки MOVX А, @R и MOVX @R, A, которые по косвенному адресу (регистры R0 и R1) выполняют операции передачи байта между ВПД и аккумулятором. Сигналом САВП косвенный адрес, выводимый по шине BUS, фиксируется в многорежимном буферном регистре МБР (i8212). Сигналы ЗП/ и ЧТ/ определяют режим работы БИС ОЗУ. Так как косвенный адрес имеет формат байта, то схема на рис. 2.14 обеспечивает адресацию 256 ячеек ОЗУ в дополнение к 64 ячейкам резидентной памяти данных МК48. При необходимости дальнейшего наращивания объема внешнего ОЗУ можно программным способом реализовать механизм «перелистывания»" страниц памяти через дополнительные линии порта Р2 подобно тому, как это сделано на рис. 2.13. 34 2-5.3. МК-система с расширенным вводом/выводом Для сопряжения МК с объектом, имеющим большое число входов/выходов, можно расширить резидентную систему ввода/вывода, подключив к МК необходимое количество внешних портов. Такое расширение в соответствии с рис. 2.15 может быть выполнено двумя способами: с использованием стандартного расширителя ввода/вывода (РВВ) КР580ВР43 или интерфейсных БИС (i8255, i8251). Рис. 2.15 – Варианты расширения ввода/вывода информации в МК-системах Расширитель подключается к МК48 так, как показано на рис. 2.15,а. Каждый из четырех портов РВВ может использоваться для ввода или вывода информации независимо от остальных и обеспечивает высокую нагрузочную способность. Для вывода байта данных в порты Р4 и Р5 можно воспользоваться следующей последовательностью команд: На рис. 2.15,б,в показаны два варианта расширения ввода/вывода с использованием параллельного периферийного адаптера (ППА i8255. В первом варианте (рис. 2.15, б) порты адаптера адресуются как ячейки ВПД, доступ к которым осуществляется по командам MOVX. Например, для вывода байта в порт В необходимо выполнить две команды: 35 Для второю варианта подключения ППА (рис. 2.15,в) выбор порта осуществляется через установку/сброс двух разрядов порта Р2. Так, для вывода байта данных в порт А можно воспользоваться следующими командами: В рассмотренных выше схемах расширения используется только по одной внешней БИС, и поэтому их вход ВК подсоединяется к земле. При необходимости к МК может быть подключено несколько РВВ и ППА. Список сокращений, символических имен и аббревиатур 1. Русская нотация АЛУ – арифметическо-логическое устройство БИС – большая интегральная схема ВК – выбор корпуса (см. СЕ, англ.) ВПД – внешняя память данных ВПП – внешняя память программ ВХПР – вход приемника УА*ПП {см. RXD) ВЫХПЕР – выход передатчика УАПП (см. TXD) ЗП – управляющий сигнал записи (см. WR) ЗПР – запрос прерывания (см. INT) КОП – код операции (поле в теле команды) МК – микроконтроллеры серии 1816: КМ1816ВЕ48 и КМ1816ВЕ51. Для краткости: МК48 и МК51 ОЗУ – оперативное запоминающее устройство (см. RAM) ОРПП – управляющий сигнал отключения резидентной памяти программ (см. ЕА, англ.) Порт BUS – порт-расширитель МК48 (см. DB.X) ПП – память программ ПРОГ – управляющий сигнал для программирования РПП (см. PROG) РА – регистр адреса (см. RAR) РВВ – БИС расширителя ввода/вывода РВПП – управляющий сигнал разрешения внешней памяти программ (см. PSEN) – РК – регистр команд (см. IR) РМП – регистр маски прерываний (см. IE) РП – регистр приоритетов (см. IP) РПД – резидентная память данных РПП – резидентная память программ РРТС – регистр режима таймера/счетчика (см. TMOD) РСФ – регистры специальных функций (PSW, TMOD, TCON, SCON, PCON, IE, IP) РУД – регистр-указатель данных (см. DPTR) РУМ – регистр управления мощностью (см. PCON) РУПП – регистр управления последовательного порта (см. SCON) РУС – регистр-указатель стека (см. SP) 36 РУСТ САВП СБР СК ссп СТБ т/с УАПП – – – – – – – – ЧТ – ШАГ – регистр управления/состояния таймера (см. TCON) управляющий сигнал строба адреса внешней памяти (см. ALE) управляющий сигнал сброса (см. RST) счетчик команд (см. PC, англ.) слово состояния программы (см. PSW) стробирующий сигнал (см. STB) таймер/счетчик событий (см. TCNT) универсальный асинхронный приемопередатчик (последовательный порт МК51) управляющий сигнал чтения (см. RD) управляющий сигнал пошагового (покомандного) режима работы (см. SS) 2. Английская нотация А АС АСС ad add ads adll ad 16 ad 16h ad 16l ALE В Bb bbb bit BS BUS С CE(CS) CLK C/T – – – – – – – – – – – – – – – – – – – – – #d #dl6 #dl6h #dl61 DBF DB.X DPH DPL DPTR – – – – – – – – – регистр-аккумулятор вспомогательный перенос (Auxiliary Carry flag in PSW) символическое имя регистра A прямой 8-битный адрес байта РПД (0-127), порта или РСФ прямой 8-битный адрес назначения прямой 8-битный адрес источника прямой 11-битный адрес передачи управления прямой 16-битный адрес передачи управления старший байт прямого 16-битного адреса младший байт прямого 16-битного адреса Address Latch Enable (см. САВП) регистр-расширитель аккумулятора обобщенное имя бита в аккумуляторе (b = 0 - 7) МК 48 3-битное поле в КОП (МК48), специфицирующее бит аккумулятора прямой 8-битный адрес бита (MK51) переключатель банка регистров в МК48 (Bank Switch) порт-расширитель МК48 флаг переноса Chip Enable (Chip Select) (см. BK, рус.) синхросигнал (Clock) управляющий бит выбора режима таймера/счетчика (Timer or Counter selector in TMOD) 8-битный непосредственный операнд (константа) 16-битный непосредственный операнд (константа) старший байт 16-битного непосредственного операнда младший байт 16-битного непосредственного операнда выбор банка памяти в МК48 (Detect Bank Flag) Data Bus; X = 0 - 7 (см. Порт BUS) Data Pointer High (старший байт РУД) Data Pointer Low (младший байт РУД) Data Pointer (см. РУД) 37 EA – EA/VPP EPROM ES – – – ET – EX – F0.F1 GATE GFO, GF1 i IDL IE – – – – – – IP INT IR IT – – – – MO, Ml – OV P PC PCON PD Pp рр – – – – – – – PROG PS PSEN PSW PT PX – – – – – – PX.Y – RAM RAR RB8 RD rel – – – – – управляющий бит снятия блокировки всех прерываний (Enable All control bit in IE) External Address/Voltage Power Programming (см. ОРПП) Erasable Programmable Read Only Memory (см. РПП) управляющий бит разрешения прерывания от УАПП (Enable Serial port control bit in IE) управляющий бит разрешения прерывания от таймера (Enable Timer control bit in IE) управляющий бит разрешения внешнего прерывания (Enable External interrupt control bit in IE) флаги, специфицируемые пользователем бит управления блокировкой Т/С (Gating control bit in TMOD) флаги пользователя (General Flags in PCON) в MK51 бит в КОП, определяющий регистр косвенного адреса- i = 0,1 (R0, R1) управляющий бит холостого хода (Idle mode in PCON) 1) Interrupt Enable register (см. РМП) 2) флаг внешнего прерывания, установленный по спаду с сигнала ЗПР (Interrupt Edge flag in TCON) Interrupt Priority control register (см. РПП) Interrupt (см. ЗПР) Instruction Register (см. PK, рус.) управляющий бит выбора типа (уровень/спад) сигнала ЗПР (Interrupt Type control bit in TCON) управляющие биты выбора режима работы Т/С (Operating Mode in TMOD) флаг переполнения (Overflow flag in PSW) флаг паритета (Parity flag in PSW) Program Counter (см. CK, рус.) Power Control register (см. РУМ) бит управления мощностью потребления (Power Done in PCON) обобщенное имя порта ввода/вывода в МК48 (р = 1,2 или 4-7) 2-битное поле в коде операции, определяющее порт МК48: 00 - Р4; 01 - Р5, Р1; 10 - Р6, Р2; 11 - Р7 Programming EPROM (см. ПРОГ) управляющий бит приоритета УАПП (Serial port Priority control bit in IP) Program Store Enable (см. РВПП)Program Program Status Word (см. ССП) управляющий бит приоритета таймера (Timer Priority control bit in IP) управляющий бит приоритета внешнего прерывания (External interrupt Priority control bit in IP) символическое имя бита Y порта X; Y = 0 - 7 для МК48: Х = 1,2, BUS для МК51: Х = 0, 1,2,3 Random Access Memory (см. ОЗУ) RAM Address Register (см. PA, рус.) девятый (bit 8) принятый бит (Receive Bit 8 in SCON) Read (см. ЧТ) 8-битный относительный адрес передачи управления (-127) – (+128) в МК51 38 REN – RI Ri Rn rrr – – – – RS RST RST/VPD RXD Sn SCON SM0, SM1, SM2 SMOD – – – – – – – SXPY – SP SS STB TO, Tl ТВ8 TCNT TCON TF TH TI TL TMOD TR TXD WR – – – – – – – – – – – – – – – – управляющий бит разрешения приема в УАПП (Receiver Enable control bit in SCON) флаг прерывания от приемника (Received Interrupt flag in SCON) обобщенное имя регистра косвенного адреса (R0 или R1) обобщенное имя рабочего регистра (п= 0 - 7) 3-битное поле в коде операции, определяющее регистр общего назначения (R0-R7) управляющий бит выбора банка регистров (Register bank Select in PSW) Reset (см. СБР) Reset/Voltage Power Done (см. СБР) Receive Data pin (см. ВХПР) состояние устройства управления MK51, n = 1 - 6 (State) Serial port Control/status register (см. РУПП) управляющие биты режима работы УАПП (Serial port Mode control bits in SCON) управляющий бит двойной скорости передачи (Double Baud rate in PCON) пояснения на временных диаграммах и схемах, привязывающие сигналы к состояниям S устройства управления и фазам Р синхросигналов (X = 1 - 6; Y = 1,2) для МК51 Stack Pointer (см. РУC) Single Step (см. ШАГ) Strobe (см. СТБ) - тест-входы МК девятый (bit 8) передаваемый бит (Transmit Bit8 in SCON) Timer/Counter events (см. Т/С, рус.) Timer/counter Control/status register (см. РУСТ) флаг переполнения таймера (Timer overflow Flag in TCON) старший байт таймера (Timer High byte) флаг прерывания от передатчика (Transmit Interrupt flag in SCON) младший байт таймера (Timer Low byte) Timer/counter Mode register (см. PPTC, рус.) управляющий бит пуска таймера (Timer Run control bit in TCON) Transmit Date (см. ВЫХПЕР) Write (см. ЗП) 3. Специальные символы ← – оператор присваивания (замещения) ↔ – оператор взаимного обмена . ,¥ – операторы логических операций: И (конъюнкция), ИЛИ (дизъюнкция), исключающее ИЛИ @ – префикс косвенной адресации # – префикс непосредственного операнда (Y) – содержимое регистра или ячейки памяти с именем Y ((Y)) – содержимое ячейки памяти, адресуемой содержимым Y (косвенная адресация) ¤ – текущее содержимое счетчика команд МК AND – логическая операция "конъюнкция" при ассемблировании 39 В Н HIGH – – – LOW – N0T 0R – – суффикс двоичного кода (Binary code) суффикс шестнадцатеричного кода (Hexadecimal code) логическая операция выделения старшего байта из d76 при ассемблировании логическая операция выделения младшего байта из dl6 при ассемблировании логическая операция "инверсия" при ассемблировании логическая операция "дизъюнкция" при ассемблировании
«Основы вычислительной техники» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Тебе могут подойти лекции

Смотреть все 127 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot