Некоммерческое акционерное общество

АЛМАТИНСКИЙ  УНИВЕРСИТЕТ  ЭНЕРГЕТИКИ И СВЯЗИ

Кафедра «Компьютерные технологии»

 

 

АРХИТЕКТУРА КОМПЬЮТЕРНЫХ СИСТЕМ

Методические указания к выполнению лабораторных работ

для студентов всех форм обучения специальности

5В070300Информационные системы

 

 

 

Алматы 2012

 

СОСТАВИТЕЛЬ: У.Т.Шанаев. Архитектура компьютерных систем. Методические указания к выполнению лабораторных работ для студентов всех форм обучения специальности 5В070300 – Информационные системы. – Алматы, 2012. – 52 с.

 

Предлагаемые в методической разработке работы предназначены к изучению характеристик элементов и устройств цифровых систем и их функциональных основ, определяемых содержанием дисциплины: “Архитектура компьютерных систем”. Они составлены в соответствии с требованиями квалификационной характеристики специалиста, Государственных стандартов, педагогико-психологических основ организации и проведения лабораторных занятий. Предлагаемые лабораторные работы выполняются как в виде виртуальных экспериментов, осуществляемых посредством моделирования исследуемых устройств  в программной среде Electronics Workbench, так и путем практической проверки работы соответствующих устройств, разработанных с помощью программных симуляторов.

Методические указания к лабораторным работам предназначены для студентов всех форм обучения по специальности 5В070300 – Информационные системы. Они могут быть использованы и для организации лабораторных занятий по идентичным темам аналогичных дисциплин, запланированных для других специальностей.

Ил. 19, табл. 3, библиогр. – 7 назв.

 

Рецензент:   канд. техн. наук, доцент А. Г. Ни     

 

Печатается по плану издания Некоммерческого акционерного общества “Алматинский университет энергетики и связи” на 2012 г.

 

© НАО “Алматинский университет энергетики и связи”, 2012 г.

 

Введение

Курс “Архитектура компьютерных систем” посвящен изучению функциональных основ различных устройств, входящих как в состав компьютерных систем, так и в структуру микроконтроллеров. Для обеспечения формирования у студентов теоретических знаний по изучаемому курсу и приобретения ими практических навыков по разработке цифровых систем различного характера функционирования необходима организация выполнения лабораторных работ по основополагающим темам курса.

Первая работа из предлагаемой методической разработки посвящена изучению принципов построения и работы постоянного запоминающего устройства (ПЗУ), принципов программирования (прошивки) программируемых ПЗУ и различных базовых структур, применяемых при разработке микросхем памяти.

Следующие две работы посвящены изучению структурной организации устройств ввода информации и систем памяти, являющихся основными функциональными блоками микропроцессорных систем.

Исследуемая в четвертой работе виртуальная модель микропроцессорной системы представляет студентам наглядную возможность для изучения структуры и принципов программирования таких систем. Эти четыре работы выполняются на моделях, созданных в программе Electronics Workbench.

Следующие две работы, выполняемые с помощью симулятора 8085 Simulator IDE, предназначены для организации обучения студентов основам программирования на языке ассемблер.

Последние две работы выполняются с помощью симулятора PIC Simulator IDE и позволяют получить студентам достаточно полное представление как о структуре микроконтроллеров PIC компании Microchip, так и о программных особенностях этих микроконтроллеров.

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

Во всех работах предлагаются задания для самостоятельной работы студентов (СРС), выполнение которых способствует закреплению как приобретенных ими теоретических знаний, так и формированию навыков по применению этих знаний для самостоятельной разработки аппаратных и программных структур.

 

1 Лабораторная работа № 1. Запоминающие устройства

Цель работы:

-       изучение общих принципов построения ROM;

-       приобретение навыков программирования PROM;

-       изучение базовых структур ЗУ и освоение принципов их построения.

1.1  Оборудование рабочего места

-       компьютер, программа Electronics Workbench Professional;

-       файл ROM(M) 16x7.ewb;

-       файл PROM 16x7.ewb;

-       файл RAM 2D_8x4.ewb;

-       файл RAM_3D_16x4.ewb;

-       файл RAM 2DM_32x4.ewb.

1.2  Практические сведения и методические рекомендации

Первое задание лабораторной работы посвящено изучению структуры и принципов работы постоянного запоминающего устройства (ПЗУ) с неизменяемой информацией для отображения шестнадцатеричных символов на 7-сегментном индикаторе (см. рисунок 1.1).

Рисунок 1.1

Блок ПЗУ (подсхема ROM_16x7) cостоит из дешифратора на 16 выходов (микросхема 74154) и матрицы памяти с организацией 16x7, оформленных в виде подсхем с соответствующими наименованиями. Разрешение на работу дешифратора обеспечивается положительным уровнем сигнала от клавиши E (Enable). Адреса строк памяти (7-разрядных ячеек) формируются посредством 4-разрядного счетчика (подсхема add4).

Второе задание посвящено изучению структуры (см. рисунок 1.2) и принципов программирования (прошивки) заготовки микросхемы (в нашем случае подсхемы chip 16x7), где в исходном состоянии имеются все перемычки в пересечениях шестнадцати горизонталей (выходных линии дешифратора) и семи вертикалей (разрядных линии).

Рисунок 1.2

Программирование микросхемы осуществляется в следующем порядке:

-       нажатием кнопки пуска (Activate simulation), активизировать схему;

-       клавишей W (Write/Read) перевести установку в режим программирования (светится соответствующий светодиод);

-       установить адрес программируемой строки матрицы памяти;

-       подготовить информацию для программирования нажатием клавиш, соответствующих ликвидируемым сегментам предполагаемого к размещению на этой строке символа;

-       кратковременным нажатием клавиши P (programming) обеспечить программирование строки (прошивку информации);

-       восстановить исходные состояния клавиш сегментов;

-       клавишей W (Write/Read) перевести установку в режим чтения информации и проверить прошитые в строках матрицы памяти информацию.

Следующие задания лабораторной работы, посвященные изучению различных структур систем памяти (2D, 3D, 2DM) и принципов их работы, выполняются на соответствующих моделях (см. рисунки 1.3-1.5).

Схема для исследования системы памяти по структуре 2D (см. рисунок 1.3) состоит из следующих блоков, оформленных в виде соответствующих подсхем:

-       трехразрядный формирователь адреса (add3) на основе счетчика;

-       четырехразрядный источник данных (data) на основе счетчика;

-       система памяти RAM_8x4, в состав которой входят дешифратор на восемь выходов (dc8) и матрица запоминающих ячеек (8x4), содержащая 8 ячеек (rg4) на основе регистров. Каждый из ячеек матрицы памяти снабжен индикатором, что позволяет вести наблюдение за выбором ячейки памяти во время эксперимента.

Рисунок 1.3

Схема для исследования системы памяти по структуре 3D (см. рисунок 1.4) состоит из следующих блоков, оформленных в виде соответствующих подсхем:

-       четырехразрядный формирователь адреса (add4) на основе счетчика;

-       четырехразрядный источник данных (data) на основе счетчика;

-       система памяти RAM_16x4, в состав которой входят сдвоенный дешифратор (2dc4) и матрица запоминающих ячеек (16x4), содержащая 16 ячеек (rg4) на основе регистров.

Рисунок 1.4

Схема для исследования системы памяти по структуре 2DM (см. рисунок 1.5) содержит в своем составе следующие блоки:

-       блок памяти RAM_32x4 по структуре 2DM;

-       блок подготовки данных Prepare;

-       блок управления Control.

Блок памяти RAM_32x4 состоит из следующих подблоков:

-       матрица элементов памяти 32х4;

-       блок дешифрации строки dc8;

-       блок выбора ячейки из строки (при чтении) mux4.

Рисунок 1.5

Матрица памяти 32х4 представляют собой (логически) 8 строк, в каждой из которых размещен блок cell_4x4, состоящая из четырех 4-разрядных ячеек памяти rg4. Физически блок памяти 32х4 реализован (с целью удобства соединения и обзора) в виде объединения двух блоков 16х4, составленных из четырех блоков cell_4x4. Каждый из внутренних блоков матрицы памяти 32х4 снабжен индикатором, что позволяет вести наблюдение за выбором строки и ячейки памяти во время эксперимента.

Блок dc8, предназначенный для выбора строки памяти, представляет собой дешифратор на восемь выходов.

Блок mux4, собранный на двух сдвоенных 4-входовых мультиплексорах, позволяет выбрать ячейку из активизированной строки.

Блок Prepare предназначен для предварительной подготовки четырех 4-разрядных слов, предполагаемых для одновременной записи в одну из строк матрицы памяти. На этапе подготовки эти слова временно сохраняются во внутреннем блоке in_4, составленного из четырех 4-разрядных ячеек памяти in. Выбор одной из этих ячеек осуществляется с помощью дешифраторного блока dc4 и блока его адресации 0_3.

В блоке Control объединены управляющие клавиши и дополнительные элементы, обеспечивающие режимы работы устройства. Устройство может работать в трех режимах: подготовки данных для записи, записи и чтения.

 

Режим подготовки данных осуществляется следующим образом:

-       клавишей P (Prepare) перевести устройство в режим подготовки данных (светится соответствующий индикатор);

-       клавишей I (In) выбрать одну из четырех ячеек блока in_4 (указывает соответствующий индикатор);

-       клавишей С (CLK) записать в эту ячейку одну из чисел, формируемых блоком данных data.

Перевод в режим записи/чтения осуществляется повторным нажатием клавиши P (индикатор гаснет).

В режиме записи:

-       клавишей A выбрать необходимую строку матрицы памяти (указывает соответствующий 7-сегментный индикатор);

-       клавишей С (CLK) записать подготовленные данные в выбранную строку матрицы памяти.

В режиме чтения:

-       клавишей A выбрать необходимую строку матрицы памяти (указывает соответствующий 7-сегментный индикатор);

-       клавишей S (Select) выбрать определенную ячейку из активизированной строки матрицы памяти (указывает соответствующий 7-сегментный индикатор).

