Если накопление в канале завершилось, обработчик устанавливает счетчик ширины канала, добавляет накопленное значение в D7 к соответствующему элементу массива DATA (на который указывает А5), инкрементирует соответствующий элемент массива NORM (через А6), очищает регистр-аккумулятор (D7), декрементирует счетчик каналов и (если в счетчике каналов не нуль, т. е. развертка не завершилась) переходит на
Если завершилась и развертка, о чем говорит нуль в счетчике каналов D5, обработчик устанавливает указатели, ЭЛД-индикатор и выходные сигналы. Затем проверяется, не была ли нажата кнопка СТОП; такую проверку следует обязательно выполнять в конце (или начале) развертки, чтобы данные всегда усреднились по целому числу разверток. Если кнопка СТОП была нажата, программа переходит на метку stop sweep, в результате чего устанавливаются выход КОНЕЦ и стоп-флаг, а в вектор INT5 загружается адрес входной точки
Если кнопка СТОП не нажималась, программа проверяет, не следует ли завершить измерения ввиду отработки заданного на передней панели числа разверток (число оставшихся разверток хранится в памяти в переменной
Блок
Заметьте, что в процессе смены вектора нет опасности прерывания, потому что пока ЦП выполняет обработку прерывания, прерывания запрещены; поскольку мы не включаем их в обработчике прерывания, они остаются запрещенными.
Вход в обработчик через входную точку wait__trig осуществляется, если следующая развертка не должна начаться до получения внешнего сигнала запуска (параллельный порт А, бит 7). Поскольку нажатие на кнопку СТОП должно «пересиливать» запуск, программа сначала анализирует состояние входа СТОП (и переходит при наличии этого сигнала на метку
Измерительный прибор на основе микропроцессора можно сконструировать таким образом, чтобы весь сбор данных осуществлялся быстрой аппаратурой, а микропроцессор выполнял лишь функции начального запуска и вывода информации. Такой прибор будет работать с максимальной скоростью, определяемой быстродействием аппаратуры, а микропроцессор придаст ему гибкость и облегчит работу с ним. Разумеется, вы платите сложностью и стоимостью аппаратуры; кроме того, гибкость прибора может оказаться невысокой из-за фиксированной аппаратной организации. Если в противоположность такому подходу вы упрощаете аппаратуру и используете процессор для обработки данных в реальном времени, как это сделано в нашем примере, вы можете удешевить аппаратуру и повысить гибкость прибора за счет, возможно, его быстродействия. Во многих случаях, однако, быстродействие не имеет решающего значения, и выбор оказывается однозначным.