Для работы основной программы необходимо разработать подпрограмму, вызывающую задержку. Простейший способ генерирования задержки показан на рис.2. Однако, максимальное время задержки, полученное таким способом, не превышает 1785 мкс. Принцип получения более длительной задержки будет описан ниже.
ПРОГРАММА КОНТРОЛЛЕРА "БЕГУЩИЕ ОГНИ"
После составления алгоритмов и определения характеристик -, можно писать программы. Основная программа последовательности довольно проста /табл.2/.
Таблица 2
Метки | Команды | Комментарии |
SEQ | MOV А, 92 | Установка горения светодиодов 1,4,7 Время горения установленных сигналов |
MVI D, I | ||
CALL DELAY | ||
MOV A, 49 | Установка горения светодиодов 2,5,8 Время горения установленных сигналов | |
MVI D, I | ||
CALL DELAY | ||
MOV A, 24 | Установка горения светодиодов 3,6 Время горения установленных сигналов | |
MVI D, I | ||
CALL DELAY |
Программа последовательности устанавливает в регистр А число 92 - код выходных индикаторов, при котором светодиоды 1, 4, 7 - горят, а светодиоды 2, 3, 5, 6, 8 - погашены.
|
|
Затем вызывает подпрограмму задержки. Для чего программа последовательности задает величину задержки в регистр D, после чего вызывается сама подпрограмма задержки. Далее эта последовательность повторяется для других кодов выходных сигналов светодиодов.
Рис.2. Алгоритм программы задержки
РАЗРАБОТКА ПРОГРАММЫ ЗАДЕРЖКИ
В табл.3 приведена программа задержки, алгоритм которой показан на рис.2.
Таблица 3 Простая программа задержки
Метки | Команды | Комментарии | Примечание |
DELAY | DCR A | Уменьшающий счет | 4 такта |
JNZ DELAY | Продолжение счета, если содержимое аккумулятора О | 7/10 тактов | |
RET | Возврат | 10 тактов |
Чтобы использовать эту программу, в аккумуляторе устанавливается нужное значение задержки и вызывается программа задержки. Содержимое аккумулятора уменьшается до тех пор, пока не достигает нуля, после чего управление возвращается на программу вызова.
задержки. В этой программе две петли: внешняя и внутренняя. Внутренняя петля генерирует задержку 0,786 с, внешняя - множество таких задержек. Такая организация программы называется вложением.
Полная программа контроллера "бегущие огни" приведена в табл.б.
Таблица б
Адреса | Коды | Метки | Команды | Комментарии |
ЗЕ | MOV A,81 | MOV A,81 | Программирование интерфейса | |
D3 | ||||
FB | OUT FB | |||
ЗЕ | SEQ | MOV A, 92 | Установка кода горения 1,4,7 светодиодов | |
D3 | OUT F9 | |||
F9 | ||||
MVI D, I | Горение данной последовательности | |||
800А | CD | CALL DELAY | ||
800В | ||||
800С | ||||
800D | ЗЕ | MOV A, 4 9 | Установка кода горения 2,5,8 светодиодов | |
800Е | ||||
800F | D3 | OUT F9 | ||
F9 | ||||
MVI D, I | .Горение данной последовательности- | |||
CD | CALL DELAY | |||
ЗЕ | MOV A, 24 | Установка кода горения 3,6 светодиодов | ||
D3 | OUT F9 | |||
F9 | ||||
801А | MVI D,I | Горение данной последователь ности | ||
801В | ||||
801С | CD | CALL DELAY | ||
801Е | ||||
801F | СЗ | JMP SEQ | Возврат в основную программу"бегущие огни" | |
DELAY | LXI B,0025 | Начало внутренней петли за держки | ||
0В | LOOP | OCX В | Внутренняя петля, генерирующая задержку 0,786 с | |
MOV А, В | ||||
В1 | ORA С | |||
С2 | JNZ LOOP | |||
802А | ||||
802В | OCR D | Основная петля задержки | ||
802С | С2 | JNZ DELAY | ||
802D | ||||
802Е | ||||
802F | С9 | RET | Возврат |
Продолжение табл.1
|
|
Проверка программы
1. Введите программу из табл.б в ОЗУ аккумулятора.
2. Удостоверьтесь, что она правильно записана в память.
3. Выполняйте основную программу, начинающуюся по адресу 8000.
4. Значения временных задержек можно заменить на другие значения, для уменьшения скорости "бегущих огней" по адресам 8009, 8012,801А, 8023, 8024.