Меню
Главная
Прикосновение космоса
Человек в космосе
Познаем вселенную
Космонавт
Из авиации в ракеты
Луноход
Первые полеты в космос
Баллистические ракеты
Тепло в космосе
Аэродром
Полёт человека
Ракеты
Кандидаты наса
Космическое будущее
Разработка двигателей
Сатурн-аполлон
Год вне земли
Старт
Подготовки космонавтов
Первые полеты в космос
Психология
Оборудование
Модель ракеты
|
Космонавтика Архитектура 3-х шинных систем Рис. 4.22. Блок-схема программы определения факта освобождения клавиши клавиатуры. На шаге € счетчик KTIME увеличивается на 1. Этот счетчик регистрирует количество полных сканирований матрицы клавиатуры, в течение которых замыканий ключа не было обнаружено. Как только значение счетчика КТШЕ станет равным 50, завершится выполнение полной программы, обеспечивающей ввод и обработку информации в связи с нажатием одной клавиши. Видно, что при этом в системе происходит много собы- Начало Рис. 4.23. Блок-схема основной программы, вызывающей подпрограмму ввода значения ключа. -Основная программа Вызов программ, представленных на рис. 4.10, 4.14, 4.18, 4.20, 4.22 Переход к программе, соответствующей значению KWGT тий. Когда система переходит от программы KREL, предназначенной для определения факта освобождения клавиши, к основной программе, выполняется программная проверка значения введенного веса ключа и указывается точка входа в соответствующую системную программу. Эта системная программа используется при реализации функции, определяемой нажатой клавишей. На рис. 4.23 дана общая блок-схема основной программы, в которой используется подпрограмма KEYIN. Возвращение из подпрограммы KEYIN к основной программе осуществляется только после установления ею факта нажатия и последующего освобождения одной клавиши. То, что клавиша была действительно нажата, проверяется 50 раз подряд, ее освобождение констатируется также после 50-кратного подтверждения. Поэтому подпрограмма KEYIN не возвращает управление до тех пор, пока после нажатия клавиши не наступит ее действительное освобождение. Затем основная программа, основываясь на значении переменной KWGT, установленном подпрограммой KEYIN, определяет адрес перехода к программной секции, выполнение которой реализует функцию замкнутого ключа. Мы видим, что-принципы программного управления клавиатурой обеспечивают универсальность ее применения. Функции клавиш легко изменяются посредством изменения программного обеспечения. В нашей системе каждой клавише было приписано соответствующее значение веса KWGT, для отображения которого на-индикаторе используется два младших разряда. Это значит, что при нажатии клавиши, имеющей в матрице ключей обозначение R4C4, на индикаторе появятся цифры 000024, соответствующие весу нажатой клавиши. С помощью этой программы мож- но убедиться в правильности работы подпрограммы KEYIN. После этого следует назначить клавишам фактические функции. 4.12. Инициализация программы Перед тем как начать обсуждение программы выполнения общих системных функций, разберем вопрос инициализации системного, программного обеспечения. Обычно эта программная секция выполняется только при включении питания системы или когда оператор нажмет кнопку начальной установки системы. Установка начального состояния микропроцессор ых систем рассмотрена в гл. 2. В секции инициализации программы определяются начальные значения переменных, которые в дальнейшем потребуются при выполнении программы. Например, устанавливается начальное значение указателя стека и маска прерываний. Мы еще не обсуждали вопросы обработки прерываний. Этому посвящена гл. 6. Для нашей программы необходима начальная установка значений следующих переменных: 1. Указатель стека. 2. KROW= 00000001. 3. NROW=0. 4. KTIME=0. 5. COLFG = 0 (флажок выходов). 6. Индикатор = FF0000. Выполнение пункта 6 обеспечит вывод на индикатор заранее известного значения. Программа для выполнения всех функций системы приведена на рис. 4.24. На этом рисунке представлена программа для микропроцессора 8080, а на рис. 4.25 дана программа для микропроцессора 6800. 1 0000 2 0000 3 0000 4 ОООЭ 5 0000 6 0000 7 0000 8 0000 9 0000 Ю 0000 11 0000 12 0000 П 0003 14 0004 15 0005 16 0007 17 0009 18 ОООВ 19 ОООЕ 20 0011 21 0014 22 0017 2 3 0018 24 001B 25 OOIB 26 001B 27 001В 28 001В 29 001В 30 ООШ 31 ООШ 32 ООШ 33 ООШ 34 001В 35 ООШ 36 ООШ 37 ООШ 36 ООШ 39 0018 40 ООШ 41 001Е 42 0021 43 0024 44 002 6 45 0029 46 002С 47 002С 48 002С 49 002С 50 002С 51 0020 52 0020 53 0020 54 0U2C 55 0020 56 002F 5 7 002F 58 002F 59 002F О 002.F ПРОГРАША ДЛЯ ВВОДА ДАННЫХ С КЛАВИАТУР И ЗАПИСИ НА МОП. *. * ПРОГРАММИСТ:ЛЕЙМ КОФФРОК В-28-79 * * ♦ * ОЛО 00 УСТАНОВИТЬ НАЧ. АДРЕС * СНАЧАЛА Ш ДОЛЖНЫ ИНИЦИАЛИЗИРОВАТЬ ЗОЕ ПЕРТЗИЕННЫЕ AF FB D3 Fo D3 14 QJ Уг 32 00 32 01 32 02 32 03 30 32 04 10 10 10 10 KWGHT КСОМР KlWW
ччИ( * ДАЛЕЕ НАЧИНАЕТСЯ ПРОГРАММА ***ч********>********** * НАЧАЛО РИСУНКА 4.20 CD ЕВ CD DB ЗА 01 FE 00 CA Ш СВ В1 00 5вт 00 10 00 00 CALL 0ROW ВЫВЕСТИ АКТИВНУЮ СТРОКУ CALL COLM ВЫЗВАТЬ ПОДПРОГ. ОВР. СТОЛВЦА LDA CiLAG НЕОБХОДИМО ПРОВЕРИТЬ ФЛАЖОК СТОЛБЦА CPI ООН ПРОВЕРИТЬ СТОЛБЕЦ НА АКТИВНОСТЬ JZ SHOW СТОЛБЕЦ НЕ АКТИВЕН,ПРОВЕРИТЬ ШШ CALL KEIW СТОЛБЕЦ АКТИВЕН,КАКОЙ ИМЕННО??? * ЮНЕЦ РИСУНКА 4.20 * НАЧАЛО РИСУНКА 4.21 ********* ИМЕЕМ АКТИВНУЮ КЛАВИШУ ♦♦ ♦ * ♦ * * ♦ (ШАГ 1) * ЗА 00 10 IDA KTIME ПОВТОРШЙ ВЫЗОВ KTIME ИЗ ПАМЯТИ ГК 00 * )и *(ШАГ .2) * CPI ООН КТ1МЕ=077 Рис. 4.24. Программа ввода информации с клавиатуры и вывода ее на индикатор. 61 0031 СА 53 62 0034 63 0034 64 0034 65 0034 66 0034 67 0034 ЗА 02 68 0037 4i . 69 0038 ЗА 03 .70 ООЗВ В9 71 ООЗС СА 46 72 003F 73 ООЗ 74 003F 75 OOJF AF 76 0040 32 00 77 0043 сз 66- 78 0046 79 0046 80 0046 81 0046 ЗА 00 82 0049 ЗС 83 004А 32 00 84 004D 8 5 004 .8 6 004D 87 004 32 88 004i с2 66 8 9 0052 CD 6i 90 0055 CD А7 91 0058 сз IB 92 005В 93 005В 94 005В 95 005В ЗА 02 96 005Б 32 03 97 0061 98 0061 99 0061 100 0061 ЗЕ 01 101 0063 32 00 102 0066 103 0066 104 0066 105 0066 ЗЕ 01 106 0068 32 04 107 006В 108 006В 109 006В ПО ООбВ СЗ IB 111 006Е 112 006е 113 ооба tU 006е 115 ООбК 116 006е 117 006Е 118 006е 119 ООбЕ 120 006Е JZ KCL01 Ш ПЕРВЫЙ РАв 19 LBA KWGHT MOV с,А 10 LDA КСОМР СМР С 00 J Z KCL02 * (НАГ 8) ХНА А 10 STA KTIME 00 JMP KCL03 * * . (ШАГ 9) * 10 LDA KTIME: INR А 10 STA K.TIMB * * (111ДГ ю) 00 00 00 00 CPI 50 JNZ ксьоз CALL КОШ CALL КоиТ JMP SEOW ч (111АГ 3) * Ю KCLQ1 LDA KWGHT Ю STA КСОМР )► (ШАГ 4) MVI А,01 10 STA XTIME * (111АГ 5) KCL03 А.01 KfiOW * (ШАГ 6) 00 SBOVf ДА,эта ПЕРШЙ РАЗ * ♦*** *** КАКАЯ ЦИФРА ВЫЛА НАБРАНА77Г РЕГИСТР CsKWCJHT РЕГИСТР А=КС0МР KC0MP=KWGHT??7 ДА,ОНИ РАВНЫ! ! I 9НИ НЕ РАВШ ПЕРЕЗАПИСАТЬ KTIME ИДТИ НА ПЕРЕЗАГРУЗКУ АКТИВ.НАБОРА ВЫЗВАТЬ KTIME ИЗ ПАМЯТИ КТ1МЕ=КТ1МЕ+1 JtTIME=KTIMji+l КТ1МЕ=507?7 ЕЩЕ НЕ 50 ., ПРОВЕРИТЬ ГОТОВНОСТЬ ПУЛЬТА ВЫДАТЬ НА ПУЛЬТ НА&АД К НАЧАЛУ KCOMP=KWGfflf- УСТАНОВИТЬ КТХМЕ=Т УСТАЮВИТЬ АКТИВ.HAEOP=00ob(500t ИДТИ К НШАЛУ ПРОГРАММЫ * ** ч* * * * *** **** ** 1* * * ************** НАЧАЛО ПРОГРАМШ ************************* * РЙС 4.22 121 006Е 122 0Э6Е 123 006Е 124 006Е 125 006Е 126 006Е 127 006Е 128 0070 129 0073 130 0074 131 0077 132 0077 133 0077 134 0077 135 007А 136 007А 137 007А 138 007А 139 007 140 007 141 037 142 007D 143 0080 144 0080 145 0080 146 0080 147 0083 148 008 5 149 Q088 150 0088 151 0088 152 0088 1 53 008В 154 008С 155 008F 156 008F 157 0081 158 008F 159 0091 )60 0094 161 0094 162 0094 163 0094 164 0097 165 0098 166 009В 167 009С 168 009С 169 009С 170 009G 171 009D 172 ООАО 173 ООАО 174 ООАО 175 ООАО 176 00А2 177 ООАЗ 178 00А6 179 ООАб 180 00А6 ПРОГРАММА ПОДГОТОВКИ пттА ******(ШАГ 1) JS 01 32 04 3 32 05 10 10 KOPN STA DCR STA A,01 кюкг NROW ч (щАГ 2) * 32 00 10 STA KTIME ч * (щАГ 3) CD EB 00 KOPNI CALL GROW * ** (таг 4) * С DB 00 CALL COLM ** (ШАГ 5) ЗА 01 FE 00 c2 6б ЗА 05 ЗС 32 05 FE 05 C2 7A 10 00 LDA CFLAG CP! 00 JSZ KOPN (ШАГ 9) LDA INR STA NROW A NROW ** *(ШАГ 10) * CP! 05 00 JNZ K0PN1 ** * (ШАГ 6) ЗА 00 ЗС 32 00 47 10 10 LDA KTIM3 INR A STA KTIMB MoV B,A 32 05 3e 32 B8 сг 7A ******(ШАГ 6A) XRA A 10 STA NROW ******(ШАГ 7) MVI A,50 CMP В 00 JNZ KOPNI (ШАГ 8) ♦ KKOW=00000001 NROW=00000000 KTIME=0 ВЫВЕСТИ НАБОР ВВЕСТИ ДАНШЕ СТОЛБЦА ВВЕСТИ CFUQ CFLAG=077 ПУЛЬТ ЕЩЕ НЕ СВОБОДЕН ВВЕСТИ АКТИВНЫЙ НАБОР ЗАПИСАТЬ АКТИВНЕЙ НАБОР ОНАНИРОВАНИЕ НЕ ЗАКОНЧЕНО РЕГИСТР B=KTIME ЗНАЧЕНИЕ НАБОРА=0 КТ1МЕ=50777 . НЕТ,СКАНИРОВАНИЕ ЕЩЕ PAS
|