1.3  Рабочее задание

1.3.1     Изучить принципы построения ROM и порядок работы с ним:

-       открыть файл ROM(M) 16x7.ewb, раскрыть подсхемы различных блоков (см. рисунок 4.1) и изучить их структуру;

-       изменяя адреса ячеек памяти клавишей A (Address), проверить записанную в соответствующих строках памяти информацию.

1.3.2     Изучить принципы построения PROM и порядок его программирования:

-       открыть файл PROM 16x7.ewb (см. рисунок 4.2), изучить структуру матрицы chip16x7 и устройство программатора (programmer), раскрыв соответствующие подсхемы;

-       запрограммировать строки матрицы памяти для отображения символов из следующего списка: L, J, H, P, S, U, –, _, e, n, q, r и др.

1.3.3      Изучить принципы построения системы памяти по структуре 2D:

-       открыть файл RAM 2D_8x4.ewb, где представлена схема для исследования системы памяти по структуре 2D и изучения принципа ее работы (см. рисунок 4.3). Раскрыть подсхемы блоков и изучить их структуру;

-       исследовать работу представленной системы памяти, записывая в ячейки определенную информацию и проверяя затем их сохранность.

1.3.4     Изучить принципы построения системы памяти по структуре 3D:

-       открыть файл RAM 3D_16x4.ewb, где представлена схема для исследования системы памяти по структуре 3D и изучения принципа ее работы (см. рисунок 4.4). Раскрыть подсхемы блоков и изучить их структуру;

-       исследовать работу представленной системы памяти, записывая в ячейки определенную информацию и проверяя затем их сохранность.

1.3.5     Изучить принципы построения системы памяти по структуре 2DM:

-       открыть файл RAM 2DM_32x4.ewb, где представлена схема исследования блока памяти по структуре 2DM (см. рисунок 2.3) и изучить структуру ее составных блоков, раскрывая их и изучая соответствующий пояснительный текст;

-       исследовать работу устройства памяти RAM_2DM, записав информацию во все строки матрицы, а затем проверить возможность считывания из конкретной ячейки памяти.

1.4  Задания на СРС

1.4.1     Построить схему устройства памяти, работающего в стековом режиме.

1.4.2     Построить схему устройства памяти с возможностью записи в последовательные ячейки памяти, начиная с определенной ячейки.

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

1        Назовите основные параметры запоминающих устройств.

2        В чем состоит назначение ROM?

3        Какие элементы памяти используются в различных типах ROM?

4        Как и кем программируются PROM?

5        В чем состоит различие EPROM и EEPROM?

6        Какая схемотехника элементов памяти обеспечивает максимальное быстродействие RAM?

7        В чем состоит принципы построения RAM с одномерной и двумерной адресацией?

8        Сравните преимущества и недостатки структур 2D и 3D.

9        Объясните принципы осуществления структуры памяти 2DM и ее основные достоинства по сравнению с остальными структурами.

 

2 Лабораторная работа № 2. Устройство ввода информации

Цель работы:

-       освоение принципов построения устройств ввода информации на основе приоритетных шифраторов;

-       приобретение навыков по совершенствованию работы устройства;

-       приобретение навыков по созданию многорежимных устройств.

2.1  Оборудование рабочего места

-       компьютер, программа Electronics Workbench Professional;

-       файл Input Unit (addressable).ewb;

-       файл Input Unit (multiplexing).ewb;

-       файл Input Unit (integration).ewb.

2.2  Практические сведения и методические рекомендации

В первом задании рассматривается возможность реализации устройства ввода от шестнадцати клавиш на основе микросхем приоритетных шифраторов (см. рисунок 2.1). Сформированные коды сохраняются в ячейках памяти (подсхема RAM_16x4), исследованной в предыдущей работе. Для записи используется изменение уровня сигнала на выводе CS микросхем шифраторов. В этом устройстве адрес необходимой ячейки памяти подготавливается с помощью счетчика, как и в предыдущих работах.

Основными блоками схемы подсхемы 0_F и СD, представляющие собой набор клавиш и шифраторы соответственно. На сигнальной линии каждой клавиши в блоке 0_F установлены формирователи импульсов отрицательной полярности продолжительностью 10 ns (подсхемы, обозначенные символом l).

Основу блока CD составляет схема кодирования на двух приоритетных шифраторах 74148. Здесь же вырабатывается импульс записи длительностью 10 ns, формирующийся с задержкой 20 ns относительно начала формирования кода (момента нажатия клавиши). Параметры сформированных импульсов (относительный сдвиг сигнала записи) обеспечивают своевременное формирование кода нажатой клавиши и его запись в память.

Рисунок 2.1

В следующей схеме (см. рисунок 2.2), рассматриваемой в данной работе, реализована возможность формирования как адреса, так и записываемой информации с помощью одних и тех же клавиш, т.е. осуществляется мультиплексирование передачи адреса и данных по одной и той же шине. Здесь блоки 0_F и СD объединены в подсхему Input.

Рисунок 5.2

Мультиплексирование осуществляется уровнем сигнала от клавиши G: при G=1 – передача адреса, который записывается в адресный регистр (подсхема RG_addr); при G=0 – передача записываемых в память данных.

Рисунок 2.3

Еще более усовершенствованный вариант устройства рассматривается в следующей схеме (см. рисунок 2.3), где интегрированы оба рассмотренные ранее варианты. В этой схеме формирование адреса может быть реализовано в двух режимах:  от счетчика (add4) и от блока кодирования (Inter).  Переключение между этими источниками, т.е. их мультиплексирование осуществляется двумя блоками, построенными на основе элементов с тремя состояниями (подсхемы 3st), управляемых уровнем сигнала от клавиши K (при K=0 – add4 и при K=1 – Inter). В обоих случаях передача адреса осуществляется при G=1, а адреса – при G=0.

2.3  Рабочее задание

2.3.1     Изучить принципы построения устройства ввода на основе шифратора:

-       открыть файл Input Unit (addressable).ewb, где представлена схема для исследования устройства ввода на основе шифратора (см. рисунок 2.1). Раскройте подсхемы, размещенные в схеме, и изучите их структуру;

-       проверить работу устройства, устанавливая сначала адрес ячейки памяти клавишей S, а затем, записывая в выбранную ячейку определенную информацию, нажимая соответствующую клавишу (0 … F).

2.3.2     Изучить принципы построения устройства ввода с мультиплексированием передачи информации:

-       открыть файл Input Unit (multiplexing).ewb, где представлена схема для исследования устройства ввода с мультиплексированием передачи адреса и записываемой информации от одного источника (см. рисунок 2.2). Раскройте подсхемы, размещенные в схеме, и изучите их структуру;

-       проверить работу устройства, устанавливая сначала адрес ячейки памяти (при G=1), а затем, записывая в выбранную ячейку определенную информацию (при G=0), нажимая соответствующую клавишу (0 … F).

2.3.3     Изучить принципы построения устройства ввода с вариативными возможностями передачи информации:

-       открыть файл 3.3.Input Unit (integration).ewb, где представлена схема, в которой объединены оба предыдущих устройства (см. рисунок 2.3). Раскройте подсхемы, размещенные в схеме, и изучите их структуру;

-       проверить работу устройства в различных режимах.

2.4  Задания на СРС

2.4.1     Построить схему устройства ввода информации со сканируемой клавиатурой (на основе мультиплексоров).

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

1        Объясните работу схемы в блоке CD.

2        Объясните назначение подсхем 3st и работу их структурных элементов.

3        Объясните принципы работы устройств, исследованных в лабораторной работе.

 

3 Лабораторная работа № 3. Организация системы памяти

Цель работы:

-       освоение принципов структурной организации систем памяти;

-       освоение принципов расширения информационной емкости системы памяти;

-       приобретение навыков по обеспечению многовариантности режимов работы цифровых систем.

3.1  Оборудование рабочего места

-       компьютер, программа Electronics Workbench Professional;

-       файл Memory Expansion.ewb.

3.2  Практические сведения и методические рекомендации

В первой работе были рассмотрены базовые структуры ЗУ, по которым создаются микросхемы памяти. Эти микросхемы обычно имеют небольшую информационную емкость. Чтобы построить систему памяти с информационной емкостью, необходимой для обеспечения работы конкретной микропроцессорной системы приходится использовать несколько таких микросхем. В этом случае возникает необходимость обеспечения возможности их совместной работы, т.е. должна быть возможность адресации ячейки памяти из определенной микросхемы. Такая возможность обеспечивается с помощью дополнительных дешифраторов. Выбор микросхемы осуществляется значеними старших разрядов адреса, а значения остальных разрядов определяют ячейку памяти в уже выбранной микросхеме.

Система памяти большинства микроконтроллеров (в частности, в микроконтроллерах PIC, производимых фирмой Microchip) организована в виде нескольких банков данных, каждый из которых содержит определенное (обычно, одинаковое) число ячеек памяти. Выбор конкретного банка данных осуществляется описанным выше способом. Необходимо отметить, что в таких реальных системах обычно предусматривается возможность расширения информационной емкости памяти за счет добавления внешних устройств памяти.

В работе используется виртуальная модель системы памяти (см. рисунок 3.1), состоящая из четырех банков данных, построенных на базе блоков памяти на 16 ячеек (m16). В составе устройства использован блок клавишного ввода информации (In), рассмотренный во второй работе. Эта модель предоставляет возможность наглядного изучения структурной организации систем памяти микропроцессорных систем и изучить принципы организации его работы.

Система работает в нескольких режимах, которые определяются в зависимости от состояний соответствующих клавиш в блоке управления. Состояние этих клавиш показывают соответствующие индикаторы. Опишем эти режимы.

 Рисунок 3.1

Режим предварительной адресации (Pre), т.е. установка номера банка данных и адреса начальной ячейки из этого банка, осуществляется при W=0. Выбор банка данных осуществляется записью его номера в регистр Sel при S=1, а определение адреса активизируемой ячейки – записью его в регистр Add при S=0. Запись этих данных осуществляется нажатием клавиши (0 - F), соответствующей шестнадцатеричному обозначению необходимого числа. Выбор активизированной ячейки указывается состоянием индикатора Sel (A1/A0).

