Разделы
Публикации
Популярные
Новые
|
Главная » Сопряжение цифровых, аналоговых сигналов 1 ... 16 17 18 19 20 21 22 ... 59 0000 = Й001 = 0001 = 0080 = 0100 = fil00 СЗ 0С 01 0103 СЗ 23 01 0106 СЗ 2А 01 0109 СЗ 35 01 010G START: CHECK: READ: WRITE: INIT: CONFLG = 00H CONCHR =0IH KEYST = 0IH PRIST = 80H ORG I00H JMP INIT JMP CONST JMP CONIN JMP CONOUT ; программа ввода/вывода с консоли ; состояние порта ввода консоли ; порт ввода/вывода консоли ; маска состояния клавишного устройства ; маска состояния печатающего устройства ; начальный адрес ; указатели перехода ; инициирующая программа 5 установить бит переноса в случае готовности < ; загрузить в накопитель символ из порта ввода/вывода ; символ передается через регистр С ; инициирующая программа 0123 DB 00 0125 Е6 01 0127 С8 128 37 129 С9 012А CD 23 01 012D D2 2А 01 0130 DB 01 0132 Е6 7F 0134 С9 0135 DB 00 0137 Е6 80 139 СА 35 01 ei3G 79 CONST: CON IN: CONOUT: IN CONFLG ANI KEYST RZ STC CALL CONST JNC CONIN IN CONCHR ANI 7FH IN CONFLG ANI PRIST JZ CONOUT MOV A, С 5 ввести состояние консоли ; проверить бит состояния ввода, D0 ; нет готовности: возврат без установки бита переноса ; готовность: возврат с установкой бита переноса ; проверить состояние ; ожидать готовности ; ввести байт с клавишного устройства ; вычеркнуть бит четности, D7 ; возврат с введенным байтом в накопителе ; ввести состояние консоли J проверить бит состояния печатающего устройства, D7 g ядать готовности 5 загрузить выводимый байт в накопитель OUT CONCHR Продолжение J выслать его на печать Временное хранение 013D D3 01 0I3F С9 0140 Программа 11.6 Ячейки С номерами от 123 до 129 содержат всю подпрограмму CONST, причем КОПь! команд находятся в ячейках 123, 125, 127, 128, и 129. Этот пример вам следовало бы подробно просмотреть, сверяясь с приведенной выше программой. Укажем на одну возможную причину путаницы. Она заключается в том, что списки содержимого ячеек памяти с последовательно возрастающими номерами принято располагать на странице в порядке возрастания номеров ячеек сверху вниз, в то время как на диаграммах использования памяти номера ячеек возрастают снизу вверх, как, например, на рис. L1.3. На таком плане размещения памяти программа может начинаться в нижней части рисунка при направленной вверх последовательности выполнения команд. Неиспопьзовано Таблицы Программа Прерывания (адрес 4000Н] Коней, программы Программа выполняетса вверх START [адрес Q10DH) ВКЛЮЧЕНИЕ(здресООООН) Рис. 11.3. Типичная схема размещения naMHtH. Ассемблер. Все необходимые программы можно было бы, вообще говоря, транслировать вручную. Однако это очень утомительно; кроме того, любое изменение программы может привести к изменению большого числа адресов при ее повторной трансляции, что фактически означает необходимость выполнять заново существенную часть работы. Применение программы ассемблера, которая может за считанные секунды транслировать целые страницы текста на языке ассемблера, упрощает жизнь в громадной степени. Если для отладки или для пошагового выполнения потребуется сама объектная программа, можно дать ассемблеру команду напечатать аккуратный параллельный список составляющих ее байтов и соответствующих символов исходной программы на входном языке (т. е. на языке ассемблера). Примером такой распечатки ассемблера является программа 11.6. Обратите внимание на то, как ассемблер сократил дли у списка байтов объектной программы, разместив на каждой строке распечатки цщю ком#Н<ду, даже если последняя состоит более чем'из одного-байта. Надо также'отметить, что адреса назначения напечатаны аядом наперед - причуда микропроцессора, который ожидает, что младший значащий байт%дет стоять в операндах первым. Список переходов. Четыре указателя перехода, стоящие в начале нашей программы, заслуживают иецйалБного пояскения. Вся их работа соогоит в том, чтобы пбредават!Ь управление пооиределвнным адресам, расположенным дальше в программе, и на первый взгляд это может показаться бесполезным упражнением. (Например, не проще ли для вывода на печать одного байта перейти непосредственно по адресу CONOUT, вместо того чтобы использовать для этого посредника по имени WRITE?) Тем не менее существует важная причина для использовшия таких указателей. Возможно, вам придется изменять программу и использовать ее различные варианты, которые могут отличаться как содержанием, так и размещением в памяти отдельных подпрограмм. Размещение четырех указателей перехода в самом начале программы гарантирует, что содержащие их ячейки всегда имеют постоянные адреса независимо от возможных .(в ►разных вариантах программы ввода/вывода) изменений расположения в памяти реально действующих подпрограмм. Тем самым адреса, необходимые' для обращения из любых внешних программ к подпрограммам ввода/вывода через консоль, всегда известны, а любые изменения в теле программы ввода/вывода требуют повторной трансляции только самой этой программы. Список переходов стоит затраченных на него 12 байт памяти, а его применение является примером хорошего тона в программировании, к чему всегда следует стремиться. С другой стороны, той же цели можно было бы достичь и без применения указателей перехода, использовав для вызова псгдцроирамм один фикси|)ованный адрес и специальные аргументы, указывающие, какая именно подпрограмма должна быть выполнена. Meoustubie обозначения КОПов микропроцессора 8085, Перед .тем как оставить изучение ассемблера с его способностью превращать программу л а входном языке б байты машинного языка, мы можем дополнительно узнать кое-что о машинном языке, посмотрев на способ двоичного обозначения КОПов. Рассмотрим КОПы для сложения и вычитания: Мнемокод КОП ADD г ЮОООххх ADC г lOOOlxxx SUB г lOOlOxxx SBB г lOOllxxa Заметим, что старшие разряды (от D7 до D5) КОПов всех четырех команд всегда содержат 100. Это указывает процессору, что операция является либо сложением, либо вычитанием. Содержимое разряда D4 отличает сложение от вычитания, а D3 говорит, надо ли воздействовать на разряд переноса. Три младших разряда указывают, какой из восьми возможных регистров надо использовать; например, ООО обозначает регистр В, а 110 - регистр М. Большая часть возможных 256 байт КОПов выбирается для обозначения команд сходным таксономическим способом. Пример программирования. В заключение этого раздела мы рассмотрим короткий пример программирования для микропроцессора 8085 (программа 11.7): программу поиска в списке из 100 байт, на- ; программа для поиска совпадающего байта ; начинать с заданным байтом в накопителе ; начальный адрес таблицы загрузить в HL LOOP: LXI Н, 1000Н MVI В, 100 CMP М JZ MATCH INX Н DCR В JNZ LOOP MATCH: ; загрузить длину массива в счетчик цикла ; совпадение выход через метку MATCH, адрес в HL ; Следующий байт ; уменьшить на 1 содержимое счетчика цикла ; список еще не кончился ; выход сюда, если не было совпадения ,выход сюда при совпадений, адрес в HL Программа 11.7 чинающемся в ячейке с адресом 1000 Н байт, совпадаюш,его с содержимым накопителя. Здесь можно было бы применить красивый прием, позволяющий обойтись без счетчика цикла, а именно загрузить байт, который надо найти, в ячейку памяти, непосредственно следующую за списком. Это обеспечило бы выход из цикла в любом случае, причем адрес в паре регистров HL указывал бы, произошло или нет совпадение внутри введенного списка байтов. Упражнение 11.4. Изменить программу так, чтобы она проверяла массив из 500 элементов Упражнение 11.5. Изменить программу так, чтобы она осуществляла внутри первоначального массива поиск байта, разряды D6, D5 и D4 которого совпадают с этими разрядами данного байта Остальные разряды не учитывать Упражнение 11.6. Изменить программу так, чтобы найти все байты списка, совпадающие с данным байтом, их адреса записать в массив двухбайтовых адресов, начи- кающийся в ячейке памяти с адресом 2000 Н Упражнение П.7. Написать программу, которая просматривает строку байтов ASCII (т е. строку алфавитно-цифровых символов), заменяя все строчные буквы на прописные Строчное а закодировано байтом 61 Н, следующие буквы алфавита зако-рованы последоватедьными числами до 7А Н (строчное г) Прописные буквы зако- дированы байтами от 41Н до 5А Н. Начальный адрес и размер массива поместите соответственно в регистры HL и В. Упражнение 11.8. Написать программу, которая ищет строку (заданную последовательность байтов, например символы ASCH некоторого слова) П>сть HL указывает начало проверяемой таблицы, ВС содержит ее длину, а DE указывает начало заданной строки Длина этой строки вам неизвестна, но ее конец обозначен нулевым окончанием, т. е строка заканчивается нулевым байтом. Такая процедура является полезной частью программ, редактирующих текст (редакторов текста), поскольку позволяет следить за всеми появлениями в тексте некоторого слова или части слова пример законченной конструкции; б-канлльный счетчик событий В следующих разделах мы полностью спроектируем прибор, основанный на применении микропроцессора 8085. В дополнение к самому ЦП и чипам памяти мы для простоты используем только чипы ТТЛ СИС, отложив на конец главы обсуждение периферийных устройств на чипах БИС. Наш пример, б-канальный счетчик событий, будет включать конструирование законченной схемы и разработку необходимого математического обеспечения. П.5. Конструирование схемы Основная идея построенного на микропроцессоре счетчика событий заключается в возможности обойтись без отдельных чипов счетчиков (например, полудюжины схем 7490) для счета поступающих импульсов, вместо этого можно поместить результат счета в ячейку памяти и использовать микропроцессор для наблюдения за входом и увеличения результата счета в памяти при появлении входного импульса. Такая схема, конечно', не сможет действовать так же быстро, как специально сконструированный счетчик. Но с другой стороны, устройство, построенное на микропроцессоре, легко может быть расширено до сотен каналов и, кроме того, имеет в запасе возможность выполнять арифметические операции с накопленными результатами счета и даже принимать на основе таких вычислений решения и управлять действиями внешних устройств. Память. Чтобы начать конструирование, нам нужно выбрать постоянное запоминающее устройство для хранения программы. Мы выберем небольшое ППЗУ (перепрограммируемое постоянное запоминающее устройство), модели 2758. Кроме того, нам понадобится устройство сверхоперативной памяти для записи результатов счета и небольшого количества временной информации. В качестве такового мы возьмем самую маленькую из всех доступных схем п-МОП ЗУПВ (запоминающее устройство с произвольной выборкой), модель 68В10. Эти запоминающие устройства 8-битовые и предназначены для работы с 8-битовыми микропроцессорами. Теперь нам надо составить набросок схемы, которая состояла бы из обыкновенных чипов ТТЛ и выполняла такие функции, как фик- сация В соответствующие моменть! младшей полсшины адреса, обеспечение работы чипов памяти, получение входных импульсов, проверка состояния переключателей панели управления и управление числовым дисплеем. Полная блок-схема такого устройства приведена на рис. 11.4,
Рис. 11,4. Структурная схема 6-каиального счетчика событий. На рис. 11.5 показана окончательная схема включения ЦП, памяти и управляющих устройств. Чтобы получить А^., из AD, мы используем 8-канальную следящую (transparent; состояние выходов такой схемы повторяет состояние ее входов все время, пока схема открыта) фиксирующую схему типа 74LS373. Управление этой схемой при фиксации младшей половины адреса {к^-- из шины адресов/данных осуществляет ЦП при помощи линии ALE. ППЗУ имеет объем памяти I Кбайт, для адресации которого необходимо 10 адресных бит, Ао 9, а для адресации 128 байт ЗУПВ требуется 7 адресных бит, Аов- В каждой микропроцессорной системе должен быть предусмотрен способ подключения отдельных чипов памяти, поскольку любой такой чип может занимать только небольшую часть того объема памяти (64 Кбайт), который может адресовать ЦП при помощи своих 16 адресных бит. При включении ЦП начинает выполнение программы с нулевой ячейки памяти, поэтому содержащее программу ППЗУ всегда размещают в самом начале пространства памяти. В данном случае включение ППЗУ происходит при наличии сигнала НИЗКОГО уровня на линии Ю/М' и в адресном бите А^, что означает размещение ППЗУ в начале первого кбайта пространства памяти (и его повторе- ние через каждые 2 кбайт, что для нас не имеет значения). ЗУПВ включается сигналами НИЗКОГО уровня на линии 10/М' и ВЫСОКОГО - на адресном бите Аю, т. е. ЗУПВ занимает в памяти 128 ячеек в на- Б,1 МГц ППЗУ 2758 на 1024 байт 10/М iLS24 ISOQ i HLDA INTA HOLD IWTR TRAP 5,5 6.5 7,5 8065 RD WR 10/M CLK Младшая Головина адреса j/ Адреса/данные Включение Дешифратор ввода JLS155 Q О О f 2 3 о о О'О 8-паналь-ная ц>т-сир\ющая I ОЕ к 3VnB Б8ВШ на 128 байт LSOO WR+RD 10/м А о-As 65610 0 12 3 Шина данных Триггеры ввода Т для расширения Дешифратор вывода LSI55 Значение раарАда вывода, Пизмция разряда вывода Триггеры аыБода Выбор ввода Очистка разряда вывода Рис. 11.5. 6-канальный счетчик: схема включения ЦП, памяти и управляющих устройств. чале второго кбайта {и дальше повторяется через каждые 128 байт, что опять нам не важно, см. рис. 11,6). х ППЗУ включается только во время циклов считывания, поскольку в противном случае возникла бы конфликтная ситуация на шине дан- Глет 11 Ячейки nnav повторение чеоеа каждые ZK / 0800Н 3VnB -ячейки ЬШ повторение через камдые 1/8 R 04аОК 0400 Н ных. ЗУПВ включается как при считывании, так и при записи, причем пара управляющих сигналов RD, WR из ЦП преобразуется посредством стробирования в пару R/W и ENABLE, необходимую для работы ЗУПВ 68В10. Этим исчерпываются все схемы, нужные для подключения чипов памяти. Ввод а вывод. Нам понадобится схема для получения входных импульсов, кроме того, нам надо наблюдать за панелью управления, чтобы знать, какой канал счетчика должен быть выведен на дисплей и когда следует очищать счетчики. Затем нужна схема для управления 6-разрядным переключаемым 7-сегмеит-ным устройством цифровой индикации (дисплеем) на светоизлучающих диодах. Микропроцессор 8085 может адресовать 256 кодов (портов) устройств В/В, выдавая сигнал ВЫСОКОГО уровня на линию 10/М' и 8-битовый адрес (код йыборки) устройства наА0(, 7 (который дублируется наАд.га, если не требовать стробирования по линии ALE). Передача информации при программируемом вводе/выводе стробируется импульсами RD и WR точно так же, как при обращениях к памяти. Входные схемы. Начнем со схемы, которая считывает состояние переключателя индикации каналов. Она приведена на рис. 11.7. 1К Рис. П 6. 6-канальный счетчик; размещение памяти.
t t т (б1 Б\(фгр 1,0 кОм LS367 Выбор ввода Di Рис. И 7, 6-канальный счетчик, схема ввода положения переключателя индикации каналов. Как мы видели в последней главе, для простого устройства программируемого ввода требуется по буферу с тремя состояниями на каждый бит вводимой информации. Этот буфер открывается одновременным сочетанием сигналов RD10/М'и кода выборки данного устройства ввода на адресных линиях. Команды микропроцессора 8085 IN рогЬ и Оит port производят программный обмен данными (т. е, В/В) между накопителем и выбранным портом. разрешен LS1Q7(3) -о> Т и тд i i i Входные каналы о п------- LS367 -О I 11 триггеры BBORa 1 I I LSt74 ( I I л Триггеры вывода Рис 118 6-кэнальный счетчик входная схема Двойной дешифратор 1X4 типа 74LS155 генерирует отпирающий сигнал для буфера с тремя состояниями 74LS367, если на линию RD подан сигнал НИЗКОГО уровня, на линию Ю/М' ВЫСОКОГО и выбран порт О {низкий уровень на As и Ад). Таким образом, команда Ш О загружает в накопитель байт, 6 бит которого описывают положение кольцевого переключателя индикации каналов. Это все, что требуется микропроцессору; об остальном позаботится программа. Входные сигналы, соответствующие пересчитываемым событиям, принимает схема, изображеннаянарис. 11.8.Посколькубольшинство этих сигналов приходят в то время, когда выполняемая процессором 194 /ладй программа занята решением других задач и не следит за входными линиями, на каждой из них используется триггер, который позволяет программе определить, поступал ли входной импульс на данную линию. Состояние этих шести триггеров считывается при программируемом вводе данных из порта 1 ( Ш 1 ) через другой буфер типа 74LS367. Триггеры можно избирательно очищать посредством вывода в порт 1 слова данных, которое фиксируется схемой 74LS174. Схема индикации. Нам надо организовать индикацию содержимого любого выбранного канала счетчика таким образом, чтобы при программируемом выводе данных из процессора предназначенные для индикации цифры высылались на 6-разрядное переключаемое устройство цифровой индикации. Чтобы получить максимально возможную скорость счета, программа должна как можно чаще проверять состояние регистра триггеров ввода и не игнорировать их дольше, чем это совершенно необходимо; поэтому результаты счета будут выводиться на дисплей по одной цифре за одну процедуру вывода (вывод одной цифры занимает меньше всего времени). Конечно, процессор должен также время от времени проверять состояние переключателя индикации каналов, чтобы знать, где в памяти искать данные для индикации. Поскольку наш диспЛей переключаемый (т. е. в каждый момент времени высвечивается один разряд), весь цикл должен повторяться достаточно часто, чтобы избежать неприятного мерцания дисплея. Данные на всем дисплее надо обновлять не реже чем 50 раз в секунду; так как разрядов в нем шесть, на один разряд остается всего 3,3 мс. Схема управления дисплеем показана на рис. 11.9. Значение разряда фиксируется схемой 9368, которая, адресуется как порт 3. Схема 9368- это необычный чип, сочетающий двоично-десятичные регистр-защелку^ дешифратор и 7-сегментный усилитель-ограничитель тока. Для вывода номера (позиции), предназначенного для индикации разряда, процессор высылает на фиксатор-защелку 74LS174, подключенную как порт 2, специальный байт, единственный установленный в 1 бит которого соответствует позиции этого разряда. (Вместо этого здесь можно было бы применить дешифратор, что потребовало бы большего числа дополнительных чипов.) Таким образом, последовательность команд OUT 3 MVI А,2 OUT 2 осуществит индикацию во втором справа разряде дисплея того числа которое первоначально содержалось в накопителе. Заметим, что выведенное на дисплей число продолжает светиться, пока на его место не будет выведено другое; так что, если выполнение программы почему-либо прервется, последнее выведенное число будет сиять на дисплее особенно ярко. В схеме управления дисплеем есть одна тонкость. Дешифратор/ усилитель тока (источник) рассчитан на нагрузку 20 мА на один сег- 1 ... 16 17 18 19 20 21 22 ... 59 |
© 2004-2025 AVTK.RU. Поддержка сайта: +7 495 7950139 в тональном режиме 271761
Копирование материалов разрешено при условии активной ссылки. |