Текст программы
Алгоритм программы 1. Настройка системных регистров и портов. 2. Опрос кнопок. 2.1 Проверка состояний переменных, хранящих значения длительности (ValF) периода и длительности цикла воздействия (ValT). Если значения вышли за пределы - установить допустимое крайнее значение. 2.2 Индикация состояния ValF и ValT на семи сегментных индикаторах. 2.3 Если нажата кнопка Пуск/Стоп - выходим из подпрограммы. 2.4 Если нажата кнопка +F то увеличиваем значение переменной ValF. 2.5 Если нажата кнопка -F то уменьшаем значение переменной ValF. 2.6 Если нажата кнопка +T то увеличиваем значение переменной ValT. 2.7 Если нажата кнопка -T то уменьшаем значение переменной ValT. 2.8 Если ничего не нажато - переходим к началу пункта Звуковое оповещение - воздействие началось. 3.1 Сохранить значение ValT во временной переменной, с которой будем работать. 3.2 Инициализировать таймер_1 значением необходимым для выдержки 0,5 сек (Больше выдержку не получить). 3.3 Разрешаем прерывания и запускаем таймер. Вместе с там начинаем выдавать импульс в порт лазера длительность 1 мкс. Длительность отрицательного фронта определяется задержкой, которая формируется функцией Delay100X, обеспечивающей задержку 0,01 сек * ValF. Дополнительно в функции Delay100X проводится опрос кнопки Пуск/Стоп, и, если та была нажата, устанавливается флаг этого факта (флаг отложенного выхода). 3.4 По выходу из функции, формирующей задержку происходит проверка значения оставшихся циклов T, которые предстоит обработать и декремент значения T. 3.5 Проверяется состояние флага отложенного выхода, если он активен, то пользователь прервал цикл воздействия. 3.6 Если флаг не был установлен и количество 6 секундных циклов еще не равно нулю, то переходим к пункту Обслуживаем вектор прерывания переполнения таймера. Когда таймер отсчитал 0,5 сек сюда передается управления и, используя дополнительную переменную, ведем подсчет срабатываний переполнения. Тем самым обеспечивается выдержка таймера 0,5 * 12 раз = 6 секунд. 5. Если значение T закончилось или был установлен флаг выхода, то выходим из функции, обслуживающей процедуру воздействия. 6. Издаем звуковой сигнал. 7. Переходим к конфигурации устройства – пункту 2.
Моделирование устройства в «Proteus ISIS»