Запись данных в память (Write) осуществляется при W=1 нажатием одного из соответствующих клавиш (0 – F). При этом клавиша R должна находиться в состоянии R=0. Последовательное изменение адреса ячейки и номера банка осуществляется нажатием клавиши O (Order).

Режим чтения данных из памяти (Read) осуществляется переводом клавиши R в состояние R=1 и изменением адреса ячейки памяти и выбором  номера банка с помощью клавишы O.

3.3  Рабочее задание

3.3.1     Раскрывая различные функциональные блоки устройства (базового блока памяти, блока ввода, регистров выбора банка и адресации ячеек памяти), изучить их внутреннюю структуру и характер размещения их информационных и управляющих выводов.

3.3.2     Изучить общую структуру устройства, организацию информационных связей между его функциональными блоками и принципы формирования управляющих сигналов.

3.3.3     Установив устройство в режим предварительной адресации (W=0), ввести  номер банка и начального адреса ячейки из этого банка в соответствующие регистры.

3.3.4     Перевести устройство в режим записи данных в память (W=1, R=0) и осуществить запись данных в выбранную ячейку памяти. Изменяя адрес ячейки памяти (клавишей O), продолжить запись данных в память. Эти данные записать в рабочую тетрадь.

3.3.5     Перевести устройство в режим чтения данных из памяти (W=1, R=1) и изменяя адрес ячейки памяти (клавишей O), осуществить чтение из соответствующих ячеек памяти и сопоставить их с ранее записанными данными.

 

3.4  Задания на СРС

3.4.1     Исследовать временные параметры (длительность, задержку) управляющих сигналов, передаваемых между различными функциональными блоками устройства.

3.4.2     Расширить информационную емкость устройства памяти в два раза.

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

1        Опишите внутреннюю структуру различных функциональных блоков устройства.

2        Опишите принципы организации информационных связей между различными функциональными блоками устройства.

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

 

4 Лабораторная работа № 4. Модель MP4M

Цель работы:

-       знакомство со структурой модели системы;

-       освоение порядка работы с моделью микропроцессорной системы;

-       изучение действия различных команд;

-       освоение принципов организации циклической программной структуры на модели МПС;

-       освоение методики работы с массивом данных;

-       изучение программы вычисления суммы нескольких чисел;

-       освоение методики поиска единичного бита в определенном разряде данных.

4.1  Оборудование рабочего места

-       компьютер, программа Electronics Workbench Professional;

-       файл MP4M.ewb.

4.2  Практические сведения и методические рекомендации

Модель 4-разрядной микропроцессорной системы, содержащая в своем составе микропроцессор (MP4M), устройство ввода данных (In), систему памяти (Mem) и блок выбора режима работы системы, приведена на рисунке 4.1.

 Рисунок 4.1

В состав микропроцессора входят следующие блоки:

-       набор специализированных регистров (RGs, Registers);

-       арифметико-логическое устройство (ALU, Arithmetic-Logic Unit);

-       регистр команд (IR, Instruction Register);

-       дешифратор команд (DC_16, Decoder 16-bit);

-       таймер (CLK, Clock);

-       микропрограммное устройство (Combi, Combinational Circuit.

Набор регистров (RGs) содержит в своем составе следующие регистры, каждый из которых предназначен для выполнения определенных функций:

-       регистр A выполняет функцию аккумулятора (Accumulator), где хранится один из операндов, участвующих в выполнении арифметических и логических операций или результат выполнения операции. Загрузка аккумулятора осуществляется из памяти (команда LD A) или из ALU (после выполнения арифметической или логической операции);

-       регистр A1 предназначен для накопления переносов при организации циклического суммирования. Он обнуляется при запуске программы и при загрузке аккумулятора (регистра A) командой LD A. Вывод его содержимого на индикаторы (аккумулятора) осуществляется кратковременным нажатием клавиши Space;

-       регистр B выполняет функцию адресного регистра для команд пересылок между памятью и внутренними регистрами микропроцессора (команды LD C, LD IP, LD SP, LD A). После выполнения команд LD C, LD SP, LD A происходит приращение содержимого регистра B (т.е. увеличение на единицу). Загрузка этого регистра осуществляется командой LD B, в качестве адресного регистра для которого используется регистр C. Он обнуляется при запуске программы;

-       регистр C выполняет функцию адресного регистра для второго операнда, участвующего в выполнении арифметических и логических операций. После выполнения соответствующих команд происходит приращение содержимого регистра C, но в отличие от регистра B знак приращения регистра C может быть изменен, он устанавливается клавишей I. Ее состояние показывает индикатор (I) - Dcr/Inr: при I=0 – положительное (Increment), а при I=1 – отрицательное (Decrement) приращение. Его содержимое может быть оставлено и в неизменном состоянии, о котором будет рассказано при описании режимов работы системы. Загрузка этого регистра осуществляется командой LD C. При запуске программы этот регистр устанавливается в состояние 1111 (с помощью элементов XOR). Ввиду того, что любая программа содержит в своем составе команды пересылок, первой команды программы должна быть загрузка регистра B (команда LD B) данным, содержащимся в ячейке памяти данных с адресом 1111. В состав регистра C включена схема, предназначенная для определения нулевого состояния регистра, по которому осуществляется условный переход при организации циклических операций;

-       регистр SP выполняет функцию указателя стека (Stack Pointer), т.е. он выполняет функцию адресного регистра при выполнении команд PUSH и POP:  перед выполнением команды PUSH происходит отрицательное приращение (Predecrement) его содержимого и после выполнения команды POP – положительное приращение (Postincrement). Загрузка этого регистра осуществляется командой LD SP. При запуске программы этот регистр устанавливается в состояние 1111;

-       регистр IP выполняет функцию указателя команды (Instuction Pointer). После выборки кода текущей команды и сохранения его в регистре команды происходит приращение его содержимого. Загрузка этого регистра осуществляется командой LD IP. Его содержимое изменяется и при выполнении условий перехода, определяемых в некоторых альтернативных режимах работы системы. Он обнуляется при запуске программы.

Входы всех регистров соединены к внутренней шине данных, а выходы – к шине данных или к шине адреса (через буферные элементы с тремя состояниями) соответственно выполняемыми ими функциями.

Арифметико-логическое устройство (ALU, Arithmetic-Logic Unit) осуществляет выполнение арифметических и логических операций и содержит в своем составе различные подблоки (sum, not, and, or, xor), предназначенные для реализации соответствующих операций и буферные регистры для временного хранения операндов и результата выполненной операции.

Дешифратор команды (DC_16) в зависимости от кода команды включает соответствующую микропрограмму управления выполнением текущей команды, т.е. определяет линию выработки сигналов, управляющих работой устройств, участвующих в ее выполнении.

Таймер (CLK) определяет временное распределение сигналов управления, передаваемых  к устройствам, участвующим в выполнении команд.

Микропрограммное устройство комбинационного типа (Combi, Combinational Circuit), формирует пространственные и временные сигналы управления, обеспечивающие выполнение текущей команды.

В качестве основы для устройства ввода и системы памяти используются рассмотренное ранее аналогичные устройства.

Блок управления памяти (MCon, Memory Control) обеспечивает выбор одного из блоков памяти (кодов или данных) и режим его работы (ввода, записи, считывания) в зависимости от управляющих сигналов, поступающих от устройства ввода или микропроцессора.

Система может работать в нескольких режимах, которые определяются в зависимости от состояний клавиш в блоке выбора режима ее работы (Regime). Состояние этих клавиш показывают соответствующие индикаторы. Опишем эти режимы.

 Загрузка памяти от устройства ввода осуществляется при M=1. Если при этом P=1, то запись происходит в программную память (программа должна завершаться командой остановки с кодом F), а при P=0 – в память данных. Проверка содержимого памяти осуществляется изменением адреса ячейки памяти путем кратковременного нажатия клавиши Space. При переключении клавиши P происходит обнуление адреса памяти.

Запуск программы к работе осуществляется переключением клавиши M в состояние M=0. Если при этом P=1, то при выполнении арифметических и логических команд происходит изменение содержимого регистра C (соответственно значению I), а при P=0 его содержимое остается неизменным.

При S=0 по командам ADS и ACS выполняются операции сложения, а при S=1 – операции вычитания.

При V=0 по команде AND выполняется обычная операция логического умножения между двумя операндами, а при V=1 – реализуется битовая операция по поиску единичного бита в определенном разряде данных, для чего в аккумулятор должно быть загружено число, содержащее единицу только в искомом разряде. Описанная битовая операция имитирует поиск сигнала запроса от внешнего устройства или квитирования в реальных прикладных системах.

Перевод системы в один из описанных режимов осуществляется перед запуском программы к работе, но может быть осуществлен и в процессе работы программы, что расширяет программные возможности системы. Например, в процессе работы можно операции сложения изменять на вычитание и наоборот. Аналогично, конъюнкцию можно изменять на битовую операцию.

Команды микропроцессора MP4M и их характеристики приведены в таблице 4.1, а порядок установки режимов работы системы – в таблице 4.2.

Т а б л и ц а 4.1 – Команды микропроцессора MP4M

Мн-ка

Коды

Операции

Hex

V=0

P

S

V=1; I=1

LD B

0

B←[(C)];  C(C)+1

 

 

 

LD C

1

C←[(B)];  B(B)+1

 

 

 

LD IP

2

IP←[(B)]

 

 

 

LD SP

3

SP←[(B)]; B(B)+1

 

 

 

LD A

4

A←[(B)];  B(B)+1

 

 

 

ST

5

[(B)]←(A);B(B)+1

 

 

 

INR

6

A←(A)+1

 

 

 

NOT

7

A←

 

 

 

ADS

8

A←(A)±[(C)]; TC

P=1: C←var(I)

P=0: C = invar

S=1: SUB (–)

S=0:ADD,ADC (+)

Zc = 0:       IP←IP+1

ACS

9

A←(A)±[(C)±TC; TC

 

 

 

AND

A

A←(A)۸[(C)]

 

 

Zc۸Za=0:  IP←IP+1

OR

B

A←(A)۷[(C)]

 

 

 

XOR

C

A←(A)[(C)]

 

 

 

PUSH

D

SP←(SP)–1; (SP)]←(A)

 

 

 

POP

E

A←(SP)]; SP←(SP)+1

 

 

 

