double arrow

Программа задержки


Для работы основной программы необходимо разработать подпрограмму, вызывающую задержку. Простейший способ генерирования задержки показан на рис.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 Начало внутренней петли за держки
     
     
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.







Сейчас читают про: