Космонавтика  Архитектура 3-х шинных систем 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [ 19 ] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

-XF413

0001 0002 0003 0004 -0005 0006 ООО? 0008 0009 ООЮ ООП 0012

оотз оси

0015

001 6 0017 10018. 0019 0020 0021 0022 0023 0024 О025

002 6 0027 0028 0029 ООЭО 0031 О032

0033

<Ю34 О0Э5

003 6 О037 Ш38 0039 0040 О041 О042 0043 О044 О045 0046 О047 О048 0049 О050 О051 00 52 О053 0054 О055 О056

т=00003 IS ON CROOOZO USINO 00009 blks R=1410 1 PAGK 1 F412 tue OCT 02,1979 02:27:04.13

NAM i\2

* эта програша-версия рис.4.12 для 6800 *

ORG SOO

(ШАГ 2) *

10 CMP A #S10 сканирование набора 3AKOH4EH07t

05 BNK st2b-, если нет,TO шаг 2в

♦♦ ***(шаг 2А) ~

01 liDA А #S01 переместить активный набор

ОООА JMP ST3 идти НА шаг 3

00001 00002 00003 00004

00005

00006 0000 00007 00008 00009

ООО 10 0000 81

00011 0002 26

00012 , 00013

000 U

0001 5 0004 86

00016 0006 т

00017 00013 00019

.00020 0009 48 00021 00022 00023

00024 ОООА В7

00025. 00026 00027

00028 000D 43 00029 00030 00031

00032 ОООЕ 01

00033

00034

00035

00036 ООЮ 39 00037 00038 00039 00040 00041 00042 00043 00044 00045

1 hage 2

* (ШАР гв)

ST2B ASL А ** *(ШАГ 3) 1000 ST3 STA А KHOW ** * (ЩДГ 4)

СОМ А

сдвинуть влево,о в do

инвертировать слово набора

(ШАГ 5)

ГЕ STA А #SOOFE ВЫВЕСТИАКТИВ. НАБОР В ПОРТ FE

(щдг 6) *

шйти из подпрограммы

* конец этой программы * *

разместить переменны. в памяти #

1000 krow equ S1000

меняется способ обращения к устройствам ввода-вывода, аналогичный способу обращения к памяти. Микропроцессор 6800 не имеет команды типа OUT для записи данных во внешние устройства, которые условно считаются ячейками памяти.

4.9. Опрос выходных линий клавишного пульта

с помощью программных средств

Теперь рассмотрим метод программного управления аппаратными средствами с целью точного определения активной выходной линии среди линий Со, Cj, Сг, Сз, С4. Блок-схема алгоритма

Начало

Шаг 1

Шаг 2

Шаг 3

Установка флажка колонок В..0.

Ввод данных из порта FE

Установка значений разрядов D5,D6, D7 = 1

Шаг 4


предложение end ассемблера

Есть активные

F412 tue oct

02,1979 02: 27:04.13

колонки

00024 0001 1 00016

Шаг 5

Инвертирование данных

Активных колонок нет

Возврат Шаг

Рис. 4.13. Программа на языке ассемблера микропроцессора 6800, соответ-стиующая блок-схеме, представленной на рис. 4.10.

Шаг 6

Фдажок

колонок

данные

Рис. 4.14. Блок-схема программы определения активных выходов матрицы

клавиатуры.



определения активной выходной линии показана на рис. 4.14, Сначала программно флажку выходов присваивается нулевое значение. Этот.флажок будет использоваться вызывающей программой для определения наличия активных выходных ли-

278 ООШ -

279 ООШ

280 ООШ

281 ООШ

282 ООШ

283 ООШ

284 ООШ 285 ООШ

286 ООШ АГ

287 OODC 32 01 10

288 оот

289 00DP-

290 OODF

291 OODF DB FE

292 00Е1

293 00Е1

294 00Е1 .295 00Е1 F6 Ео

296 ООЕЗ -297 ООЕЗ

298 ООЕЗ

299 ООЕЗ ГЕ FF

* < # # ## ,

*

* ЭТА ПОДПЮГРА1ША-РИС.4.15

*

. 1

XRA А

STA CFLAG

(ШАГ 2)

IN oFEH

* (ШАГ З)

*

ORI ОЕОН

* (ШАГ 4)

СРГ- OFEH

