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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



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