- •Общие сведения о микропроцессорах, основные определения и классификация
- •Общая структурная схема микропроцессора
- •Два подхода в построении уу микропроцессора
- •Структурная схема мп со схемной логикой управления
- •Принцип микропрограммного управления. Структурная схема мп на основе программируемой логики управления
- •Типовая структурная схема мпс с мультиплексируемой шиной адресов и данных
- •Управление памятью и внешними устройствами
- •Структура микропроцессора к1821вм85а
- •Блок регистров мп к1821вм85а
- •Блок управления мп к1821вм85а
- •Синхронизация и последовательность действий мп к1821вм85а
- •Система прерываний
- •Последовательный ввод-вывод
- •Система команд мп к1821вм85а
- •Пример выполнения программы
- •Приемы программирования микропроцессоров
- •Язык Ассемблера
- •Программирование последовательных участков алгоритма
- •Программирование циклических вычислительных процессов
- •Составление программ, содержащих подпрограммы
- •Общие сведения об интерфейсных схемах
- •Шинные формирователи
- •Буферные регистры
- •Параллельные периферийные адаптеры (ппа)
Пример выполнения программы
Выполнение команды реализуется в МПС через работу ее шин. Для иллюстрации рассмотрим выполнение короткого фрагмента программы пересылки байта 10 H из одной ячейки памяти в другую. Пусть пересылка производится из ячейки 0100 H в ячейку 0101 H. Пусть также фрагмент программы размещается в памяти, начиная с ячейки 2000 H.
Для выполнения фрагмента сначала нужно переслать байт в аккумулятор, а затем из аккумулятора в память. Так как обращение к памяти подразумевает косвенную адресацию, вначале требуется загрузка пары регистров H адресом ячейки, к которой идет обращение. С учетом сказанного, фрагмент программы в мнемокодах (на Ассемблере МП) примет вид, показанный в среднем столбце:
2000 LXI H, 0100 H 21 00 01
2003 MOV A, M 7E
2004 INX H 23
2005 MOV M, A 77
Команда загрузки непосредственных данных в пару регистров LXI rp, b3b2 имеет код 00ПР0001 (см. таблицу 5). Пара регистров H имеет адрес ПР = 10 (таблица 2). Подставив это значение в код команды, получаем код 21. В правом столбце записана команда в кодах. Она имеет вид 21 00 01, так как после кода операции из памяти извлекаются сначала младший (00), а затем старший (01) байты. Команда трехбайтная и занимает ячейки памяти 2000…2002.
Однобайтная команда MOV A, M пересылки из памяти в аккумулятор является вариантом команды MOV r, M с кодом 01ППП110. Подставив в этот код адрес регистра A = 111, получаем код 7E.
Команда INX H прибавляет единицу к содержимому регистровой пары и является вариантом, код которого получается из кода 00ПР0011 при подстановке адреса пары регистров 10, что дает код 23.
Последняя команда фрагмента программы (пересылка из аккумулятора в память) MOV M, A, имеющая код 77, пересылает содержимое аккумулятора в ячейку памяти, адрес который находится в регистровой паре H. Эта команда завершает выполнение фрагмента программы.
ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРОВ
Приемы программирования микропроцессоров
Микропроцессоры (МП) можно программировать на языках кодовых комбинаций и Ассемблера. В первом случае команды программы представляются в виде кодовых комбинаций в двоичной системе счисления. Это усложняет поиск ошибок, программы трудно читаемы и плохо обозримы, трудно вносить изменения. Наряду с указанными недостатками язык кодовых комбинаций позволяет составлять программы наиболее эффективно, она занимает минимальный объем памяти и быстрее исполняется.
При использовании языка Ассемблера программирование упрощается. В этом языке вместо кодовых комбинаций применяется мнемоническая форма записи операций, выполняемых в МП. С помощью мнемоники, взятой из сочетания букв соответствующих английских слов, представляют вид выполняемой операции, операнды и адреса. Каждой команде на языке Ассемблера соответствует команда на языке кодовых комбинаций.
Язык Ассемблера упрощает запись команд, облегчает поиск ошибок, обеспечивает лучший обзор программы и простоту внесения исправлений в программу.
Перед исполнением программа должна быть переведена с языка Ассемблера на язык кодовых комбинаций и в таком виде помещена в память микропроцессорной системы (МПС). Этот перевод осуществляется с помощью программы трансляции, называемой ассемблером. Язык Ассемблера можно использовать и при отсутствии программы для трансляции, в этом случае трансляция осуществляется вручную.
Язык Ассемблера индивидуален для каждого микропроцессорного комплекта (МПК).
Следующий уровень языка программирования – язык Макроассемблера. В нем предусматривается возможность присвоения имени некоторой последовательности команд, а в любых местах программы, где должна быть использована эта последовательность, указывается лишь имя последовательности. Применение языка Макроассемблера сокращает запись программы (в среднем на 5…20%) и тем самым улучшает ее обозримость. Каждая серия МПК имеет свой индивидуальный язык Макроассемблера.
Следующий уровень языка программирования – язык высокого уровня. Языки высокого уровня обеспечивают большую компактность программы, что улучшает обзор программы и выявление в ней ошибок.
Различают машинно-независимые и машинно-зависимые языки высокого уровня. Первые позволяют вести запись программы независимо от серии МПК (к таким языкам относятся Бейсик, Паскаль и др.). Вторые пригодны для определенных серий МПК, например, для программирования устройств, построенных с использованием МПК серии КР580, разработан язык высокого уровня PLM-80.
Языки высокого уровня требуют более сложных трансляторов, кроме того, полученная после трансляции программа занимает больший объем памяти (на 10…100%) и медленнее исполняется, чем в том случае, когда эта программа составляется непосредственно в кодовых комбинациях. При этом эффективность программ на машинно-независимых языках программирования обычно ниже, чем в случае использования машинно-зависимых языков.
Для относительно несложных программ (например, объемом до одной тысячи команд) целесообразно использовать языки низкого уровня: язык кодовых комбинаций, язык Ассемблера или язык Макроассемблера.