HLT

F

IP = invar

 

 

 

 

Т а б л и ц а 4.2 – Установка режимов работы микропроцессора MP4M

Ключи и

инд-ры

M/R = 1

M/R → 0: Running: A,B,IP ← 0; C,SP ← F

P=1:   C←var(I);               P=0:     C = invar

S = 0

P/D = 1:

MemPr←IN

P/D = 0:

MemD←IN

Addition         (+)

A ← (A) + [(C)]

S = 1

Subtraction     (–)

A ← (A) – [(C)]

I = 1

PostDecrement  C(C) –1

C←(C)–1; (C)=0: Zc ← 0

I = 0

PostIncrement   C(C) +1

C ← (C) + 1

V = 0

Logical Operation

A ← (A) {۸ / ۷ / } [(C)]

V = 1

Verifying of Byte

(A)=0010…bi = 1: Za ← 0

  

4.3  Рабочее задание

4.3.1     Изучить действия команд пересылок:

-       открыть программу EWB5PRO и выбрать файл MP4M.ewb. Раскрывая подсхемы основных блоков системы (см. рисунок 6.1) и их внутренних компонентов и изучая практические сведения о системе, приведенные выше, ознакомиться с их структурой и принципами функционирования;

-       активизировать программу EWB5PRO кнопкой  и в дальнейшем ее не выключать до конца работы во избежание потери записанной в память информации;

-       подготовить систему к режиму загрузки программы установкой клавиш M и P в состояние M=1 и P=1. Загрузить в память коды команд представленной ниже программы;

 

Адрес

Команды

Коды

Адрес

Команды

Коды

0

LD B

0

5

POP

E

1

LD A

4

6

ST

5

2

LD SP

3

7

PUSH

D

3

LD C

1

8

PUSH

D

4

POP

E

9

HLT

F

 

-       перевести систему в режим загрузки данных установкой клавиши P в состояние P=0. Загрузить в память данные (например, последовательные значения чисел, начиная с какого-то конкретного значения) и записать их в рабочую тетрадь;

-       проверить правильность введенной в память информации (программы и данных), выбрав необходимый тип памяти клавишей P и кратковременно нажимая клавишу Space;

-       запустить работу загруженной программы, установив клавишу P в состояние P=1 и переключив клавишу M в состояние M=0. Наблюдая за состояниями индикаторов, проверить работу программы. При необходимости работу программы можно приостановить кнопкой  или перезапустить программу двойным нажатием клавиши M (не очень быстро);

-       после завершения работы программы перевести систему в режим ввода и проверить содержимое ячеек памяти данных. Выяснить причину происшедших изменений;

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

 

4.3.2     Изучить действия арифметических и логических команд:

-       подготовить систему к режиму загрузки программы (M=1, P=1) и загрузить в память коды команд представленной ниже программы;

  

Адрес

Команды

Коды

Адрес

Команды

Коды

0

LD B

0

7

ADS

8

1

LD C

1

8

ACS

9

2

LD A

4

9

ACS

9

3

INR

6

A

AND

A

4

INR

6

B

OR

B

5

ADS

8

C

XOR

C

6

ADS

8

D

HLT

F

 

-       перевести систему в режим загрузки данных (M=1, P=0). Загрузить в память данные (например, последовательные значения чисел, начиная с какого-то конкретного значения) и записать их в рабочую тетрадь;

-       запустить работу загруженной программы (P=1, затем M=0). Наблюдая за состояниями индикаторов, проверить работу программы. При необходимости можно воспользоваться кнопкой приостановки ;

-       после завершения работы программы проверить содержимое регистра A1 кратковременным нажатием клавиши Space. Объясните полученный результат. При возникновении затруднения в этом, то перезапустить программу (двойным нажатием клавиши M) и более внимательно наблюдать за возникающими переносами в операциях сложения;

-       перевести систему в режим загрузки программы, изменить состояние клавиши S в S=1, в результате чего программа суммирования в программу вычитания, т.е. при выполнении команд ADC и ACS выполняются операции вычитания (соответственно – без переноса и с переносом);

-       запустить работу загруженной программы. Наблюдая за состояниями индикаторов, проверить работу программы. При необходимости перезапустить работу программы;

-       учитывая, что арифметические операции выполнятся в дополнительном коде, выполните вручную в двоичном коде все осуществляемые в программе операции вычитания и сравните их поэтапно с результатами, получаемыми в системе.

4.3.3     Изучить принципы организации циклических программных структур на модели МПС:

-       подготовить систему к режиму загрузки и загрузить в память коды команд представленной ниже программы и данные для программы для определения суммы N чисел (в данном случае N=5);

 

Адрес

Команды

Коды

Адрес

Данные

Адрес

Данные

0

LD B

0

0

6

1

LD C

1

1

8

7

5

2

ADS

8

2

D

8

2

3

LD IP

2

3

A

4

HLT

 

4

9

 

 

 

 

 

5

B

F

7

 

-       запустить работу загруженной программы при P=1, S=0, I=1. После завершения работы программы младшая тетрада результата суммирования окажется в аккумуляторе (регистре A), а старшую тетраду, которая находится в регистре A1, можно выяснить кратковременным нажатием клавиши Space;

-       определите вручную сумму чисел, размещенных в ячейках с адресами 1…5, и сравнить ее с результатом, полученным в системе;

-       перевести систему в режим загрузки, загрузить в память коды команд представленной ниже программы обнаружения единичного бита в третьем разряде среди данных, размещенных в ячейках с адресами 1…5 (в данном конкретном случае – число D, размещенное в ячейке с адресом 2);

 

Адрес

Команды

Коды

Адрес

Данные

Адрес

Данные

0

LD B

0

0

6

1

LD C

1

1

8

7

6

2

LD A

4

2

D

8

4

3

AND

A

3

A

9

3

4

LD IP

2

4

9

5

HLT

F

5

B

F

7

 

-       запустить работу загруженной программы. Наблюдая за состояниями индикаторов, проверить работу программы. При обнаружении искомого числа высвечивается индикатор Bit и программа завершит свою работу;

-       перевести систему в режим загрузки изменить значение D, размещенное в ячейке с адресом 2, на 3 и перезапустить работу программы. В данном случае программа проверит данные в ячейках с адресами 1…5 и не обнаружив среди них искомое число, завершит свою работу.

4.4  Задания на СРС

4.4.1     Составить программу вычисления по выражению y=(a1+a2-a3)٨4, где ٨ – символ операции нахождения единичного бита в определенном разряде данных (в данном случае – в третьем разряде) и проверить работу при различных значениях данных (a1, a2, a3).

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

1        Объясните структуру модели микропроцессорной системы и ее функциональных блоков.

2        Объясните внутреннюю структуру микропроцессора и функции ее составляющих компонентов.

3        Объясните действия команд пересылок, использованных в исследованной программе.

4        Объяснить действия арифметических и логических команд, использованных в программе. Объяснить порядок выполнения соответствующих операций на примерах.

5        Объясните принципы организации циклической программной структуры на учебной модели.

6        Объясните принципы организации работы с массивом данных.

7        Объясните структуру программы вычисления суммы чисел.

8        Объясните структуру программы обнаружения единицы в определенном разряде среди массива данных.

 

5 Лабораторная работа № 5. Система Intel 8085

Цель работы:

-       знакомство со структурой микропроцессорной системы (МПС) на основе микропроцессора Intel 8085;

-       освоение порядка работы с симулятором 8085 Simulator IDE;

-       изучение действий, выполняемых командами пересылки данных из состава команд микропроцессора Intel 8085, различающихся способами адресации;

-       изучение действий, выполняемых арифметическими командами, различающихся способами адресации;

-       изучение функциональных возможностей программного симулятора МПС на основе микропроцессора Intel 8085.

5.1  Оборудование рабочего места

Компьютер, программа 8085 Simulator IDE.

5.2  Практические сведения и методические рекомендации

Для выполнения работы на компьютере должна быть установлена программа 8085 Simulator IDE. Перед началом работы с симулятором в C:\Program Files\8085 Simulator IDE рекомендуется создать папку под именем, содержащим достаточную информацию о студенте (номер группы, фамилию и имя), и в дальнейшем сохранять все создаваемые файлы в нем. Это облегчит вам работу с этими файлами в дальнейшем.

Структура симулятора и использование его функциональных возможностей будут описаны постепенно в процессе выполнения лабораторных работ.

5.3  Рабочее задание

5.3.1     Освоить порядок загрузки программы в симулятор 8085 Simulator IDE и изучить действия, выполняемые командами пересылки данных:

-       запустить программу симулятора. В открывшемся основном окне симулятора (см. рисунок 5.1) выбрать Tools/Assembler и в окне AssemblerFile/New;

-       сдвинув курсор на табулированное расстояние (клавишей Tab), ввести первую команду представленной ниже программы и нажать Enter. Аналогично продолжить ввод остальных команд программы. Метки записываются в начале строки. В этой программе, составленной в виде нескольких блоков, осуществляются пересылки данных между процессором и памятью. В первом блоке (Single Writing-1) осуществляется одиночная пересылка в память командой с прямой адресацией. Во втором блоке (Serial Writing) реализуется передача массива данных (в виде членов арифметической прогрессии) в память командой с косвенной адресацией. Более практичный способ передачи массива данных представлен в следующем блоке (Single Writing-2). В следующих трех блоках (Data Access, Data Access and Conversion, Single Writing) осуществляются пересылки данных из одного участка памяти в другой с использованием аналогичных использованным ранее командам (только в обратном порядке). Сохранить (File/Save As) записанную программу под именем Transfers (Пересылки), в результате чего создается файл с расширением asm;