УСТАНОВИТЬ ЛАЖОК СТОЛБЦА=0

ВХОДНЫЕ ДАНШЕ ИЗ ШРТА FB

УСТАНОВИТЬ ВИМ n5,D6,D7=t

300 0ОВ5 С8

301 00Е6

302 00Е6

303 00Е6

304 00Е6 2F

305 00Е7

306 00Е7

307 00Е7

308 00Е7 32 01 10

309 ООЕА С9

310 ООЕВ

.НЕТ

CFLAQ

ШАГ (4А)

ИНВЕРТИРОВАТЬ ДАШМЕ

УСТАНОВИТЬ ЛАЖОК СТОЛВЦА. ВЫЙТИ ИЗ ЭТОЙ ПОДПРОГРШЫ

Рис. 4.15. Программа на языке ассемблера микропроцессора 8080. соответствующая блок-схеме, представленной на рис. 4.14.

НИИ. Затем вводятся данные из порта ввода клавиатуры. На третьем щаге в три старщих разряда введенного слова записываются значения 1. Последнее действие выполняется потому, что входной порт, из которого были прочитаны данные, соединен только.с пятью младшими разрядами шины данных. Чтобы неопределенность данных в старших трех разрядах введенного слова не повлияла на выполнение следующих шагов программы, целесообразно маскировать указанные разряды.

На четвертом шаге данные, полученные Из порта ввода клавишного пульта, анализируются. Если во всех разрядах обнаруживаются единицы, т. е. код FF, то среди выходных линий

1F416 Т=00003 is ом СНОООго using 00009 blks R=1410 1 page 1 F4 tue oct 02,1979 01:59:27.45

0001

сюог

0003 0004

0005 00001

0006 00002 ОООТ 00003

0008 00004

0009 00005 ООЮ 00006 ООП 00007

0012 00008

0013 00009

0014 ОООЮ

0015 00011

0016 00012 10017 00013 0018 00014 0019 00015

0020 0001 6

0021 00017

0022 00018

0023 00019

0024 00020 002 5 00021

0026 00022

0027 00023

0028 00024

0029 00025

0030 00026

0031 00027

0032 00028

0033 О0029

0034 00030

0035 00031

0036 00032 00 3 7 00033

0038 00034

0039 00035

0040 00036

0041 00037

0042 00038

0043 00039

0044 00040

0045 00041

0046 00042

0047 00043 OOW 00044 00 49 00045 00 50 00046

0051 00047

0052 1 0053 0054 0055

0056 CFLAG

0057 сои

0058 ИЕХТ.

NAM F4.15

* ЭТО ВВРСИЯ РИС.4.15 ДЛЯ 6800 *

0000 JRG 00 УСТАНОВИТЬ НАЧ.АДРЕС ЭТОЙ ШЮГ

* УСТАНОВИТЬ ПОЛЕ ПЕРЕНИННЬЦС *

loot cflag equ SlOOl

* НАЧАЛО ПРОГРАММЫ

*

{ШАГ 1)

0000 86 00 COLM LDA А #S00

0002 97 00 STA А COLM УСТАНОВИТЬ ФЛАЖОЯ СТОЛБЦА

(ШАГ 2)

0004 96 FB LDA А SOOFE ВХОДНЫЕ ДАНШЕ ИЗ ПОРТА FB

** * (ШАГ з)

ОНА А #ЗЕ0 УСТАНОВИТЬ БИТЫ D5,D6,D7=1

0006 8 А ВО

(ШАГ 4)

0008 81 FF OQOA 27 01 ОООС 39

0O0D 43

NEXT СОМ А * (ШАГ 6)

СМР А ЗОО*

BEQ NliXT ЕСЛИ НОЛЬ,ТО ПЕРЕХОД

ШИТИ ИЗ ЭТОЙ ПОДПРОГ.ВСЛИ НЕ О

ИНВЕРТИРОВАТЬ ДАННЫЕ

ОООЕ В7 1001 ООН 39

STA А CFLAG УСТАНОВИГЬ ФЛАЖОК СТОЛВЦА

нтз выйти ИЗ подпрогр-имы

► КОНЕЦ ПОДПРОГРАМШ

ijtJD ПРаДЛОШНИЕ KND АССЕМБЛЕРА

PAGE 2 F4 TUE OCT 02,1979 01:59:27.4Ь

