В блоке 3 происходит визуализация нажатой клавиши. Как это делается - описано в П7.3. Но здесь есть одна проблема, связанная с тем, что визуализация командных клавиш не возможна на имеющихся в составе УОУ индикаторах. Эта проблема может быть решена выводом в другое знакоместо дисплея кодов заменителей, которые даются преподавателем.
П7.3. Детализация алгоритма функционирования программы поддержки клавиатуры
В п. П7.2 показано, что подпрограмма, реализующая блок 1 алгоритма поддержки клавиатуры (полное сканирование клавиатуры), достаточно сложна и нуждается в детализации. Алгоритм ее функционирования приведен на рис. П7.3.
НАЧАЛО
|
1.1. В:= 60H; C:= 0
1.2. Вызвать подпрограмму Scan
| нет
1.3. Признак нажатой клавиши не установлен? ------> КОНЕЦ
да |
1.4. В:= 50H;
1.5. Вызвать подпрограмму Scan
| нет
1.6. Признак нажатой клавиши не установлен? ------> КОНЕЦ
да |
1.7. В:= 30H;
1.8. Вызвать подпрограмму Scan
|
КОНЕЦ
Рис. П7.3. Алгоритм функционирования блока 1 программы поддержки клавиатуры
Как показывает рис. П7.3, основой алгоритма функционирования блока 1 программы поддержки клавиатуры является подпрограмма Scan, которая вызывается в блоках 1.2, 1.5, 1.8. Предполагается, что подпрограмма Scan выводит код в РС6...РС4 (он формируется с использованием содержимого РОН В МП, поэтому перед вызовом Scan в РОН В записывается соответствующая константа см. блоки 1.1, 1.4, 1.7), вводит через порт А байт состояния клавиатуры, используя который формирует в РОН С скан-код нажатой клавиши и признак нажатой клавиши, если такое случится. Для правильного формирования скан-кода РОН С обнуляется перед сканированием клавиатуры в блоке 1.1.
После вызова подпрограммы Scan в блоках 1.3, 1.6 проверяется наличие признака нажатой клавиши. Если этот признак имеется, то следует переход на конец блока, в противном случае сканирование клавиатуры продолжается. Если и после выполнения блока 1.8 этот признак не появляется, то в текущем сеансе сканирования ни одна клавиша не была нажата.
Ниже приводится часть текста подпрограммы Scan, отражающая формирование кода выводимого в порт С. Дело в том, что при выводе очередного кода на линии РС6...РС4 остальные биты порта С не должны изменяться (например, бит РС7, который управляет системой ПДП УОУ, см. рис. П7.1).
Scan:
in 2 ; Acc:= (PC)
ani 8fh ; PC6:= 0, PC5:= 0, PC4:= 0
ora b
out 2 ; Если В = 60Н, то активна РС4
; Если В = 50Н, то активна РС5
; Если В = 30Н, то активна РС6
; Остальные биты PC остались прежними
in 0 ; Ввод байта состояния клавиатуры
... ; Формирование признака нажатой клавиши и ее скан-кода
ret
Алгоритм формирования признака нажатой клавиши представлен на рис. П7.4.
НАЧАЛО
|
1. В:= 8
2. Сдвинуть Асс на один разряд вправо
| нет
3. Флажок С = 1 ? ---------> КОНЕЦ
да |
4. C:= C + 1; B:= B - 1
| нет
5. Флажок Z = 1 ? ---------> Переход на п. 2
да |
КОНЕЦ
Рис. П7.4. Алгоритм формирования признака нажатой клавиши и ее скан-кода
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.