Модель светофора |
Главная / ЭКВМ / Программы для ЭКВМ / Учебные задачи |
Описание
Изучение управляющей программы клавишной ЭВМ "Электроника МК" и самостоятельное изменение диаграмм работы модели светофора позволяет получить навыки в программировании. Модель позволяет собрать макет перекрестка с одним центральным четырехсторонним светофором или с четырьмя односторонними, расположенными соответственно перед пересечением проезжих частей. На основе модели могут быть изготовлены и другие устройства, например миниатюрный переключатель светодиодных гирлянд. Возможно увеличение числа светодиодов в каждом из каналов до четырех без изменения схемы транзисторных ключей. Возможно также расширение числа каналов с шести до восьми без изменения управляющей программы ЭКВМ путем добавления в устройство двух транзисторных ключей аналогично существующим. Сборка моделиПринципиальная электрическая схема модели и перечень элементов приведены на рисунке. Устройство состоит из шести ключей, выполненных на n-p-n транзисторах VT1 - VT6 и резисторах R1-R12 по схеме с общим эмиттером. Входы ключей подключены к соответствующим линиям шины данных параллельного порта ЭВМ (разъем "ИПР"). В цепь коллектора каждого транзистора включен токоограничивающий резистор R13-R18 и светодиоды VD1-VD12. Питание устройства может производится от разъема "ВУ" ЭКВМ, как указано в схеме, или от любого внешнего источника напряжением от 9 до 15 В. Ток потребления устройства от источника питающего напряжения - не более 200 мА. При питании напряжением менее 15 В количество светодиодов в канале увеличивать не рекомендуется.
Программа с хранением диаграмм в памяти программ ЭКВМПрограмма (табл. 1) размещается в памяти программ ЭКВМ с начала любой страницы (адрес кратный числу 100) и занимает две страницы. Далее предполагается, что программа загружена с адреса 0000. Программа состоит из двух частей - собственно управляющей программы (41 байт с нулевого адреса) и одной или нескольких таблиц, размещенных в памяти программ ЭКВМ и описывающих временные диаграммы работы модели светофора (с адреса 100). Перед запуском программы в регистр RA записывается адрес начала нужной таблицы в памяти программ - значения 100, 120 или 160 соответственно. Запуск программы производится нажатием клавиш "В/О", "С/П". Остановка программы - нажатием "С/П". Таблица 1
В адресах 00-02 в регистр R9 заносится число 100. В адресах 03-09 число 1 записывается в регистры функций R9090 (устанавливается режим параллельного порта - статический) и R9093 (тип операции - передача данных во внешнее устройство). В 10-13 адрес начала таблицы диаграммы из RA передается в R9042 (индексный регистр памяти программ). В 14-22 из таблицы считывается и вычисляется продолжительность очередного шага диаграммы. Считывание значения производится из регистра R9044 (чтение содержимого памяти программ с автоинкрементом). Автоинкремент в данном случае означает увеличение значения индексного регистра R9042 на единицу после выполнения операции чтения. Первый считанный байт умножается на число 100 из R9. Второй байт складывается с полученным результатом. В 23-24 полученное значение сравнивается с нулем. Если значение продолжительности шага равно нулю, происходит переход на адрес 10. Таким образом диаграмма повторяется циклически до останова программы пользователем. В 25-27 ненулевое значение продолжительности, выраженное в сотых долях секунды, записывается в R9050 (таймер 0). В 28-33 значение маски, описывающей состояние светодиодов, считывается из R9044 (чтение содержимого памяти программ с автоинкрементом) и заносится в R9091 (регистр сигналов D0-D7 параллельного порта). В 34-38 проверяется значение регистра R9050 (таймер 0). Пока значение не равно нулю команда перехода возвращает программу на повторное чтение регистра таймера. При этом каждые 0,01 секунды число записанное в R9050 уменьшается на единицу. В 39-40 происходит безусловный переход на адрес 14. С него начинается разбор очередной строки таблицы диаграммы. В адресах 100-113 расположена таблица, соответствующая диаграмме работы простого светофора. В 120-157 размещена диаграмма работы более сложной модели с мигающим зеленым сигналом и одновременным включением красного и желтого перед зеленым. В 160-167 находится диаграмма предупреждающего светофора (мигающий желтый). Подробно диаграммы работы описаны в приложении. Каждая таблица состоит из строк по три байта. В первых двух байтах хранится продолжительность шага диаграммы. В первом - целые секунды, во втором - сотые доли. В третьем байте находится маска. Если продолжительность равна нулю, значение маски не считывается, поэтому последняя строка каждой таблицы может состоять только из двух байт. Программа с хранением диаграмм в регистрах памятиПрограмма (табл. 2) размещается в памяти программ ЭКВМ с начала любой страницы и занимает 33 байта. Далее предполагается, что программа загружена с адреса 0000. Таблицы, описывающие временные диаграммы работы модели светофора, размещаются в регистрах данных. Перед запуском программы в регистр RA записывается номер регистра, соответствующий началу нужной таблицы. Запуск программы производится нажатием клавиш "В/О", "С/П". Остановка программы - нажатием "С/П". Таблица 2
В адресах 00-02 в регистр R9 заносится число 100. В адресах 03-09 число 1 записывается в регистры функций R9090 (устанавливается режим параллельного порта - статический) и R9093 (тип операции - передача данных во внешнее устройство). В 10-13 номер регистра начала таблицы диаграммы из RA передается в R4. Поскольку при косвенном обращении к R4 автоикремент (автоматическое прибавление единицы к содержимому регистра) происходит перед выполнением операции, из содержимого RA предварительно вычитается единица. Таким образом, при первом обращении к диаграмме командой КИП4 будет считано первое число из таблицы. В 14-16 из таблицы считывается продолжительность очередного шага диаграммы и сравнивается с нулем. Если значение продолжительности шага равно нулю, происходит переход на адрес 10. Таким образом диаграмма повторяется циклически до останова программы пользователем. В 17-21 считанное из регистра памяти время в секундах умножается на 100 (из R9) для получения значения в сотых долях секунды. Ненулевое значение продолжительности, выраженное в сотых долях секунды, записывается в R9050 (таймер 0). В 22-25 значение маски, описывающей состояние светодиодов, считывается из таблицы (косвенно по содержимому R4) и заносится в R9091 (регистр сигналов D0-D7 параллельного порта). В 26-30 проверяется значение регистра R9050 (таймер 0). Пока значение не равно нулю команда перехода возвращает программу на повторное чтение регистра таймера. При этом каждые 0,01 секунды число записанное в R9050 уменьшается на единицу. В 31-32 происходит безусловный переход на адрес 14. С него начинается разбор очередной строки таблицы диаграммы. Подробно диаграммы работы описаны в приложенииБ. Каждая таблица для этой программы состоит из строк по два числа. В первом хранится продолжительность шага диаграммы в секундах и долях секунды. Если продолжительность равна нулю, значение маски не считывается, поэтому последняя строка каждой таблицы может состоять только из одного значения. В табл. 3 приведены диаграммы, аналогичные содержащимся в программе из табл. 1. Указанные в таблице значения следует занести в регистры памяти перед запуском программы. Для приведенных в таблице номеров регистров в RA следует занести значения 100, 120 или 160 соответственно. Можно перенести таблицы в другие регистры памяти, одновременно изменяя содержимое RA. Таблица 3
Программа с автоматическим переключением диаграммы работыНетрудно изменить приведенную программу таким образом, чтобы диаграммы работы светофора переключались автоматически в зависимости от загрузки перекрестка по направлениям или в зависимости от времени суток. Для отключения светофора в ночное время достаточно дополнить программу из табл 2. несколькими командами (см. табл. 4). Длина программы при этом увеличивается с 33 до 49 байт. Таблицы, описывающие временные диаграммы работы модели светофора, размещаются в регистрах данных и аналогичны таблицам предыдущей программы. Перед запуском программы в регистр RA записывается номер регистра, соответствующий началу диаграммы для дневного времени, в RC - для ночного. В RB и RD записывается время переключения в дневной и ночной режим (RD>RB) в часах и минутах. В качестве примера можно указать значения RA=120; RC=160; RB=6,30; RD=23,30. В этом случае светофор будет работать по диаграмме 2 с 6-30 до 23-30 и по диаграмме 3 в остальное время. Запуск программы производится нажатием клавиш "В/О", "С/П". Остановка программы - нажатием "С/П". Таблица 4
В адресах 00-02 в регистр R9 заносится число 100. В адресах 03-09 число 1 записывается в регистры функций R9090 (устанавливается режим параллельного порта - статический) и R9093 (тип операции - передача данных во внешнее устройство). В 10-13 из регистра функции R9055(часы реального времени) считывается значение текущего времени в часах и минутах и заносится в R8. В 14-17 значение сравнивается с содержимым RB, если время больше RB, происходит переход на адрес 21. В 18-20 в стек вызывается содержимое RA - адрес начала дневной диаграммы и происходит переход на адрес 27. В 21-25 значение текущего времени извлекается из R8 и сравнивается с RD. Если текущее время меньше RD происходит переход на адрес 18. В 26 в стек вызывается содержимое RС - адрес начала ночной диаграммы. В 27-29 из адреса начала диаграммы вычитается единица и полученное значение заносится в R4. В 30-32 из таблицы считывается продолжительность очередного шага диаграммы и сравнивается с нулем. Если значение продолжительности шага равно нулю, происходит переход на адрес 10. В 33-37 считанное из регистра памяти время в секундах умножается на 100 (из R9) для получения значения в сотых долях секунды. Ненулевое значение продолжительности, выраженное в сотых долях секунды, записывается в R9050 (таймер 0). В 38-41 значение маски, описывающей состояние светодиодов, считывается из таблицы (косвенно по содержимому R4) и заносится в R9091 (регистр сигналов D0-D7 параллельного порта). В 42-46 проверяется значение регистра R9050 (таймер 0). Пока значение не равно нулю команда перехода возвращает программу на повторное чтение регистра таймера. При этом каждые 0,01 секунды число записанное в R9050 уменьшается на единицу. В 47-48 происходит безусловный переход на адрес 30. С него начинается разбор очередной строки таблицы диаграммы. Диаграммы работы светофораДиаграмма 1. Простой светофор. Диаграмма 2. Светофор с мигающим зеленым сигналом. Диаграмма 3. Предупреждающий светофор (мигающий желтый). Описание модели светофора в формате PDF: swetofor.pdf (574 kB). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
НПП "СЕМИКО" (383) 271-01-25 (многоканальный) |