Рисунок 5.1

;WRITING to MEMORIES

SW:   ;Single Writing

         MVI A,0FH;Direct Loading

         STA 00D0H;Direct Writing

         NOP

S1:     ;Serial Writing-1

         MVI C,07h;Data Counter

         LXI D,00D0H;Initial Address

         MVI A,00H;Cleaning

T0:    ADI 13H;Expansion Step

         INX D;Address Increment

         STAX D;Indirect Writing

         DCR C;Monitoring of the Data Counter

         JNZ T0;Continue

         XCHG;Exchange

         NOP

S2:     ;Serial Writing-2

         MVI C,08H;Data Counter

T1:    ADI 09H;Expansion Step

         INX H;Address Increment

         MOV M,A;Indirect Writing

         DCR C;Monitoring of the Data Counter

         JNZ T1;Continue

         NOP

AW:  ;Data Access and Writing

         LXI D,00EFH;Initial Address

         MVI C,08H;Data Counter

T2:    MOV A,M;Indirect Loading

         STAX D;Indirect Writing

         DCX H;Address Decrement

         DCX D;Address Decrement

         DCR C;Monitoring of the Data Counter

         JNZ T2;Continue

         NOP

AC:   ;Data Access, Conversion and Writing

         MVI C,07H;Data Counter

T3:    MOV A,M;Indirect Loading

         RLC;Left Shift

         XCHG;Exchange

         MOV M,A;Indirect Writing

         DCX H;Address Decrement

         DCX D;Address Decrement

         XCHG;Exchange

         DCR C;Monitoring of the Data Counter

         JNZ T3;Continue

         NOP

SA:    ;Single Access and Writing

         LDA 00D0H;Direct Loading

         STA 00E0H;Direct Writing

         HLT;Ending

 

 

 

-       в окне Assembler выбрать Tools/Assemble&Load. Создаются файлы с расширениями hex, lst, obj;

-       в основном окне симулятора выбрать Tools/Breakpoints Manager и установить контрольные точки после каждого блока, т.е. в строках с командой NOP (см. рисунок 5.2);

Рисунок 5.2

-       в основном окне симулятора выбрать скорость моделирования (Rate/…), например, Rate/Normal и запустить работу симулятора (Simulation/Start);

-       после каждой остановки программы в контрольных точках проанализировать действия команд в выполненном блоке и полученные результаты (в регистрах микропроцессора и в соответствующих ячейках памяти);

-       продолжить работу симулятора, выбрав скорость моделирования (Rate/…).

При необходимости (или по указанию преподавателя) можно осуществить раздельное выполнение отдельных блоков программы. Для этого в первую строку программы ввести команду JMP с меткой блока и заменить команду NOP в конце блока на команду HLT.

 

5.3.2     Изучить действия, выполняемые арифметическими командами, различающихся способами адресации:

-       ввести представленную ниже программу, состоящую из следующих блоков: Data Array – осуществляет запись данных в память в виде членов арифметической прогрессии (заданные параметры n = 0AH – количество членов, a1 = 00H – первый член, d = 55H – шаг прогрессии можно изменить в процессе выполнения работы); Cumulative Summation – определяет сумму членов арифметической прогрессии, записанных в память в предыдущем блоке программы; Retention of Result – сохраняет в памяти полученный результат суммирования; Series Subtraction – осуществляет последовательное вычитание членов арифметической прогрессии из полученной ранее суммы; ALTERNATIVE of the Single-Byte Summation, состоящий из двух подблоков (Data и Cumulative Summation-A) – реализует другой способ определения суммы членов арифметической прогрессии с использованием периферийных устройств (IN, OUT). Сохранить записанную программу под именем Single-Byte Arithmetic (Однобайтная арифметика);

         ;SINGLE-BYTE ARITHMETIC

DA:   ;Data Array (arithmetical progression)

         LXI H,00E0H;Initial Address

         MVI C,0AH;Data Quantity

         MVI A,00H;Cleaning

         MOV M,C;Writing in the Memory

SD:    INX H;Address Increment

         ADI 55H;Increment Step of the Linear Series

         MOV M,A;Writing in the Memory

         DCR C;Monitoring of the Data Counter

         JNZ SD;Continue

         NOP

CS:    ;Cumulative Summation

         ;SUM=((2a1+(n-1)d)/2)n

         ;a1-first operand,n-quantity,d-step,

         LXI H,00E0H;Initial Address

         MVI A,00H;Cleaning

         MOV B,A;Cleaning

         MOV C,M;Installation of the Data Counter

C1:    INX H;Address Increment

         ADD M;Addition

         JNC C2;Carry Monitoring

         INR B;Carry Accumulation

C2:    DCR C;Monitoring of the Data Counter

         JNZ C1;Continue

         NOP

RR:   ;Retention of Result

         INX H;

         MOV M,A;Low Byte

         INX H;

         MOV M,B;High Byte

         NOP

SS:    ;Series Subtraction

         LXI H,00E0H;Initial Address

         MOV C,M;Installation of the Data Counter

S1:     INX H;Address Increment

         SUB M;Subtraction

         JNC S2;Borrow Monitoring

         DCR B;Borrow Subtraction

S2:     DCR C;Monitoring of the Data Counter

         JNZ S1;Continue

         NOP

AD:   ;ALTERNATIVE of the Single-Byte Summation

         ;Data

         IN 01H;First Operand

         MOV E,A

         IN 01H;Data Quantity

         MOV C,A

         IN 02H;Step

         MOV D,A

         LXI H,0000H

         NOP

AC    ;Cumulative Summation-A

A1:    MOV A,E

         ADD D

         MOV E,A

         MOV A,L

         ADD E

         JNC A2

         INR H

A2:    MOV L,A

         DCR C

         JNZ A1

         MOV A,L

         OUT 03H

         MOV A,H

         OUT 04H

         HLT;Ending

 

-       в окне Assembler выбрать Tools/Assemble&Load, а затем в основном окне симулятора выбрать Tools/Breakpoints Manager и установить контрольные точки после каждого блока, т.е. в строках с командой NOP (см. рисунок 5.2);

-       в окне симулятора открыть окно Tools/Peripheral Devices. В открывшемся окне Peripheral Devices нажать кнопку Device 1 и определить адрес порта как 01, а затем установить этот порт на IN. Аналогично определить адрес следующего порта как 02, и установить его также на IN. Определив адреса следующих портов как 03 и 04, установить их на OUT (см. рисунок 5.3);

-       в основном окне симулятора выбрать скорость моделирования (Rate/…) и запустить работу симулятора (Simulation/Start). После каждой остановки программы в контрольных точках проанализировать действия команд в выполненном блоке и полученные результаты (в регистрах микропроцессора и в соответствующих ячейках памяти);

Рисунок 5.3

-       продолжить работу симулятора, выбрав скорость моделирования (Rate/…);

-       проверить соответствие полученных результатов суммирования с вычисленным по формуле .

При необходимости (или по указанию преподавателя) выполнить отдельные блоки программы раздельно. Для этого в первую строку программы ввести команду JMP с меткой блока и заменить команду NOP в конце блока на команду HLT.

 

5.4  Задания на СРС

5.4.1     Составить программу вычисления суммы n двухбайтных чисел (например, пяти), с вводом данных с периферийного устройства.

5.4.2     Составить программу выполнения логических операций с различными способами адресации.

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

1        Объясните внутреннюю структуру микропроцессора и функции ее составляющих.

2        Объясните структуры отдельных блоков программ и действия команд в них.

3        Объясните действия команд пересылок, использованных в исследованной программе.

4        Объясните действия арифметических команд, использованных в программе.

5        Какими командами осуществляются сложение двухбайтных чисел?

6        Объясните различия действий арифметических команд с переносом и без переноса.

 

6 Лабораторная работа № 6. Организация работы с подпрограммами

Цель работы:

-       освоение принципов организации работы с подпрограммами;

-       освоение принципов организации пересылок данных между стеком и регистрами микропроцессора.

6.1  Оборудование рабочего места

Компьютер, программа 8085 Simulator IDE.

6.2  Практические сведения и методические рекомендации

С целью рассмотрения структуры и порядка организации работы с подпрограммами и со стеком в работе рассматривается программа вычисления по выражению y = a1*a2 + a3*a4 + . Для решения поставленной задачи необходимо предварительно составить подпрограммы умножения и кумулятивного суммирования.

В микропроцессоре Intel 8085 отсутствует команда умножения, поэтому для операции умножения приходится составлять соответствующую программу. Определим алгоритм умножения. С целью наглядного объяснения машинного алгоритма, ниже приведены три варианта реализации процесса умножения десятичных чисел по известному со школьной скамьи алгоритму:

 

 

 

В первом варианте приведен привычный для нас порядок умножения, начиная с младшего разряда множителя и со сдвигом частичных произведений налево. Во втором варианте приведен порядок умножения, начиная со старшего разряда множителя и со сдвигом частичных произведений направо. В третьем варианте учтено, что возможное число разрядов результата умножения двух чисел с одинаковым числом разрядов (в нашем примере – четыре) в два раза больше, чем у множителей. Поэтому в начале операции значение произведения принято восьмиразрядным нулем. Для того чтобы частичные сложения осуществлялись над числами с одинаковым числом разрядов, первый множитель расширен до восьми разрядов (добавлением нулей слева) и операции сдвига (они указаны стрелками) осуществляются перед началом каждого частичного умножения. Именно такой алгоритм был принят для программной реализации умножения. двухбайтных двоичных чисел:

-        ввиду того, что результат умножения восьмиразрядных чисел будет шестнадцатиразрядным числом и в связи с тем, что частичные сложения выполняются также над шестнадцатиразрядными числами, в качестве шестнадцатиразрядного аккумулятора была принята регистровая пара HL, которая очищается в начале выполнения программы;

-       в регистр E регистровой пары DE вводится первое число (множимое), а регистр D обнуляется, в результате чего множимое становится шестнадцатиразрядным числом;

