Переключатель гирлянд |
Главная / ЭКВМ / Программы для ЭКВМ / Работа с оборудованием |
ОписаниеПереключатель светодиодных гирлянд может быть собран по схеме, аналогичной схеме модели светофора, расширенной до восьми каналов. Переключатель гирлянд может использоваться для украшения жилых и служебных помещений, а также для изучения принципов работы программируемых автоматических устройств. Самостоятельная сборка переключателя позволит овладеть навыками конструирования и макетирования радиотехнических устройств. Переключатель гирлянд предназначен для подключения к клавишным ЭВМ, имеющим параллельный порт с восьмиразрядной шиной данных, например к ЭКВМ "Электроника МК-152". Количество светодиодов в каждом из каналов гирлянды может составлять от одного до четырёх. С целью повышения визуального эстетического эффекта от работы устройства вместо светодиодов к транзисторам могут быть подключены любые реле, подходящие по величине тока срабатывания и коммутируемому напряжению. Реле могут использоваться для управления группами светодиодов или ламп накаливания. Внимание! При сборке устройств, коммутирующих опасное для жизни напряжение переменного тока 220 В, необходимо предусмотреть защиту от случайного прикосновения к токоведущим частям и выполнять требования техники безопасности при проведении работ. По способу защиты человека от поражения электрическим током устройство должно соответствовать требованиям классов I или II по ГОСТ 12.2.007.0-75. Программа могжет быть использована для управления не только гирляндами, но и любыми другими исполняющими устройствами или приёмниками энергии. Программа "Переключатель гирлянд"Программа размещается в памяти программ ЭКВМ с нулевой страницы. Программа состоит из двух частей - собственно управляющей программы (97 байт с нулевого адреса) и одной или нескольких таблиц, размещенных в памяти программ ЭКВМ и описывающих временные диаграммы работы переключателя гирлянд. Каждая таблица содержит диаграмму работы и количество её повторов. Таблицы распологаются в памяти ЭКВМ постранично - с адресов, кратных 100 начиная с 100. Всего в память может быть загружено от 1 до 99 таблиц. Запуск программы производится нажатием клавиш "В/О", "С/П". Останов выполнения программы - нажатием "С/П". Файл girljanda-1.mkp версия 1.0 от 05.03.2011
Структура программы
Каждая таблица должна записываться с начала страницы. В кросс-компиляторе для этого может использоваться псевдооператор ".PAGE". Таблица диаграммы работы состоит из строк по три байта. В первых двух байтах хранится продолжительность очередного шага диаграммы. В первом - целые секунды, во втором - сотые доли. В третьем байте находятся данные для передачи в порт. Если продолжительность равна нулю, этот байт не считывается, поэтому последняя строка каждой таблицы может состоять только из двух байт. Из-за особенностей программы каждая таблица должна занимать не более одной страницы - то есть ста байт. Это 32 шага, с учётом байтов количества повторов и окончания таблицы. Исходный текст для кросс-компилятораФайл girljanda-1.mkl ; Программа "Переключатель гирлянд" ; Управление линиями параллельного порта ; в соответствии с заданными диаграммами работы ; любое количество диаграмм загружается в виде таблиц ; начиная со страницы 1 ; структура таблицы - в комментариях ; версия 1.0 от 05.03.2011 ; Используемые регистры ; R0 - цикл ; R9=100 (константа) ; RA - начало очередной диаграммы .CHARSET 1251 ; Кодировка текстовых строк по cp1251 (Win) .ORG 0 CX MA ; В RA число 0 2 F 10^X M9 ; Константа 100 1 PP M 9090 ; Статический режим работы параллельного порта PP M 9093 ; Тип операции - запись CX PP M 9091 ; Сброс линий порта A0: RMA RM9 - F X=0 A1 ; Если адрес диаграммы не равен 100 - перейти ; Если адрес окончания списка равен 100 .NUML TXT1 ; то вывести строку TXT1 "Нет диаграмм" (Она на этой же странице) PP M 9026 ; Вывод в строку комментариев R/S ; С/П A1: CX MA ; В RA число 0 ; Это на сто меньше, чем адрес начала первой диаграммы A2: RMA RM9 + ; Увеличить адрес текущей диаграммы на 100 MA RM9 FX^2 ; =10000 - F X!=0 A1 ; Если В RA 10000 - перейти на начало цикла диаграмм, ; так как последней нет - вся память занята RMA ; В RA - адрес текущей диаграммы K PRGM ; Считать содержимое памяти программ F X!=0 A0 ; Если 0 - перейти к повтору полного цикла диаграмм M0 ; Запомнить число в R0 для организации очередного цикла K NOT ; Операция логической инверсии байта NOT(255) = 0 F X!=0 A0 ; Если 255 (0FFh) - вероятна пустая страница, перейти к повтору цикла диаграмм A3: GSB UPR ; Обращение к подпрограмме UPR FL0 A3 ; Цикл повтора текущей диаграммы по содержимому R0 GOTO A2 ; Бесконечный цикл по списку диаграмм ;=============== "UPR" - подпрограмма однократного вывода диаграммы в параллельный порт ; Адрес начала диаграммы в RA, первый байт диаграммы - количество повторов UPR: RMA ; Пропустить первый (т.е. нулевой) байт страницы 1 + PP M 9042 ; Индексный регистр памяти программ UPR1: PP RM 9044 ; Считывание байта из памяти данных (с автоинкрементом) RM9 * ; x 100 PP RM 9044 ; Считывание байта из памяти данных (с автоинкрементом) + ; В RX - длительность шага диаграммы в сотых долях секунды F X!=0 UPR_E ; Длительность шага равна нулю - выход PP M 9050 ; Загрузить интервал в таймер 0 PP RM 9044 ; Считывание байта состояния линий порта PP M 9091 ; Запись в порт UPR2: PP RM 9050 ; Проверить состояние таймера 0 F X=0 UPR2 ; Повторять, пока не обнулится GOTO UPR1 ; Перейти к следующей строке таблицы UPR_E: RTN ; В/О ;================= Текстовые строки TXT1: .TEXT "Нет таблиц\0" ;========================= Диаграмма 1 ; Первый байт - количество повторов от 1 до 254 включительно ; байты 1 и 2 каждой группы - длительность шага в секундах и сотых долях, ; байт 3 в каждой группе - активные линии порта на данном шаге ; Линии: D0-младший бит (01h), D7 - старший бит (80h) ; Для этой программы не более 32 групп - диаграмма должна умещаться на одной странице .PAGE ; Начало новой страницы (псевдооператор) .DB 5 ; Количество повторов диаграммы 1 .DB 0,15,1 ; 0,15 c - D0 .DB 0,15,2 ; 0,15 c - D1 .DB 0,15,4 ; 0,15 c - D2 .DB 0,15,8 ; 0,15 c - D3 .DB 0,15,16 ; 0,15 c - D4 .DB 0,15,32 ; 0,15 c - D5 .DB 0,15,64 ; 0,15 c - D6 .DB 0,15,128 ; 0,15 c - D7 .DB 0,0 ; Конец диаграммы 1 ;========================= Диаграмма 2 .PAGE .DB 5 ; Количество повторов диаграммы 2 .DB 0,15,128 ; 0,15 c - D7 .DB 0,15,64 ; 0,15 c - D6 .DB 0,15,32 ; 0,15 c - D5 .DB 0,15,16 ; 0,15 c - D4 .DB 0,15,8 ; 0,15 c - D3 .DB 0,15,4 ; 0,15 c - D2 .DB 0,15,2 ; 0,15 c - D1 .DB 0,15,1 ; 0,15 c - D0 .DB 0,0 ; Конец диаграммы 2 ;========================= Диаграмма 3 .PAGE .DB 10 ; Количество повторов диаграммы 3 .DB 0,20,5 ; 0,2 c - D0, D2 .DB 0,20,0Ah ; 0,2 c - D1, D3 .DB 0,20,14h ; 0,2 c - D2, D4 .DB 0,20,28h ; 0,2 c - D3, D5 .DB 0,20,50h ; 0,2 c - D4, D6 .DB 0,20,0A0h ; 0,2 c - D5, D7 .DB 0,20,41h ; 0,2 c - D6, D0 .DB 0,20,82h ; 0,2 c - D7, D1 .DB 0,0 ; Конец диаграммы 3 ;========================= Диаграмма 4 .PAGE .DB 10 ; Количество повторов диаграммы 4 .DB 0,20,82h ; 0,2 c - D7, D1 .DB 0,20,41h ; 0,2 c - D6, D0 .DB 0,20,0A0h ; 0,2 c - D5, D7 .DB 0,20,50h ; 0,2 c - D4, D6 .DB 0,20,28h ; 0,2 c - D3, D5 .DB 0,20,14h ; 0,2 c - D2, D4 .DB 0,20,0Ah ; 0,2 c - D1, D3 .DB 0,20,5 ; 0,2 c - D0, D2 .DB 0,0 ; Конец диаграммы 4 ;========================= Окончание .PAGE .DB 0 ; Конец списка диаграмм .END |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
НПП "СЕМИКО" (383) 271-01-25 (многоканальный) |