Меню
Главная
Прикосновение космоса
Человек в космосе
Познаем вселенную
Космонавт
Из авиации в ракеты
Луноход
Первые полеты в космос
Баллистические ракеты
Тепло в космосе
Аэродром
Полёт человека
Ракеты
Кандидаты наса
Космическое будущее
Разработка двигателей
Сатурн-аполлон
Год вне земли
Старт
Подготовки космонавтов
Первые полеты в космос
Психология
Оборудование
Модель ракеты
|
Космонавтика Архитектура 3-х шинных систем -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
Шаг 4
Активных колонок нет Возврат Шаг Рис. 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 мавишного пульта.
Ti увеличивается на 1. Сдвиги и проверка слова флажок выходов , сопровождаемые увеличением значения счетчика иа 1, продолжаются до тех пор, пока сдвигаемое слово данных ие станет равным 0. На этой стадии значеиие счетчика Ti временно записывается в память. Теперь, согласно блок-схеме, изображенной иа риС. 4.18, подобные же действия выполняются иад значением входного слова . В данном случае используется счетчик Tj. Наконец, после того как в память по адресам Тг и Ti записаны соответственно десятичные значения номера строки и номера столбца, вес замкнутого ключа вычисляется по формуле: Вес ключа = (5X номер столбца)-f Номер строки. Вычисленный вес однозначно определяет, какой ключ был замк-нут. Теперь может быть выполнен переход к программной секции, которая соответствует конкретной функции ключа. Однако, прежде чем выполнить указанный переход, следует убедиться в том, что ключ, которому соответствует вычисленное значение веса ключа матрицы клавиатуры, действительно был замкнут. А также до тех пор, пока ключ не будет разомкнут.
|