1001 00011 00041 0000 00018 00019 OOOD а3037 00032

Рис. 4.16. Программа иа языке ассемблера микропроцессора 6800, соответствующая блок-схеме, представленной на рис. 4.14.



клавиатуры нет активной (она должна находиться в состоянии логического 0). Это условие будет выполняться в тех случаях, когда активизируемые входные линии ие соединены с Какой-либо выходной линией матрицы клавиатуры. Если условие выполняется, то происходит выход из подпрограммы, а флажок выходов сохраняет нулевые значения своих разрядов. Это означает, что активных выходов нет.

Если обнаруживается наличие активной выходной лиНии, то-данные, полученные из порта ввода, инвертируются. Теперь . флажок выходов приобретает значение, равное значению слова полученного после выполнения инвертирования иа 5-м шаге алгоритма. Наконец, происходит возвращение к вызвавшей программе. Согласно рассмотренной блок-схеме написаны программы для микропроцессора 8080 (рис. 4.15) идля микропроцессора 6800 (рис. 4.16).

4.10.

Вычисление весового значения ключа

Каждому ключу в матрице клавиатуры ставится в соответствие число из диапазона О-N; так, первому ключу, обозначённому через RoCg, соответствует число О, а последнему ключу R4C4 - число N. На рис. 4.17 показаны веса, соответствующие ключам матрицы клавиатуры. Функцию ключа на этой стадии определять ие будем. Вес, приданный каждому ключу, позволяет вычислить на основании номера строки и номера столбца матрицы клавиатуры, какой ключ был замкнут. На рис. 4.18 лред-ставлеиа блок-схема алгоритма вычисления веса определенного-замкнутого ключа. Рассматривая блок-схему, будем подразумевать, что информация о номере активного столбца хранится в памяти по адресу, обозначенному нами флажок выходов , а информация о номере строки матрицы, иа пересечении которой с активным столбцом находится замкнутый ключ, находится в памяти по адресу, обозначенному как входное слово .

Ссылаясь на блок-схему, подробно рассмотрим, как действует эта программа. Сначала из памяти выбирается значение флажка выходов , содержащего информацию о номере искомого столбца. Флажок выходов мОжет иметь одно из следующих пяти двоичных значений:

00000001 (0-й столбец);

00000010 (1-й столбец);

00000100 (2-й столбец);

00001000 (3-й столбец); ~ 00010000 (4-й столбец). Затем, как в,идно из рис. 4.18, счетчик.Ti принимает значение 0. Потом счетчик Ti станет равным значению О, 1, 2, 3 или 4, соответствующему номеру активного выхода клавиатуры. Для выполнения этого программа будет сдвигать флажок состоя-

НИИ каждый раз на один разряд вправЧ). После первого сдвига в позиции D7 появится значение О (рис. 4.19). Затем сдвинутое слово проверяется иа равенство нулю. Если все разряды слова равны О, то активных выходов.иет. В этом случае значение счетчика Ti равно 0. -

Если значение сдвинутого слова данных при проверке иа шаге 4 (рис. 4.18) окажется ие равным О, то значение счетчика

Рис. 4.17. Десятичные значения весов, соответствующие позициям в матрице 5X5 мавишного пульта.

С. -

- 13

Ti увеличивается на 1. Сдвиги и проверка слова флажок выходов , сопровождаемые увеличением значения счетчика иа 1, продолжаются до тех пор, пока сдвигаемое слово данных ие станет равным 0. На этой стадии значеиие счетчика Ti временно записывается в память.

Теперь, согласно блок-схеме, изображенной иа риС. 4.18, подобные же действия выполняются иад значением входного слова . В данном случае используется счетчик Tj.

Наконец, после того как в память по адресам Тг и Ti записаны соответственно десятичные значения номера строки и номера столбца, вес замкнутого ключа вычисляется по формуле:

Вес ключа = (5X номер столбца)-f Номер строки.

Вычисленный вес однозначно определяет, какой ключ был замк-нут. Теперь может быть выполнен переход к программной секции, которая соответствует конкретной функции ключа.

Однако, прежде чем выполнить указанный переход, следует убедиться в том, что ключ, которому соответствует вычисленное значение веса ключа матрицы клавиатуры, действительно был замкнут. А также до тех пор, пока ключ не будет разомкнут.



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [ 19 ] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57