- •1 Инструкция по технике безопастности
- •2 Методические указания по оформлению отчета к лабораторной работе
- •3 Лабораторная работа №4
- •3.1 Краткие теоретические сведения
- •3.1.1 Опрос двоичного датчика
- •3. 1. 2 Ожидание события
- •3.1.3 Ожидание импульсного сигнала.
- •3.1.4 Выделение и обработка отдельных бит информации
- •3.1.5 Формирование управляющего сигнала
- •3.1.6 Вывод управляющего слова на группу автономных устройств.
- •3. 1. 7 Формирование временной задержки малой длительности
- •3.1.8 Формирование последовательности импульсных сигналов с изменяемой длительностью и скважностью.
- •3.2 Задание на дом.
- •3.3 Контрольные вопросы
- •4 Краткие теоретические сведения
- •4.1 Цифровые индикаторы
- •4.2 Клавиатура
- •4.3 Мультиплексный режим работы цифрового индикатора
- •4.4 Сканирование клавиатуры и программное определение номера нажатой клавиши
- •4.5 Подпрограмма определения кода засветки Второй цифры в номере клавиши
- •4.6 Подпрограмма определения кода засветки первой цифры в номере клавиши
- •Программа, написанная в соответствии с алгоритмом, изображенным на рис.17, имеет вид (табл. 25):
- •4.7 Подпрограмма засветки индикаторов в мультиплексном режиме
- •4.8 Задание для домашней подготовки
- •Порядок выполнения работы
- •6 Контрольные вопросы
- •Литература
- •Содержание
- •2 Методические указания по оформлению отчета к лабораторной работе 1
- •3 Лабораторная работа №4 2
- •4 Лабораторная работа №5 24
3.1.8 Формирование последовательности импульсных сигналов с изменяемой длительностью и скважностью.
Программная реализация последовательности управляющих сигналов базируется на принципе секвенции, при котором подпрограммы выдачи измеряемого значения сигнала чередуются с параметрами подпрограммами временных задержек.
Пусть требуется на выходе D1 порта 3 сформировать последовательность управляющих сигналов (рис.9).
Рисунок 9 - Последовательность управляющих сигналов
Из временной диаграммы видно, что некоторая последовательность чередующихся сигналов 0 и 1 формируется на основе периода 100 мкс. Следовательно, программа нормирования таких сигналов будет иметь вид (табл.18):
Таблица 18
Адрес |
Код |
Метка |
Мнемокод |
Комментарий |
1 |
2 |
3 |
4 |
5 |
|
|
|
LXI H, 0800H |
загрузка начального адреса таблицы длительностей в (HL) |
|
|
SEQU |
MVI A, 02H |
номер вывода порта |
|
|
OUTPUT |
OUT PORT3 |
установка 1-го значения сигнала |
|
|
|
MOV D, M |
число обращений к задержке |
|
|
LOOP |
CALL TIME |
задержка |
|
|
|
DCR D |
декремент счетчика |
|
|
|
JNZ LOOP |
если D0, то вызов подпрограммы |
|
|
|
|
Продолжение таблицы 18 |
1 |
2 |
3 |
4 |
5 |
|
|
|
XPI 02H |
изменение сигнала на противоположный |
|
|
|
INX H |
увеличение содержимого парных регисторов H-L |
|
|
|
JMP OUTPUT |
безусловный переход на метку OUTPUT |
|
|
|
RET |
выход из подпрограммы |
Пример:
Данная программа формирует управляющие сигналы прямоугольной формы.
Причем сигнал высокого уровня "порождает" засветку числа "1" на определенном индикаторе, а сигнал низкого уровня - засветку числа "0" на следующем индикаторе.
Программная реализация последовательностей управляющих сигналов основывается на принципе секвенции, при котором подпрограмма выдачи измеряемого значения сигнала чередуется с подпрограммой временной задержки.
Необходимо сформировать следующую последовательность управляющих сигналов (рис.10)
Рисунок 10 - Последовательность управляющих сигналов
Таблица длительностей задержки хранится по адресам 0800 - 0802:
0800 7F ; 7FH - 127D (0, 1, 2,...,127 итого 128 циклов)
0801 BF ; BFH - 191D (0, 1, 2,...,191 итого 192 цикла)
0802 FF ; FFH - 255D (0, 1, 2,...,255 итого 256 циклов)
Пример:
Основная программа начинается с адреса 0820 (табл.19):
Таблица 19
Адрес |
Код |
Метка |
Мнемокод |
Комментарий |
0820 |
21 00 08 |
SEQU: |
LXI H, 0800H |
загрузка начального адреса таблицы длительностей в H-L |
0823 |
06 08 |
|
MVI В, 08Н |
номер 5-го индикатора поместить в регистр В |
0825 |
0E 06 |
|
MVI С, 06Н |
поместить в регистр С код числа " 1" |
0827 |
CD 90 08 |
OUT: |
CALL LIGHT |
засветка индикатора |
082A |
56 |
|
MOV D, M |
число обращений к задержке поместить в регистр D |
082B |
CD A0 08 |
LOOP: |
CALL TIME |
задержка в 7816 мкс |
082Е |
15 |
|
DCR D |
декремент счетчика |
082F |
C2 2B 08 |
|
JNZ LOOP |
если D 0, то вызвать задержку |
0832 |
78 |
|
MOV А, В |
переход к следующему индикатору |
0833 |
1F |
|
RAR |
для засветки |
0834 |
DA 20 08 |
|
JC SEQU |
если 7-ой индикатор уже зажжен, то повторить программу |
0837 |
47 |
|
MOV В, А; |
иначе сохранить номер зажигаемого регистре В |
0838 |
79 |
|
MOV А, С; |
изменить значение сигнала на |
0839 |
EE 39 |
|
XRI 39H |
противоположный и |
083В |
4F |
|
MOV С, А |
результат сохранить в регистре С |
083С |
23 |
|
INX Н; |
выбрать следующую длительность задержки |
083D |
C3 27 08 |
|
JMP OUT |
высветить на индикаторе значение сигнала с заданной длительностью |
083E |
C9 |
|
RET |
выход из подпрограммы |
Код порта засветки индикаторов имеет адрес F8, код порта выбора сегментов выбранного индикатора - адрес F9.
Порт чтения клавиатуры имеет адрес FA.
Для изменения отдельных бит байта, хранимого в аккумуляторе применяется маскирование разрядов. Для этого используются команды:
- ANI, применяется для сброса тех бит, которые в маске заданы нулем;
- ORI, используется для установки тех бит, которые в маске заданы единицей;
- XRI, используется для инвертирования тех бит, которые в маске заданы единицей
