КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Интерфейсы ввода – вывода. Программирование микропроцессора на языке ассемблера
Языки программирования До сих пор, записывая команды, мы применяли язык кодовых комбинаций, единственно понятный микропроцессору. Пользование этим языком вызывает трудности, связанные, во-первых, с необходимостью записи громоздких, труднозапоминаемых двоичных кодовых комбинаций (использование для этих кодовых комбинаций представления в восьмеричной либо шестнадцатеричной системе счисления не приводит к существенному облегчению записи программы), во-вторых, со сложностью поиска ошибок в составленной программе из-за того, что записанная с помощью кодовых комбинаций программа оказывается трудно читаемой, плохо обозримой, и, в-третьих, с трудностью внесения изменений в составленную программу. Рассмотрим, в чем состоят последние трудности. Пусть исправление некоторого участка программы привело к тому, что после коррекции этот участок занимает меньшее число ячеек в ОП. Таким образом, в последовательности адресов ячеек, занимаемых программой, возникает разрыв (на рис.— адреса освободившихся ячеек памяти). Такие разрывы недопустимы. Это связано с тем, что счетчик команд микропроцессора после выборки очередной команды формирует адрес следующей команды путем увеличения своего содержимого на единицу. Следовательно, после выполнения последней команды участка программы перед разрывом счетчик в качестве адреса очередной команды укажет адрес ячейки Ак+1. Для устранения образовавшихся разрывов можно воспользоваться следующими приемами. Если, то в первые три ячейки разрыва следует поместитьтрехбайтовую коман- безусловного перехода к ячейке первой после разрыва. Бели число ячеек в разрыве меньше трех, в эти ячейки помещается однобайтовая команда отсутствие операции, имеющая кодовую комбинацию 0000 0000. Рассмотрим другой случай, когда в результате коррекции некоторого участка программы выясняется, что исправленный участок программы не помещается в той группе ячеек, которая ранее отводилась под этот участок. В этом случае в указанную группу ячеек помещают начальную часть скорректированного участка, заканчивая ее трехбайтовой командой безусловного перехода к некоторой свободной ячейке, например следующей за ячейкой, которую занимает последняя команда программы (рис.). Начиная с этой ячейки, производится размещение команд конечной части скорректированного участка программы. Завершить эту часть участка программы необходимо командой безусловного перехода. Следует иметь в виду, что подобные приемы приводят к появлению в программе дополнительных команд, за счет чего возрастают расходуемая емкость оперативной памяти и время исполнения программы. При большом числе исправляемых участков программы, по-видимому, целесообразно составить программу заново, не пользуясь описанными выше приемами. Наряду с указанными недостатками язык кодовых комбинаций имеет и достоинства. Программа на этом языке оказывается наиболее эффективной, она занимает минимальный объем памяти и быстрее исполняется. Уменьшение памяти (часто выполняемой в виде ПЗУ) снижает затраты на этот наиболее дорогостоящий узел микропроцессорной системы, а уменьшение времени позволяет решать более сложные задачи. Кроме того, записанная на бумаге программа после ее набивки на перфоленту может быть непосредственно введена в память микропроцессорной системы. Трудности программирования уменьшаются при использовании языка ассемблера. В этом языке вместо кодовых комбинаций применяется мнемоническая форма записи операций, выполняемых в микропроцессоре. Такой мнемонической записью (в виде сочетания букв, взятых из соответствующих английских слов) представляют вид выполняемой операции, операнды и адреса. Каждой команде на языке ассемблера соответствует команда на языке кодовых комбинаций. Язык ассемблера упрощает запись команд, облегчает поиск в ней ошибок, обеспечивает лучший обзор программы и простоту внесения исправлений в программу (без специальных приемов, подобных тем, которые описывались выше для исправления написанных на языке кодовых комбинаций программ). Перед исполнением программа должна быть переведена с языка ассемблера на язык кодовых комбинаций и в таком виде помещена в память микропроцессорной системы. Этот перевод осуществляется на ЭВМ с помощью программы трансляции, называемой ассемблером. Языком ассемблера можно пользоваться для программирования и в тех случаях, когда отсутствует программа для трансляции (отсутствует ассемблер). Выполнение трансляции в этом случае производится вручную (такая трансляция называется ручным ассемблированием). Язык ассемблера (так же, как и язык кодовых комбинаций) индивидуален для каждого микропроцессорного комплекта, т. е. каждый микропроцессорный комплект имеет свой язык ассемблера, отличный от языков ассемблера других комплектов. Следующий уровень языка программирования — язык макроассемблера. В нем предусматривается возможность присвоения имени некоторой последовательности команд, и в любых местах программы, в которых должна быть использована эта последовательность, указывается лишь имя последовательности. Применение языка макроассемблера сокращает запись программы (в среднем на 5...20 %) и тем самым улучшает ее обозримость. Каждая серия МПК имеет свой индивидуальный язык макроассемблера (как и язык ассемблера), т. е. программа, составленная на этом языке для МПК одной серии, непригодна для использования в микропроцессорах, построенных на комплектах других серий. Следующий уровень языка программирования—язык вьи:окого уровня. Языки высокого уровня близки к обычному математическому языку, описывающему процесс решения задачи, поэтому они легко усваиваются. Кроме того, они обеспечивают большую компактность программы (сложные вычислительные процессы представляются короткими записями), что улучшает обзор программы и выявление в ней ошибок. Различают машинно-независимые и машинно-зависимые языки высокого уровня. Первые позволяют вести запись программы независимо от серии микропроцессорного комплекта, используемого для построения микропроцессорного устройства (к таким языкам относятся Бейсик, Фортран, Паскаль и др.). Вторые пригодны для определенных серий МПК. Для программирования устройств, построенных с использованием комплекта серии КР580, разработан язык высокого уровня PLM-80, относящийся к классу машинно-зависимых языков высокого уровня. Языки высокого уровня требуют более сложных трансляторов для перевода программы на язык кодовых комбинаций (для машинно-неза- висимых языков они сложнее, чем для машинно-зависимых); кроме того, полученная после трансляции программа занимает больший объем памяти (на 10... 100 %) и медленнее исполняется, чем в том случае, когда эта программа составляется непосредственно в кодовых комбинациях. При этом эффективность программ, для составления которых используются машинно-независимые языки, обычно ниже, чем в случае использования машинно-зависимых языков программирования. Для относительно несложных программ (например, объемом до одной тысячи команд) целесообразно использовать языки низкого уровня: язык кодовых комбинаций, язык ассемблера или язык макроассемблера. Программа на языке ассемблера представляется в виде последовательности предложений; каждое из которых занимает отдельную строку. В табл. показана запись на языке ассемблера той же программы, которая на языке кодовых комбинаций приведена в табл.. Каждое предложение языка ассемблера содержит четыре фиксированных поля: поле метки, поле кода, поле операнда и поле комментария. Поле метки. Если предложение снабжается именем, то оно записывается в поле метки и после имени ставится двоеточие. Имя строится в виде произвольно выбранной последовательное ги заглавных букв латинского алфавита и цифр, причем первым символом в имени должна быть буква. В приведенной в табл. программе использованы имена М1 и М2. Обычно именами снабжаются предложения, на которые производится условный либо безусловный переход. Одно и то же имя не может встречаться в поле метки более одного раза. В противном случае возникает неясность, к какому предложению должен производиться переход по соответствующим командам условного и безусловного переходов. Поле кода. В этом поле записывается мнемоническое обозначение кода операции, приводимое в системе команд микропроцессора. Поле операнда. В поле операнда приводятся участвующие в операции числа (непосредственные данные), указания об источниках и приемниках данных, участвующих в операции; в предложениях условных и без условных переходов в этом поле указывается имя (метка) предложения на которое осуществляется переход. Числовые данные могут представляться в различных системах счисления. Для указания выбранной для представления числа системы счисления после шестнадцатиричного числа ставится символ Н (а если число начинается с букв A,...,F, то перед числом ставится цифра 0), после десятичного числа можно ставить символ D (либо не записывать никакого символа), восьмеричное число заканчивается символом Q, двоичное символом В. Система сбора данных. Рассмотрим пример, в котором микропроцессор используется для выполнения логических действий. Пусть устройство должно выполнять следующие функции: поступающие по восьми каналам аналоговые сигналы последовательно подключаются к АЦП и после преобразования в цифровую форму запоминаются в оперативной памяти. Работа устройства, структурная схема которого представлена на рис., происходит в следующей последовательности. Адрес очередного канала указывается в трех младших разрядах данных, выдаваемых из микропроцессора на шину данных. С шины данных адрес принимается устройством вывода УВ1, откуда он поступает на адресные входы коммутатора. Сигнал выбранного канала передается на вход АЦП. После окончания преобразования АЦП выдает сигнал готовности Г = 1, который устройством ввода УВв2 передается на шину данных, откуда принимается микропроцессором и сбросит регистр в нулевое состояние, что будет использовано в качестве признака окончания сбора данных. После выдачи номера очередного канала микропроцессор принимаете аккумулятор А сигнал из УВв2. Путем сдвига вправо содержимого аккумулятора принятое значение передается в триггер Тс. Если при этом (Тс) = 0 (это означает, что АЦП не закончил преобразование принятого аналогового сигнала), то микропроцессор повторяет лрием из УВв2, и так до тех пор, пока не будет принято значение Г = 1. После этого производится прием данных из УВв1. Принятый байт данных запоминается в памяти. Затем прибавлением единицы к содержимому пары регистров HL в них формируется адрес ячейки, в которую будут переданы данные, полученные в результате преобразования сигнала следующего канала. На рис. приведена схема алгоритма функционирования устройства. \~ В табл. приведена программа. В табл. показано размещение программы в ОП. Буферы Информация, выдаваемая микропроцессором на шины адреса и данных, может предназначаться большому числу различных устройств, подключенных к этим шинам (ОЗУ, ПЗУ, устройства ввода и вывода). Однако выходы микросхемы КР580ВМ80А допускают потребление подключенными к ним устройствами относительно небольшого тока. Значение тока через эти выходы при высоком уровне напряжения (уровне лог.1) вых = 0,1 мА, при низком уровне напряжения (уровне лог.О) вых < 1,6 мА. При такой нагрузочной способности к выходам микропроцессора может быть подключено не более одного входа микросхемы ТТЛ. Низкая нагрузочная способность выходов микропроцессора связана с тем, что на кристалле, микропроцессора размещено большое число транзисторов и для обеспечения требуемого теплового режима тепло, выделяемое каждым транзистором, должно быть малым. Следовательно, малыми должны быть токи через транзисторы. Для увеличения нагрузочной способности выходов потребовалось бы использование на выходах мощных транзисторов, через которые протекали бы большие токи, а это привело бы к большому выделению тепла и недопустимому повышению температуры кристалла. Так как токи, потребляемые нагрузкой микропроцессора, обычно превышают указанные выше допустимые значения, в шины адреса и данных включаются буферы. Для построения таких буферов в МПК серии КР580 предусмотрены шинные формирователи КР580ВА86 и КР580ВА87. Шинные формирователи. На рис. показана логическая схема формирователя КР580ВА86, осуществляющего передачу 8-разрядных данных. На рисунке подробно изображена схема лишь нулевого разряда, схемы остальных разрядов аналогичны. В цепи передачи включены два повторителя, имеющие три состояния. При этом если один из повторителей находится в включенном состоянии, то другой — в выключенном (третьем). Так, если повторитель 1 находится в включенном состоянии, то повторитель 2 оказывается в выключенном состоянии и передача (в нулевом разряде) осуществляется через повторитель 1 в направлении от вывода А0 к выводу 2. Если переключить повторители в обратное состояние, установив во включенное состояние повторитель 2, повторитель 1 окажется в выключенном состоянии и передача будет происходить через повторитель 2 в направлении от вывода 2 к выводу А0, т. е. в обратном направлении. Управление состоянием повторителей осуществляется элементами ИЛИ-НЕ 1 и 2 с помощью управляющих сигналов БК и Т. Если на входе ВК установлен высокий уровень лог.1, то независимо от значения сигнала Т на выходах элементов ИЛИ-НЕ устанавливается низкий уровень лог.О, во всех разрядах оба повторителя оказываются в выключенном состоянии и не происходит передачи информации ни в прямом, ни в обратном направлениях. При комбинации сигналов БК = 0 и Т = 1 на выходе элемента ИЛИ-НЕ 1 образуется высокий уровень лог. I и 1 во всех разрядах оказываются во включенном состоянии; на выходе элемента ИЛИ-НЕ 2 — низкий уровень лог.О, устанавливающий повторители 2 в выключенное состояние. Происходит передача 8-раз- рядных данных в направлении от А к В. При комбинации сигналов ВК = 0 и Т = 0, наоборот, на выходе элемента ИЛИ-НЕ 2 устанавливается напряжение уровня лог. 7, открываются повторители 2, на выходе элемента ИЛИ-НЕ 1 устанавливается напряжение уровня лог. О, и повторители 1 оказываются в выключенном состоянии. Происходит передача 8-разрядных данных от стороны В к стороне А. Таким образом, шинный формирователь обеспечивает управляемую двунаправленную передачу 8-разрядных данных в соответствии с табл.. Выходы В (при передаче в направлении от А к В) имеют большую нагрузочную способность, чем выходы А (когда происходит передача в направлении от В к А). К выходам В допускается подключение нагрузки, потребляющей ток 32 мА - 5 мА. Для выходов А эти токи = 10 мА - 1 мА. Очевидно, шинный формирователь должен включаться стороной А к выводам микропроцессора, стороной В — к системным шинам адреса и данных. 0-й разряд
Дата добавления: 2014-12-10; Просмотров: 1512; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |