| Главная страница | | Архитектура микроЭВМ | | Принципы обмена данными | | Лабораторные работы | | Примеры систем | | Программно-логическая модель | | Справочная информация |
 
Однокристальная микроЭВМ МК Блок контроля технологического параметра

   ПРОГРАММА РАБОТЫ МИКРОЭВМ

    Основная функция блока - N-кратный опрос и оцифровка аналогового сигнала, вычисление его среднего значения и запоминание этого значения в памяти. Через время Т выполняется повторный опрос. Если новое среднее значение равно предыдущему, то в памяти оно повторно не запоминается, а содержимое какого-то регистра (например, R1) увеличивается на 1, и так далее. Если при каком-то опросе получается иное (отличное от предыдущего) среднее значение параметра, то старое значение из памяти и код количества его повторений из регистра R1, уменьшенный на 1, передаются в компьютер через порт ЕСР. Таким образом используются возможности работы порта ЕСР в режиме сжатия данных. На время передачи формируется сигнал Stop. После окончания передачи новое среднее значение опять запоминается в памяти и цикл опросов повторяется. Код повторений при работе порта ЕСР в режиме сжатия не может превышать величины 127 (7 двоичных разрядов). Поэтому передача данных в компьютер должна выполняться и при достижении содержимого регистра R1 этой величины.

    Опрос через период Т можно реализовать с использованием таймера/счетчика (например, Т/С0) микроЭВМ, работающего в режиме таймера, когда он изменяет свое состояние через каждый машинный цикл (1мкс при частоте кварцевого генератора, равной 12 МГц). Следовательно таймер необходимо настраивать на различные периоды пересчета от 100 мкс (К=1, К*100=Т=100 мкс) до 900 мкс (К=9, К*100=Т=900 мкс.). Таймер может работать как 8 разрядный двоичный счетчик с перезагрузкой константы пересчета (режим 2), так и как 16-ти разрядный счетчик (режим 1). В режиме 2 можно получить максимальный период пересчета таймера равный 256 мкс, что для нашего случая не подходит. Поэтому следует использовать режим 1. В этом режиме при переполнении таймера он переходит в состояние 00...000 и в него нужно заново засылать константу пересчета Т*=2 в 16 степени - К*100. Для того, чтобы не вычислять в микроЭВМ эту константу на основе величины К при каждом переполнении таймера, эту константу необходимо определять при формировании параметра К (при обработке прерывания от кнопки S1), запоминать ее в регистрах (например, старший байт - в регистре R5, младший байт - в регистре R4) и при переполнении таймера пересылать старший байт в ТН0, младший - в ТL0.

    Программное обеспечение микроЭВМ должно содержать следующие части:
    - программу инициализации, которая должна выполнять установку некоторых регистров в исходное состояние, настройку таймера T/C0 на работу в режиме 1.
    - программу обработки прерывания от кнопки S1 - программу формирования параметра К и вычисления констант пересчета таймера Т/С0.
    - программу обработки прерывания от кнопки S2, главной функцией которой будет разрешение выполнения микроЭВМ своей основной программы.
    - основную программу - программу опроса аналогового сигнала и передачи данных в персональный компьютер. Фактически эта программа должна быть продолжением программы инициализации.

    Программа формирования параметра К
    Программа обработки прерывания от кнопки S1 является программой обработки внешнего прерывания INT0. При нажатии на кнопку S1 и ее отпускании на выходе триггера D3 формируется импульсный сигнал #INT0. Длительность нажатия кнопки может быть произвольной, поэтому необходимо использовать реакцию микроЭВМ на фронт 1/0 сигнала #INTO - фронт сигнала в момент отпускания кнопки S1. Значение параметра К будем формировать в регистре R7 микроЭВМ. Оно может принимать значения от 1 до 9. В программе инициализации содержимое R7 должно устанавливаться равным одному из этих значений (например, 1) и это значение должно при инициализации микроЭВМ быть выведено на индикатор.
    При каждом нажатии кнопки S1 - при каждом входе в обработчик прерывания INT0 содержимое регистра R7 должно увеличиваться на 1 и также выводиться на индикатор.
    Для вычисления программным образом в микроЭВМ величины Т*=2 в 16 -К*100 потребуется выполнять операции над 16 разрядными числами. Однако можно воспользоваться тем, что количество возможных значений величины К и соответственно величины Т* ограничено. Тогда можно вычислить величины Т* заранее и записывать в программе обработки прерывания в регистры R4 и R5 эти величины как константы.
    После формирования нового значения параметра К в регистре R7, это значение должно быть выведено на индикатор через двунаправленный порт РО по адресу, равному 11111011b.

Блок-схема алгоритма
программы
обработки
прерывания
от кнопки S1

