
- •1.1 Определение номера нажатой клавиши.
- •Подготовить ”бегущий 0”
- •Установить начальный адрес кс
- •1.2 Сопряжение мк с жки. Вывод заголовков.
- •1.3 Составление программы, управляющей взаимодействием мк с клавиатурой и жки.
- •Определение н.А., с которого выводится первый пробел
- •Начало работы с системой. Основные требования.
- •2. Порядок выполнения работы
- •Оформление отчета.
- •Контрольные вопросы.
1.3 Составление программы, управляющей взаимодействием мк с клавиатурой и жки.
Постановка задачи. Обеспечить вывод на ЖКИ следующей информации:
На первой строке индикаторной панели (ИП) вывести фиксированную информацию (например “Группа 4321”)
На второй строке ИП вывести один из 2-х вариантов сообщения:
2а. “ KLAVISHA № “XX””
2б. ”ROW =X COL = X ”
Отметим, что информация на первой строке является фиксированной, т. е. Является заголовком. Информация на второй строке содержит фиксированную часть (может
рассматриваться как заголовок) и переменную часть, которая определяется после выполнения подпрограммы определения номера нажатой клавиши. Символ “Х”- означает одно, а символ “XX”-два знакоместа, отводимые под вывод переменной части сообщения.
Схема алгоритма на рис.3 приведена для случая 2а – вывод № нажатой клавиши.
b:=b+30h
a:=a+30h
(
a,b):=a/b
b:=10
а:=N
Вывод заголовков
опрос клавиатуры
определение
Н.А., с которого выводится № нажатой
клавиши
Нет
Да
Определение н.А., с которого выводится первый пробел
Рис.3. Схема алгоритма программы, управляющей взаимодействием МК с клавиатурой и ЖКИ.
Структурно в алгоритме можно выделить три составные части:
алгоритм определения № нажатой клавиши,
алгоритм вывода на ЖКИ заголовков, а именно фиксированной составляющей информации выводимой на обеих строках,
алгоритм вывода на ЖКИ № нажатой клавиши, предусматривающий выполнение трёх действий:
а. Определение позиции, начиная с которой выводится значение № нажатой клавиши;
б. Преобразование значения каждого разряда в символ, выводимый на
индикаторную панель (ИП);
в. Вывод символа на ИП.
Примечания:
1.В третьей части алгоритма предусмотрено использование одной из клавиш (в приведенной ниже программе такой клавишей может быть любая клавиша в столбце, связанном с Р1.0) для организации выхода из алгоритма. Если эта клавиша не нажата, работа всей программы осуществляется в режиме бесконечного цикла. При нажатии клавиши работа программы завершается с изменением выводимой информации на ИП. ВНИМАНИЕ! При необходимости внесения изменений в программу, если были получены неверные результаты, следует перед загрузкой скорректированной программы в память МК завершить работу программы нажатием указанной выше клавиши.
2. В варианте 2б незначительно видоизменяется действия в составной части 3:
а. Определение адреса позиции для вывода № строки.
б. Преобразование значения номера строки в символ.
в. Вывод символа на ИП, после чего эти 3 действия повторяются для № столбца.
Текст программы, управляющей взаимодействием МК с клавиатурой и ЖКИ, представлен на рис.4.
org 8300h
main: lcall indic
loop: lcall klav
mov switch,#0; переключить на команду
mov byte,#8Bh ; определить позицию вывода первого символа
lcall indic_wr
mov a,n ;№ нажатой клавиши
mov b,#10
div a b
add a,#30h
mov switch,#1; переключить на данные
mov byte,a
lcall indic_wr
add b,#30h
mov byte,b
lcall indic_wr
jnb P1.0, m1
; call indic_delay
sjmp mloop
m1: call indic_delay
mov switch,#0 ; переключить на команду
mov byte,#08Bh
lcall indic_wr
mov switch,#1; переключить на данные
mov a,#' '; внешний признак завершения работы программы
mov byte,a;
lcall indic_wr; вывод первого пробела
lcall indic_wr; вывод второго пробела
ret
include ASMS\...\klav.asm
include ASMS\...\gki.asm
Рис.4. Программа, управляющая взаимодействием МК с клавиатурой и ЖКИ.
Необходимо обратить внимание на то, что первые две составные части алгоритма реализованы в виде отдельных подпрограмм, размещенных каждая в своем файле. Для организации их совместной работы предусмотрены соответствующие директивы вида INCLUDE, позволяющие осуществить совместную компиляцию всех составных частей программы.