
- •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.6 Вывод управляющего слова на группу автономных устройств.
Управляющие слова формируются по командам логических операций.
Команда ANI используется для сброса тех бит, которые в маске заняты нулем. Команда ORI используется для установки бит, а XRI инвертирует отдельные биты (в соответствии с выражением 1ЕX=X), а так же для обнуления выходного порта (XЕX=0).
Рассмотрим несколько примеров формирования управляющего слова для случая, когда выходной порт работает на 8 светодиодных индикаторах. Будем считать, что копия управляющего слова содержится в аккумуляторе.
Командой CALL DELAY осуществляется вызов подпрограммы временной задержки необходимой длительности.
Пример 1.
Зажечь все сегменты индикатора, затем погасить сегменты LO, L5, L7, не изменяя состояния остальных сегментов.
После запуска программа (табл.12) высветит все сегменты первого индикатора и после небольшой паузы погасит требуемые сегменты. Состояние остальных сегментов не изменится (будут продолжать светиться).
Таблица 12
Адрес |
Код |
Метка |
Мнемокод |
Комментарий |
0825 |
2E FF |
|
MVI L, FFH |
код засветки поместить в регистр L (11111111В - FFН) |
0827 |
CD A9 08 |
|
CALL L&P |
высветить его на индикаторе |
082A |
7D |
|
MOV A, L |
код предыдущей засветки поместить в аккумулятор |
082B |
E6 5E |
|
ANI 5EH |
установка в 0 DO, D5, D7 (01011110B - 5EH) |
082D |
6F |
|
MOV L, A |
результат сохранить |
082E |
CD A9 08 |
|
CALL L&P |
и высветить его на индикаторе |
0831 |
FF |
|
RST |
вернуться в "монитор" |
Пример 2.
Включить сегменты L2, L3, L4, не изменяя состояния остальных сегментов. После запуска программа (табл.13) высветит отдельные сегменты первого индикатора и после небольшой паузы зажжет требуемые сегменты. Состояние остальных сегментов не изменится (будут продолжать светиться).
Таблица 13
Адрес |
Код |
Метка |
Мнемокод |
Комментарий |
0835 |
2E 49 |
|
MVI L, 49H |
код засветки поместить в регистр L (01001001В - 49Н) |
0837 |
CD A9 08 |
|
CALL L&P |
высветить его на индикаторе |
083A |
7D |
|
MOV A, L |
код предыдущей засветки поместить в аккумулятор |
083B |
F6 06 |
|
ORI 06H |
установка в 1 D1, D2, (00000110B - 06H) |
083D |
6F |
|
MOV L, A |
результат сохранить |
083E |
CD A9 08 |
|
CALL L&P |
и высветить его на индикаторе |
0841 |
FF |
|
RST |
вернуться в "монитор" |
Пример 3.
Выдать на сегменты управляющее слово. Управляющий байт для сегментов L0 - L3 хранится в младшей тетраде регистра В, а для сегментов L4 - L7 - в старшей тетраде регистра С.
После запуска программа (табл.14) высветит отдельные сегменты первого индикатора в соответствии с содержимым регистров В (младший байт слова) и С (старший байт слова).
Таблица 14
Адрес |
Код |
Метка |
Мнемокод |
Комментарий |
0844 |
06 09 |
|
MVI В, 09H |
младший байт засветки поместить в регистр В |
0846 |
0E В0 |
|
MVI С, Е0H |
старший байт засветки поместить в регистр С |
0848 |
3E 0F |
|
MVI А, 0FH |
маска (00001111) |
084A |
A0 |
|
ANA B |
маскирование регистра В |
084B |
47 |
|
MOV B, A |
сохранение в регистре В кода |
084C |
7D |
|
MOV A, C |
старший байт слова по- местить в аккумулятор |
084D |
E6 F0 |
|
ANI F0H |
маска (11110000) |
084F |
B0 |
|
ORA B |
упаковка тетрады |
0850 |
6F |
|
MOV L, A |
результат сохранить в L |
0851 |
CD A9 08 |
|
CALL L&P |
и высветить на индикаторе |
0854 |
FF |
|
RST |
вернуться в "монитор" |
Пример 4.
Реализовать пульсирующую световую индикацию на сегментах L0, L1, L5, не изменяя состояния остальных сегментов.
После запуска программа (табл.15) высветит все сегменты первого индикатора. После небольшой паузы программа будет гасить и зажигать требуемые сегменты индикатора. Состояние остальных сегментов не изменится (будут продолжать светиться). Через заданное число повторов (количество повторов хранится в регистре В) индикация прекратится и программа завершит свою работу.
Таблица 15
Адрес |
Код |
Метка |
Мнемокод |
Комментарий |
0860 |
06 30 |
|
MVI В, 30H |
число циклов повтора поместить в регистр В |
0862 |
2E 7F |
|
MVI L, 7FH |
код засветки поместить в регистр L |
0864 |
CD 90 08 |
LOOP |
CALL LIGHT |
высветить его на индикаторе |
0867 |
0E 20 |
|
MVI C, 20H |
поместить в регистр С количество циклов задержки |
0869 |
CD A0 08 |
|
CALL PAUSE |
вызов подпрограммы задержки |
086C |
05 |
|
DCR В |
декремент содержимого регистра В |
086D |
78 |
|
MOV A, B |
содержимое регистра В в аккумулятор |
086E |
CA 78 08 |
|
IZ END |
если число повторов равно «0», то закончить программу |
0871 |
7D |
|
MOV A, L |
иначе |
0872 |
EE 23 |
|
XRI 23H |
инвертировать сегменты L0, L1, L5 |
0874 |
6F |
|
MOV L, A |
результат инверсии сохранить в регистре L |
0875 |
C3 64 08 |
|
JMP LOOP |
и высветить его на индикаторе |
0878 |
FF |
END |
RST |
вернуться в "монитор" |