-       с целью обеспечения возможности сдвига второе число (множитель) помещается в аккумуляторе (во избежания путаницы его в дальнейшем будем называть регистром A);

-       для обеспечения контроля над числом операций сдвига число разрядов множителя (восемь) помещается в регистр С;

-       перед осуществлением каждого частичного умножения накопившийся до этого результат (в регистровой паре HL) сдвигается влево (путем удваивания);

-       очередное значение разряда множителя определяется путем сдвига содержимого регистра A (множителя) влево и в случае равенства его нулю –частичное умножение этим и завершается (т.е. предыдущим сдвигом регистровой пары HL), а при равенства его единице – к содержимому регистровой пары HL добавляется содержимое регистровой пары DE.

После каждого частичного умножения содержимое счетчика сдвига убавляется на единицу и при равенстве его нулю – программа умножения завершает свою работу.

6.3  Рабочее задание

6.3.1     Изучить структуру сложной программы, содержащей в своем составе несколько подпрограмм:

-       запустить программу симулятора и в открывшемся окне выбрать Tools/Assembler, а затем – File/New;

-       ввести представленную ниже программу и сохранить ее под именем Stack (Стек):

 

         ;SUM=a1*a2+a3*a4+sum(ai,n,d)

         LXI SP,0FFH

         MVI B,0A0H

         ;mul1=a1*a2

         IN 01H;first multiplier

         MOV E,A

         IN 02H;second multiplier

         CALL MUL

         PUSH H

         CALL PER

         NOP

         ;mul2=a3*a4

         IN 01H;first multiplier

         MOV E,A

         IN 02H;second multiplier

         CALL MUL

         PUSH H

         CALL PER

         NOP

         ;sum(ai,n,d)

         IN 01H;quantity - n

         MOV C,A

         IN 02H;step - d

         MOV D,A

         IN 01h;first operand - a1

         MOV D,A

         LXI H,0000H

         CALL SUM

         CALL PER

         NOP

         ;S3

         POP D

         DAD D

         POP D

         DAD D

         CALL PER

         HLT

MUL: ;Multiplication (subroutine)

         MVI D,00H

         LXI H,0000H

         MVI C,08H

M1:    DAD H

         RLC

         JNC M2

         DAD D

M2:    DCR C

         JNZ M1

         RET

SUM: ;Cumulative Summation (subroutine)

CS3:  MOV A,E

         ADD D

         MOV E,A

         MOV A,L

         ADD E

         JNC CS4

         INR H

CS4:  MOV L,A

         DCR C

         JNZ CS3

         RET

PER:  ;Displaying on the Periphery

         ;and Writing on the Memory

         MOV C,B

         MVI B,00H

         MOV A,L

         OUT 03H

         STAX B

         INR C

         MOV A,H

         OUT 04H

         STAX B

         INR C

         MOV B,C

         RET

 

Основная часть программы состоит из следующих блоков: SUM – заголовок основной программы, где присваивается значение указателю стека SP и информация, предназначенная для организации работы подпрограммы вывода и отображения результатов. mul1 и mul2 – осуществляется ввод данных для умножения и вызывается подпрограмма умножения, а затем – подпрограмма отображения. sum – осуществляется ввод данных для суммирования и вызывается подпрограмма суммирования, а затем – подпрограмма отображения. S3 – вычисляет конечный результат, т.е. суммирует частичные результаты, полученные в предыдущих этапах.

В программе используются три подпрограммы: Multiplication – осуществляет умножение двух чисел, введенных перед вызовом подпрограммы; Cumulative Summation – определяет сумму задаваемых в основной программе n чисел; Displaying – осуществляет отображение полученных в подпрограммах результатов и сохраняет их в памяти.

-       в окне Assembler выбрать Tools/Assemble&Load, а затем открыть окно Tools/Peripheral Devices. В открывшемся окне Peripheral Devices определить адреса портов между 01…04 и первые два порта (с адресами 01 и 02) установить на IN, а остальные на OUT;

-       в основном окне симулятора выбрать Tools/Breakpoints Manager и установить контрольные точки после каждого блока основной части программы, т.е. в строках с командой NOP;

-       в основном окне симулятора выбрать скорость моделирования (Rate/…) и запустить работу симулятора (Simulation/Start). После каждой остановки программы в контрольных точках проанализировать действия команд в выполненном блоке и полученные результаты (в регистрах микропроцессора и в соответствующих ячейках памяти);

-       продолжить работу симулятора, выбрав скорость моделирования (Rate/…).

 

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

1        Объясните алгоритм умножения, принятого в качестве основы для его программной реализации.

2        Объясните принципы организации работы с подпрограммами.

3        Объясните принципы организации пересылок данных между стеком и регистрами микропроцессора.

 

 

7 Лабораторная работа № 7. Микроконтроллеры PIC16F8X

Цель работы:

-       знакомство со структурой микроконтроллеров PIC;

-       изучение функциональных возможностей программного симулятора PIC Simulator IDE и освоение методики организации работы с ним;

-       освоение порядка составления программы работы микроконтроллеров;

-       знакомство с порядком осуществления загрузки данных в регистры микроконтроллера;

-       освоение принципов организации циклических программных структур в микроконтроллере;

-       освоение методики вычисления и измерения параметров смоделированного устройства (длительности формируемых импульсов и пауз между ними).

7.1  Оборудование рабочего места

Компьютер, программа PIC Simulator IDE.

7.2  Практические сведения и методические рекомендации

7.2.1     Система команд микроконтроллеров семейства PIC

Микроконтроллеры подгруппы PIC16F8X имеют простую и эффективную систему команд, состоящую всего из 35 команд. Каждая их команда представляет собой 14-битовое слово, разделенное на код операции (OPCODE), и поле для одного и более операндов, которые могут участвовать или не участвовать в этой команде. Система команд PIC16F8X является ортогональной и включает в себя команды работы с байтами, команды работы с битами и операции с константами и команды управления. Ниже приведены описания полей команд.

 

Поле

Описание

f

Адрес регистра

w

Рабочий регистр

b

Номер бита в 8-разрядном регистре

k

Константа

d

Регистр назначения:

d=0 – результат в регистре w; d=1 – результат в регистре f

label

Имя метки

TOS

Beршина стека

PC

Счетчик команд

PCLATH

Регистр PCLATH

GIE

Бит разрешения всех прерываний

WDT

Сторожевой таймер

/TO

Тайм-аут

/PD

Выключение питания

[ ]

Необязательные параметры

( )

Содержание

Описание: Описание: http://www.intuit.ru/img/symbols/srarr.gif

Присвоение

< >

Поле номера бита

Описание: Описание: http://www.intuit.ru/img/symbols/isin.gif

Из набора

 

Основные форматы команд МК изображены на рисунке 7.1.

Описание: Описание: Основные форматы команд.

Рисунок 7.1 

Почти все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла:

-       проверка условия и переход;

-       изменение программного счетчика как результат выполнения команды.

Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс.

Система команд МК подгруппы PIC16F8X приведена в таблице 7.1.

 

Таблица 7.1

Мнемоника

Описание команды

Циклы

Биты

состояния

Прим.

ADDWF f, d

Сложение W с f

1

C ,DC ,Z

1, 2

ANDWF f, d

Логическое И W и f

1

Z

1, 2

CLRF f

Сброс регистра f

1

Z

2

CLRW

Сброс регистра W

1

Z

 

COMF f, d

Инверсия регистра f

1

Z

1, 2

DECF f, d

Декремент регистра f

1

Z

1, 2

DECFSZ f, d

Декремент f, пропустить команду, если 0

1(2)

 

1, 2, 3

INCF f, d

Инкремент регистра f

1

Z

1, 2

INCFSZ f, d

Инкремент f, пропустить команду, если 0

1(2)

 

1, 2, 3

IORWF f, d

Логическое ИЛИ W и f

1

Z

1, 2

MOVF f, d

Пересылка регистра f

1

Z

1, 2

MOVWF f

Пересылка W в f

1

 

 

NOP -

Холостая команда

1

 

 

RLF f, d

Сдвиг f влево через перенос

1

C

1, 2

RRF f, d

Сдвиг f вправо через перенос

1

C

1, 2

SUBWF f, d

Вычитание W из f

1

C,DC,Z

1, 2

SWAPF f, d

Обмен местами тетрад в f

1

 

1, 2

XORWF f, d

Исключающее ИЛИ W и f

1

Z

1, 2

BCF f, b

Сброс бита в регистре f

1

 

1, 2

BSF f, b

Установка бита в регистре f

1

 

1, 2

BTFSC f, b

Пропустить команду, если бит в f равен нулю

1(2)

 

3

BTFSS f, b

Пропустить команду, если бит в f равен единице

1(2)

 

3

ADDLW k

Сложение константы и W

1

C, DC, Z

 

ANDLW k

Логическое И константы и W

1

Z

 

CALL k

Вызов подпрограммы

2

 

 

CLRWDT

Сброс сторожевого таймера WDT

1

/TO, /P

 

GOTO k

Переход по адресу

2

 

 

IORLW k

Логическое ИЛИ константы и W

1

Z

 

Мнемоника

Описание команды

Циклы

Биты

состояния

Прим.

MOVLW k

Пересылка константы в W

1

 

 

RETFIE -

Возврат из прерывания

2

 

 

RETLW k

Возврат из подпрограммы с загрузкой константы в W

2

 

 

RETURN -

Возврат из подпрограммы

2

 

 

SLEEP -

Переход в режим SLEEP

1

/TO, /P

 

SUBLW k

Вычитание W из константы

1

C, DC, Z

 

XORLW k

Исключающее ИЛИ константы и W

1

Z

 

 

Примечания к таблице:

1)     Если модифицируется регистр ввода/вывода (например, MOVF PORTB,1), то используется значение, считываемое с выводов. Например, если в выходной защелке порта, включенного на ввод, находится "1", а внешнее устройство формирует на этом выводе "0", то в разряде данных будет записан "0".

2)     Если операндом команды является содержимое регистра TMRO (и, если допустимо, d=1), то предварительный делитель, если он подключен к TMRO, будет сброшен.

