- •Оглавление
- •Микропроцессорная техника
- •Введение
- •1. Описание лабораторного стенда
- •2. Лабораторная работа № 1 синтез управляющего автомата
- •Лабораторный макет управляющего автомата
- •Программирование комбинационной схемы
- •Операционный автомат
- •2.3. Задание
- •2.4. Порядок выполнения работы
- •2.5. Контрольные вопросы
- •3. Лабораторная работа № 2 архитектура однокристального микропроцессора
- •3.1. Описание микроконтроллера
- •3.2. Назначение и использование команд монитора
- •3.2.1. Обращение к программе монитор
- •3.2.2. Команды монитора
- •3.3. Система команд процессора кр580ик80а.
- •3.4. Подключение объекта управления
- •3.5. Задание
- •3.6. Порядок выполнения работы
- •3.7. Контрольные вопросы
- •3.8. Литература
- •4. Лабораторная работа № 3 программное управление исполнительным механизмом
- •4.1. Организация ввода-вывода в эвм
- •4.2. Подключение объекта управления к портам ввода/вывода
- •4.3. Задание
- •4.4. Программирование системы управления
- •4.5. Порядок выполнения работы
- •4.6. Контрольные вопросы
- •4.7. Литература
- •5. Лабораторная работа № 4 вывод данных на внешний динамический индикатор
- •5.1. Организация динамической индикации
- •5.2. Подключение индикатора
- •4.3. Задание
- •5.4. Порядок выполнения работы
- •5.5. Контрольные вопросы
- •5.6. Литература
- •6. Лабораторная работа № 5 реализация релейного закона управления на эвм
- •6.1. Подключение объектов управления
- •6.2. Задание
- •6.3. Порядок выполнения работы
- •6.4. Контрольные вопросы
- •4.6. Литература
- •7. Лабораторная работа № 6 архитектура и система команд процессора intel 286
- •7.1. Архитектура процессора intel 286
- •7.2. Особенности программирования при выполнении работы
- •7.3. Задание
- •7.4. Порядок выполнения работы
- •7.6.3. Примеры команд языка Ассемблер
- •7.7. Литература
- •8. Лабораторная работа № 7 работа intel 286 в реальном масштабе времени
- •8.1. Прерывания в эвм
- •8.2. Задание
- •8.3. Порядок выполнения работы
- •8.4. Контрольные вопросы
- •8.5. . Литература
- •9. Лабораторная работа №8 формирование аналогового сигнала
- •9.1. Плата ввода-вывода l-154
- •9.2. Программное обеспечение платы
- •9.3. Задание
- •9.4. Порядок выполнения работы
- •9.5. Контрольные вопросы
- •9.6. Литература
- •10. Лабораторная работа № 9 Ввод аналогового сигнала
- •10.1. Ввод аналоговыхданных
- •10.2. Задание
- •10.3. Порядок выполнения работы
- •10.4. Контрольные вопросы
- •10.5 Литература
- •11. Лабораторная работа №10 программируемый таймер
- •11.1. Программируемый таймер
- •11.2. Режимы работы таймера
- •11.3. Подключение таймера в контроллере мс2721
- •11.4. Задание
- •11.5. Выполнение работы
- •11.6. Контрольные вопросы
- •11.7. Литература
8.2. Задание
Реализовать программное управление заданным дискретным объектом в реальном масштабе времени.
8.3. Порядок выполнения работы
Получить у преподавателя временную .
Написать на Паскале разделы программы с описанием модулей, меток, констант и переменных. Указать на использование библиотечных модулей Паскаля Crt, Dos.
Написать подпрограмму обработки прерывания, заголовок которой в «Паскале» имеет вид:
Procedure Int(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:word); INTERRUPT;
Int- имя программы обработки прерывания. Список параметров обязательно должен иметь указанный вид. Некоторые параметры в заголовке программы могут быть опущены. Но они могут опускаться только подряд, начиная с первого элемента списка. Опускать промежуточные элементы списка запрещено. Параметры передаются в подпрограмму через новые значения регистров. При вызове подпрограммы обработки прерывания старое содержимое регистров помещается в стек, из которого восстанавливается при возврате. В регистры загружаются новые значения. Ошибки, связанные с передачей параметров в прерываниях, часто не отмечаются при трансляции.
Можно использовать процедуру без указания списка параметров, назначая переменным процедуры абсолютные адреса, совпадающие с адресами переменных в основной программе. В этом случае переменная подпрограммы и переменная основной программы, которые должны быть одного типа, будут располагаться в одном месте оперативной памяти. Они будут тождественны. Для этого в разделе описания переменных подпрограммы используют описания переменных:
Var A: T absolute B; , где: A и B – переменные соответственно подпрограммы и основной программы, T – тип переменной.
Тело процедуры обработки прерывания должно содержать все операции, которые необходимо выполнить в данном такте. В завершении программы обработки должна быть команда разрешения контроллеру прерывания вновь реагировать на очередное прерывание: port[$20]:=$20;. Оператор возврата из прерывания в неявной форме присутствует в описании процедуры. Его не нужно вводить в явном виде.
Организовать в теле подпрограммы программный счетчик прерываний, значения которого могут быть переданы в основную программу.
В теле основной программы определить адрес своей программы обработки прерывания. Для этого присвоить некоторой переменной An типа pointer (указатель) значение функции addr, возвращающей адрес переменной. Например, An:=addr(Int);
Переменная An будет иметь значение дальнего адреса программы обработки прерывания.
Запомнить старый (системный) адрес обработки прерывания. Для этого используется процедура GetIntVec($1C, A_old);. Первый параметр процедуры – шестнадцатиричный номер вектора прерывания, адрес программы обработки которого мы сохраняем. Знак $ указывает на шестнадцатеричную систему счисления. В примере сохраняется адрес программы обработки прерывания с вектором $1C. Второй параметр – имя переменной типа Pointer, в которой будет храниться адрес старой программы обработки
Установить новый адрес программы обработки прерывания. Для этого используют процедуру SetIntVec($1C,An);. Первый параметр процедуры -номер вектора прерывания, адрес программы обработки которого мы устанавливаем. Второй параметр – имя переменной типа Pointer, в которой содержится адрес новой программы обработки. При выполнении смены программ обработки процедура автоматически запрещает прерывания.
Используя значения счетчика прерываний составить программу заданного перемещения ИМ, предусмотрев выход из основной программы пользователя по нажатию клавиши.
Организовать при выходе из программы пользователя восстановение старого вектора прерывания, используя процедуру SetIntVec($1C,A_old);.
Отчет должен содержать название и цель работы, вербальное описание алгоритма, блок-схему программы управления, программу с комментариями.