Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР4_метод_25_04_08.doc
Скачиваний:
16
Добавлен:
02.04.2015
Размер:
163.84 Кб
Скачать

1.3 Составление программы, управляющей взаимодействием мк с клавиатурой и жки.

Постановка задачи. Обеспечить вывод на ЖКИ следующей информации:

  1. На первой строке индикаторной панели (ИП) вывести фиксированную информацию (например “Группа 4321”)

  2. На второй строке ИП вывести один из 2-х вариантов сообщения:

2а. “ KLAVISHA № “XX””

2б. ”ROW =X COL = X ”

Отметим, что информация на первой строке является фиксированной, т. е. Является заголовком. Информация на второй строке содержит фиксированную часть (может

рассматриваться как заголовок) и переменную часть, которая определяется после выполнения подпрограммы определения номера нажатой клавиши. Символ “Х”- означает одно, а символ “XX”-два знакоместа, отводимые под вывод переменной части сообщения.

Схема алгоритма на рис.3 приведена для случая – вывод № нажатой клавиши.

b:=b+30h

a:=a+30h

( a,b):=a/b

b:=10

а:=N

Вывод заголовков

опрос клавиатуры

определение Н.А., с которого выводится № нажатой клавиши

Нет

Да

Определение н.А., с которого выводится первый пробел

Рис.3. Схема алгоритма программы, управляющей взаимодействием МК с клавиатурой и ЖКИ.

Структурно в алгоритме можно выделить три составные части:

  1. алгоритм определения № нажатой клавиши,

  2. алгоритм вывода на ЖКИ заголовков, а именно фиксированной составляющей информации выводимой на обеих строках,

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