3)     Если в результате выполнения команды изменяется счетчик команд или выполняется переход по проверке условия, то команда выполняется за два цикла. Второй цикл выполняется как NOP.

7.2.2     Программный симулятор PIC Simulator IDE

Выполнение рабочих заданий к лабораторным занятиям осуществляется на программном симуляторе PIC Simulator IDE. PIC Simulator IDE – это отладчик программ, написанных для микроконтроллеров microPIC серии 12 и 16 компании Microchip. PIC Simulator IDE имеет встроенный ассемблер и компилятор Basic подобного языка, что также упрощает процесс написания программ для МК и уменьшает время разработки изделий в целом.

В PIC Simulator IDE имеется большое количество всевозможных настроек и режимов работы, что позволяет пользователю самостоятельно выбрать оптимальный режим отладки программы для МК. Все эти возможности программы PIC Simulator IDE делают её отличным инструментом как для начинающих разработчиков (в частности, для студентов), так и для опытных программистов.

Эта программа наряду с написанием и отладкой рабочей программы, также позволяет разработчику непосредственно в отлаживаемом коде работать с виртуальной периферией. Имеется в виду, что специальные программные модули PIC Simulator IDE имитируют работу различных реальных электронных устройств: символьного ЖК экрана, 7-сегментных индикаторов, терминала связи, 4-канального генератора, осциллографа и другого оборудования. Практически весь процесс отладки и написания программы можно выполнить непосредственно в PIC Simulator IDE, т.е. нет необходимости, внеся в программу какие либо изменения, программировать МК и подключать его в отладочную плату с присоединёнными внешними устройствами.

7.2.3     Организация работы с симулятором

При работе с симулятором (также, как и при работе с настоящим микроконтроллером) создается множество файлов различных типов. В дальнейшем, при создании нескольких проектов и их вариантов (в нашем случае, после выполнения нескольких лабораторных работ), поиск необходимого для работы файла проекта вызывает определенную трудность. Чтобы облегчить такой поиск, предлагается создать глобальную папку (например, в разделе Мои документы) под названием, содержащим достаточную информацию о студенте (номер группы, фамилию и имя), а в ней отдельные папки для каждой лабораторной работы (например, под названием Lab_1, Lab_2 и далее) и в дальнейшем сохранять все создаваемые файлы в нем. При работе с индивидуальным компьютером (ноутбуком) глобальную папку (например, под названием PICSIM) можно разместить и в самой программа PIC Simulator IDE.

Структура симулятора и использование его функциональных возможностей будут описаны постепенно в процессе объяснения этой и следующих лабораторных работ.

7.3  Рабочее задание

В работе необходимо создать устройство формирования сигнала тонального вызова с высокостабильной частотой 1450 Гц. При включении устройства на передачу, необходимо организовать автоматический режим “передачи”  сигнала тонального вызова в течение калиброванного интервала времени (3 сек.). Также необходимо иметь возможность управления разрешением (или запрещением) передачи сигнала тонального вызова от отдельной кнопки, которая может действовать как во время передачи, так и до нее.

 

7.3.1     Освоить порядок загрузки рабочей программы в симулятор PIC:

-       запустить программу симулятора. В открывшемся основном окне симулятора (см. рисунок 7.2) выбрать Options/Select Microcontroller и, определив в нем тип микроконтроллера (PIC16F84A), нажать на кнопку Select. Также установить в основном окне симулятора частоту тактового генератора (4 MHz);

-       в основном окне симулятора выбрать Tools/Assembler и в окне AssemblerFile/New;

Рисунок 7.2

-       ввести представленную ниже программу формирования сигнала тонального вызова с высокостабильной частотой 1450 Гц аналогично тому, как это осуществлялось при работе с симулятором  МПС 8085;

-       сохранить записанную программу под именем Сontrolled Call (Управляемый вызов) и проассемблировать ее (Tools/Assemble&Load);

 

 

; Device of the call 1.45 KHz

;===========================

; Microcontroller PIC16F84A

; Clock Frequency 4.0 MHz

;===========================

Sec             equ             0Ch

SecH           equ             0Dh

SecL           equ             0Eh

;===========================

                   org              0

                   goto            START

;===========================

START       clrf              IntCon

                   clrwdt

                   bsf              Status,RP0

                   movlw         .65

                   movwf        TrisB

                   movlw         .143

                   movwf        Option_REG

                   bcf              Status,RP0

;----------------------------------------------

                   movlw         .15

                   movwf        SecH

                   movlw         .255

                   movwf        SecL

;----------------------------------------------

CYCLE       btfsc           PortB,0

                   goto            START

;----------------------------------------------

                   btfss           PortB,6

                   goto            PRD

;----------------------------------------------

                   bcf              PortB,2

                   nop

                   nop

                   movlw         .85

                   movwf        Sec

PAUSE_1   clrwdt

                   decfsz         Sec,F

                   goto            PAUSE_1

;----------------------------------------------

                   bsf              PortB,2

                   nop

                   nop

                   movlw         .83

                   movwf        Sec

PAUSE_2   clrwdt

                   decfsz         Sec,F

                   goto            PAUSE_2

;----------------------------------------------

                   decfsz         SecL,F

                   goto            CYCLE

                   decfsz         SecH,F

                   goto            CYCLE

                   bcf    PortB,2

;----------------------------------------------

PRD           clrwdt

                   btfss           PortB,0

                   goto            PRD

                   btfss           PortB,0

                   goto            PRD

                   goto            START

;----------------------------------------------

                   end

 

7.3.2     Вывести на экран монитора индикаторы порта В (Tools/8xLED Board) и осциллограф (Tools/Oscilloscope), а также открыть окно Tools/Microcontroller View (см. рисунки 7.3–7.5).

7.3.3     Запустить работу симулятора и наблюдать за работой программы с помощью индикаторов (Tools/8xLED Board) и осциллографа (Tools/Oscilloscope).

7.3.4     Нажимая в окне Microcontroller View кнопки T около соответствующих выводов порта B, установить уровни сигналов на входах RB1 и RB6 на ON. Первая из них устанавливает систему на режим приема, а вторая дает разрешение на передачу сигнала тонального вызова. Перевести уровень сигнала на входе RB1 на OFF.

 

Рисунок 7.3

 

Рисунок 7.4

 

Рисунок 7.5

7.3.5     Установить состояние вывода RB6 на OFF, после чего несколько раз изменить состояние входа RB1.

7.3.6     Остановив работу симулятора (переводом вывода RB6 в состояние ON) и устанавливая контрольные точки на определенных строках программы (Tools/Breakpoints Manager), проверить длительности различных участков периода формируемых сигналов.

7.3.7     Таким же путем проверить длительность интервала времени, в течение которого осуществляется передача тонального вызова. При этом необходимо учесть, что скорость моделирования в программе примерно в 500 раз меньше скорости работы реального устройства (это проверено автором). Поэтому для сокращения времени измерения следует уменьшить значения данных, записываемых в регистры SecH и SecL, и затем выполнить соответствующий перерасчет длительности передачи.

7.4  Задания на СРС

Реализовать функцию устройства, формирующего пачки импульсов с чатотой F в течение времени T, и продемонстрировать его работу на симуляторе. Частота импульсов в пачке – f, а число импульсов в пачке – n.

 

F, kHz

T, ms

f, kHz

n

1

0,5

16

21,8

10

2

0,6

14

21,9

9

3

0,7

12

22,0

8

4

0,8

10

22,2

7

5

0,5

20

22,3

6

6

0,6

18

22,4

5

7

0,7

16

21,8

5

8

0,8

14

21,9

6

9

0,5

12

22,0

7

10

0,6

10

22,2

8

11

0,7

20

22,3

9

12

0,8

18

22,4

10

 

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

1 Объяснить структуру исследованной программы и ее работу.

2 Как осуществляется общая длительность передачи в программе?

3 Как обеспечивается необходимые длительности различных уровней передаваемых сигналов?

4 Как осуществляются проверки уровней сигналов на управляющих выводах микроконтроллера?

8 Лабораторная работа № 8. Организация прерывания

Цель работы:

-       освоение принципов организации работы микроконтроллера в режиме прерывания;

-       освоение принципов организации циклических и разветвленных программных структур в микроконтроллере;

-       освоение методики вычисления и измерения параметров смоделированного устройства (длительности различных уровней формируемых импульсов).

8.1  Оборудование рабочего места

Компьютер, программа PIC Simulator IDE.

 

8.2  Практические сведения и методические рекомендации

В исследемом устройстве осуществляется сканирование двух каналов передачи, т.е. производится периодическая смена этих каналов с остановкой их смены в интервале времени наличия сигнала прерывания. При этом каждая из этих "раскладок" должна фиксироваться в течение некоторого оптимального интервала времени. При появлении сигнала прерывания и на время его наличия, т.е. в интервале времени отработки этого сигнала, сканирование должно быть остановлено и возобновлено при его пропадании. Следовательно, речь идет о необходимости "ухода" рабочей точки программы (на время наличия сигнала прерывания) в подпрограмму прерывания, с последующим выходом из него по снятию сигнала прерывания.

Определимся с терминологией. Для удобства объяснения и восприятия целесообразно разделить рабочую часть программы на две части. Условимся называть группу команд, которая отрабатывается после ухода в прерывание, как подпрограмму прерывания, а все остальное – "основным телом" программы.

"Технология" ухода в ПП прерывания следующая. Если активный перепад внешнего, управляющего сигнала на выводе RB0/INT, сформируется в интервале времени отработки "зоны" разрешения прерываний, то рабочая точка программы "прыгнет" на начало ПП прерывания, после чего эта подпрограмма начнет отрабатываться.

В идеале, "зона" разрешения прерываний должна включать в себя всё "основное тело" программы, но специфика реального устройства такова, что возможен "ложный уход" в прерывание во время перестройки проверяемых каналов, которая происходит в течение некоторого интервала времени, чего допустить нельзя.

