Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНА РОБОТА общее.doc
Скачиваний:
34
Добавлен:
18.03.2015
Размер:
5.16 Mб
Скачать

Програма затримки

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

Повна програма контролера " вогні, що біжать," наведена в табл.4.

Таблиця 4

Адреси

Коди

Мітки

Команди

Коментарі

8000

ЗЕ

MOV A ,81

MOV A ,81

Програмування інтерфейсу

8001

81

8002

D3

8003

FB

OUT FB

8004

ЗЕ

SEQ

MOV A, 92

Установка коду горіння 1,4,7 світлодіодів

8005

92

8006

D3

OUT F9

8007

F9

8008

16

MVI D, I

Горіння даної послідовності

8009

01

800А

CD

CALL DELAY

800У

22

800С

80

800D

ЗЕ

MOV A , 4 9

Установка коду горіння 2,5,8 світлодіодів

800Е

49

800F

D3

OUT F9

8010

F9

8011

16

MVI D, I

Горіння даної послідовності

8012

01

8013

CD

CALL DELAY

8014

22

8015

80

8016

ЗЕ

MOV A, 24

Установка коду горіння 3,6 світлодіодів

8017

24

8018

D3

OUT F9

8019

F9

801А

16

MVI D,I

Горіння даної послідовності

801У

01

801С

CD

CALL DELAY

8010

22

801Е

80

801F

СЗ

JMP SEQ

Повернення в основну програму" вогні, що біжать,"

8020

04

8021

80

8022

01

DELAY

LXI B,0025

Початок внутрішньої петлі затримки

8023

00

8024

25

8025

LOOP

OCX В

Внутрішня петля, що генерує затримку 0,786 з

8026

78

MOV А, В

8027

В1

ORA З

8028

З2

JNZ LOOP

8029

25

802А

80

802У

15

OCR D

Основна петля затримки

802С

З2

JNZ DELAY

802D

22

802Е

80

802F

З9

RET

Повернення

Продовження табл.1

Перевірка програми

1. Уведіть програму з табл.б в ОЗУ акумулятора.

2. Упевніться, що вона правильно записана на згадку.

3. Виконуйте основну програму, що починається за адресою 8000.

4. Значення тимчасових затримок можна замінити на інші значення, для зменшення швидкості " вогнів, що біжать," по адресах 8009, 8012,801А, 8023, 8024.