Текст программы

    Программа обработки прерывания от кнопки S2
    Кнопка S2 может быть нажата несколько раз. При первичном нажатии программа обработки прерывания может только разрешить выполнение основной программы микроЭВМ после того как была выполнена программа инициализации. При повторном нажатии программа очевидно должна не только подтвердить разрешение, но и выполнить действия, выполнявшиеся программой инициализации - задание начальных величин старого и нового средних значений контролируемого параметра. Программа также должна считывать и запоминать значение величины N.
Блок-схема алгоритма
программы
обработки
прерывания
от кнопки S2

Текст программы

    Программа инициализации и контроля технологического параметра
    При инициализации прежде всего необходимо установить пассивные значения выходных сигналов обмена блока с портом ЕСР, чтобы порт не воспринял ложного обращения. Также необходимо установить нулевое значение сигнала Stop и установить признак запрещения начала работы блока (разряд F0), установить признак отсутствия переполнения кода количества повторений (ячейка 11h).
    Программа устанавливает начальное состояние параметра К (1) и выводит его на индикатор, разрешает обработку прерываний по перепаду сигналов INT0, INT1 и устанавливает одинаковые высокие приоритеты обоих прерываний, что запрещает прерывание одного прерывания другим. После установки режима работы таймера/счетчика программа ожидает установки признака начала работы. Далее программа с периодом Т опрашивает значение аналогового сигнала. Чтобы не использовать прерывание от таймера в программе, начало опроса аналогового сигнала определяется программным анализом разряда переполнения таймера с последующей перезагрузкой константы пересчета. В программе регистр R2 используется для суммирования значений кода с АЦП для последующего вычисления среднего значения. Величина N хранится в ячейке 23h. Значение кода 00 в ячейке 23h свидетельствует о первом вычислении среднего значения, в ячейке 20h хранится предыдущее (старое) среднее значение, в ячейке 21h - новое среднее значение. Состояние 00 ячейки 11h свидетельствует о том, что получено значение, отличающееся от предыдущего и следовательно старое среднее значение должно быть заменено новым; состояние 01 - о том, что состояние регистра R1 - кода количества повторений превысило значение 127, и следовательно старое значение должно остаться неизменным. Анализ готовности АЦП также осуществляется программно. Максимальное значение кода с выхода АЦП равно 31, максимальное количество опросов N равно 8, следовательно переполнения регистра R2 при вычислении среднего значения произойти не может (31*8= 248<255). Перед выводом полученного среднего значения и кода повторений в порт ЕСР, код в регистре R1 уменьшается на единицу.
    Поставленная задача решается при отсутствии согласования режимов работы источника данных и порта ЕСР. Поэтому считается, что порт обязательно устанавливает высокий уровень сигнала SELECTIN# (ECP MODE-1284Active) и анализировать значение этого сигнала в микроЭВМ нет необходимости. При обмене данными выполняются только передачи от внешнего устройства (микроЭВМ) к порту ЕСР. Поэтому микроЭВМ должна реализовывать временную диаграмму обмена - цикл данных (среднее значение аналогового сигнала) и командный цикл (количество последовательных повторений этого среднего значения). Для инициализации обмена микроЭВМ должна посылать в порт запрос, устанавливая низкое значение сигнала FAULT# (Р2.6). После получения низкого значения сигнала INIT# от порта (Р2.1) микроЭВМ подтверждает запрос на передачу в обратном направлении низким значением сигнала PERROR (Р2.5). МикроЭВМ передает данные из ячейки памяти на входные контакты порта через порт Р1 и формирует высокий уровень сигнала BUSY (Р2.4) для идентификации передачи данных. При установившемся значении кода на входах PD7-PD0 внешнее устройство формирует низкий уровень сигнала ACK (P2.3), порт высоким уровнем сигнала AUTOFD (Р2.0) подтверждает прием. МикроЭВМ устанавливает высокий сигнал ASK (P2.3). Порт устанавливает низкий уровень сигнала AUTOFD (Р2.0, показывая готовность к приему следующего байта. Следующий байт порт уже передает как RLE - количество повторений, устанавливая низкий уровень сигнала BUSY (Р2.4). На время вывода байта и числа его повторений прерывания в микроЭВМ запрещаются. На это же время устанавливается высокое значение сигнала Stop.

Блок-схема алгоритма
программы
инициализации
и контроля
параметра


Текст программы
инициализации

Текст программы
контроля параметра

   ТЕПЕРЬ ДЛЯ ВЫПОЛНЕНИЯ ЗАДАНИЯ ТРЕБУЕТСЯ:

- отладить программу работы микроЭВМ Отладка программы

| На главную страницу | На начало раздела | Задание на разработку системы | На предыдущий этап | На начало страницы | © КСиТ МИФИ, 2000 г.