ПП START должна начаться с команды запрета всех прерываний clrf IntCon. Уходы в прерывания должны происходить позднее. Далее программа отрабатывается (исполняется) до начала "зоны" разрешения прерываний. В начале этой "зоны", прерывания по входу RB0/INT разрешаются, после чего программа исполняется "в режиме ожидания прерываний". В конце этой "зоны", прерывания запрещаются, и рабочая точка программы переходит на новый "виток" полного цикла "основного тела" программы.

В "зоне" разрешения прерываний, могут наступить два события:

-        если прерывания нет, то программа исполняется в пределах "основного тела" программы;

-       если прерывание есть (на выводе RB0/INT сформировался активный перепад), то     происходит переход рабочей точки программы на начало исполнения ПП прерываний.

Такой переход происходит по стеку, т.е. в стек записывается адрес следующей команды. Это нужно для того, чтобы после отработки ПП прерывания, произошел возврат на эту "следующую" команду.

Последней командой ПП прерываний всегда должна быть команда retfie. Она используется только для возврата из ПП прерывания. По этой команде, осуществляется возврат по стеку.

И еще одна очень важная "деталь": в состав  ПП прерывания, в обязательном порядке, должна входить команда сброса флага задействованного источника прерываний (или флагов, если таких источников несколько). В нашем случае используется прерывание по входу RB0/INT. В этом случае команда сброса флага должна выглядеть так: bcf  IntCon,1. В большинстве случаев команду (команды) сброса флага (флагов) прерывания помещают непосредственно перед командой retfie. При отсутствии команды сброса флага прерывания рабочая точка программы, после ухода в первое прерывания, начнет неконтролируемо "метаться" между ПП прерывания и "основным телом" программы (программа "глюк").

Рекомендуется, в начале ПП прерывания, сохранить содержимое регистров STATUS и W в специально созданных, под это дело, регистрах общего назначения (стандартные названия: Stat_Temp и W_Temp, но они могут быть и другими), а в конце ПП прерывания восстановить их содержимое. Дело в том, что по ходу исполнения ПП прерывания содержимое регистров STATUS и W может измениться, и после возврата из ПП прерывания это содержимое может негативным образом повлиять на исполнение программы в "основном теле" программы.

Итак, для организации работы с прерываниями (в нашем случае по входу RB0/INT) необходимо: 

-       в "шапке" программы назначить вектор прерывания;

-       назначить источник прерывания (INTCON);

-       определить активный фронт прерывания (OPTION);

-       создать "зону" разрешения прерываний;

-       в начале ПП прерывания, сохранить, а в конце ПП прерывания восстановить содержимое регистров STATUS и W;

-       перед осуществлением возврата из ПП прерывания сбросить флаг прерывания выбранного источника прерываний;

-       в самом конце ПП прерывания исполнить команду retfie.

Исходя из того, что рабочая точка программы должна находиться в ПП прерывания все время, пока присутствует управляющий сигнал, нужно организовать проверку типа "несущая есть/нет?" (опрос клавиатуры), с уходом рабочей точки программы в циклическую ПП задержки (при наличии несущей), основой которой является многоразрядный счетчик, и выходом из нее при "пропадании" сигнала.

В "основном теле" программы сначала нужно произвести подготовительные операции (ПП START). Необходимо чем-то переключать направления проверки, следовательно, нужно создать нечто типа "триггера", который управлял бы сменой направления проверки. Состояние этого "триггера" должно периодически опрашиваться, и в зависимости от этого должен быть осуществлен переход на тот или иной канал.

Определяемся с выводами портов. Задействуем порт В. Входом внешнего прерывания INT является вывод RB0, следовательно, вывод RB0/INT необходимо настроить на работу "на вход". Никакой другой вывод порта (любого) нельзя назначить входом внешнего прерывания INT, так как этот вид прерываний "жестко привязан" именно к выводу RB0.

Выход, с которого поступает сигнала прерывания, – с открытым коллектором, поэтому необходимо включить подтягивающие резисторы порта В. В этом случае подтягивающий резистор вывода RB0/INT будет являться коллекторной нагрузкой каскада с открытым коллектором. Можно экспериментально проверить состояние каскада с открытым коллектором: при отсутствии сигнала транзистор закрыт, а при его наличии открыт, что с учетом подтягивающего резистора вывода RB0/INT соответствует единичному уровню, если сигнала нет, и нулевому уровню, если он есть.

Выходом управления переключением каналов передачи можно назначить любой из оставшихся выводов порта В. В нашем устройстве выбран вывод RB2. Этот вывод нужно настроить на работу "на выход". Переключения будут производиться между двумя каналами: 1-му каналу соответствует единица на выводе RB2, а 2-му каналу – ноль на выводе RB2. В зависимости от того, где произошло прерывание (при сканировании первого или второго канала),  в подпрограмме прерывания формируются колебания определенной частоты.

8.3  Рабочее задание

8.3.1     Ввести представленную ниже программу работы устройства с прерываниями, сохранить ее под именем Interrupt (Прерывание) и проассемблировать.

; Scanner with interruptions

;===============================

; Microcontroller PIC16F84A

; Clock Frequency 4.0 MHz

;===============================

Trigg           equ             0Ch

W_Temp    equ             0Dh

Stat_Temp  equ             0Eh

Sec_H         equ             0Fh

Sec_L         equ             1Bh

Sec_1                   equ             1Ch

Sec_2                   equ             1Dh

Sec_F                  equ             1Eh

Sec_FF       equ             1Fh

;===============================

                   org              0

                   goto            START

;===============================

                   org              4

;*******************************

INT             movwf        W_Temp

                   movf           Status,W

                   movwf        Stat_Temp

;-------------------------------

                   movlw         .15

                   movwf        Sec_FF

                   btfsc           Trigg,0

                   goto            F1

                   movlw         .150

                   goto            F0

F1               movlw         .50

F0               movwf        Sec_F

                   call              FF

;===============================

EndInt         bcf              IntCon,1

                   movf           Stat_Temp,W

                   movwf        Status

                   swapf          W_Temp,F

                   swapf          W_Temp,W

                   retfie

;===============================

FF              movwf        Sec_F

                   bcf              PortB,3

PAUSE_F0 clrwdt

                   decfsz         Sec_F,F

                   goto            PAUSE_F0

;-------------------------------

                   movwf        Sec_F

                   bsf              PortB,3

PAUSE_F1 clrwdt

                   decfsz         Sec_F,F

                   goto            PAUSE_F1

;-------------------------------

                   decfsz         Sec_FF,F

                   goto            FF

                   return

;*******************************

START       clrf              IntCon

                   clrwdt

                   bsf              Status,RP0

                   movlw         .1

                   movwf        TrisB

                   movlw         .0

                   movwf        Option_REG

                   bcf              Status,RP0

;-------------------------------

TRIGGER  btfsc           Trigg,0

                   goto            Mark_1

                   movlw         .251

                   movwf        PortB

                   goto            Mark_0

Mark_1       movlw         .255

                   movwf        PortB

;-------------------------------

Mark_0       movlw         .121

                   movwf        Sec_1

PAUSE_D  clrwdt

                   decfsz         Sec_1,F

                   goto            PAUSE_D

;===============================

                  movlw         .245

                   movwf        Sec_H

                   movlw         .255

                   movwf        Sec_L

;-------------------------------

                   movlw         .144

                   movwf        IntCon

;-------------------------------

PAUSE       clrwdt

                   decfsz         Sec_L,F

                   goto            PAUSE

                   incfsz          Sec_H,F

                   goto            PAUSE

;-------------------------------

                   clrf              IntCon

                   incf             Trigg,F

                   goto            START

;*******************************

                   End

 

8.3.2     Вывести на экран монитора индикаторы порта В и осциллограф, а также открыть окно Tools/Microcontroller View (см. рисунок 8.1).

8.3.3     Запустить работу симулятора.

Рисунок 8.1

8.3.4     Нажимая в окне Microcontroller View кнопку T около вывода INT/RB0 порта B, подать сигнал запроса прерывания и наблюдать за работой программы с помощью индикаторов (Tools/8xLED Board) и осциллографа (Tools/Oscilloscope).

8.3.5     Повторить опыт несколько раз и пронаблюдать за изменениями формируемых выходных сигналов.

8.3.6     Измерить параметры формируемых сигналов.

8.4  Задания на СРС

Реализовать функцию устройства с тремя каналами сканирования.

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

1 Объяснить структуру исследованной программы и ее работу.

2 Как осуществляется работа устройства с прерывания?

 

Список литературы

1.     Шанаев О.Т. Система моделирования Electronic Workbench / на казахском и русском языках. – Алматы: АИЭС, 2003.

2.     Шанаев О.Т. Цифровые устройства и микропроцессоры. Методические указания к выполнению курсовой работы. – Алматы: АИЭС, 2008.

3.     Угрюмов Е. П. Цифровая схемотехника. – СПб.: БХВ-Петербург, 2004.

4.     Токхайм Р. Микропроцессоры. Курс и упражнеия: Пер. с. англ. – М.: Мир, 1988.

5.     Уэйкерли Дж. Ф. Проектирование цифровых устройств: Пер. с. англ. – М.: Постмаркет, 2002.

6.     Хамахер К. И др. Организация ЭВМ. Пер. с. англ. – СПб.: Питер, 2003.

7.     Сугано Т. Дж., Уидмер Н. С. Цифровые системы. Теория и практика: Пер. с англ. – М.: Издательский дом “Вильямс”, 2004.

 

ОГЛАВЛЕНИЕ 

Введение  3

1 Лабораторная работа № 1. Запоминающие устройства  4

2 Лабораторная работа № 2. Устройство ввода информации  9

3 Лабораторная работа № 3. Организация системы памяти  13

4 Лабораторная работа № 4. Модель MP4M   15

5 Лабораторная работа № 5. Система Intel 8085  23

6 Лабораторная работа № 6. Организация работы с подпрограммами  30

7 Лабораторная работа № 7. Микроконтроллеры PIC16F8X   35

8 Лабораторная работа № 8. Организация прерывания  44

Список литературы   51

 

Сводный план 2012 г., поз. 168