Текст
                    КОНТРОЛЬ
Н А. ЛЫСЕНКОВ
зьщ исд млел ьн ые*ив
1Й и кЬЪл й^ессорн ые
кредства^
элеко]й)ннБ1Х
каппарятах^г

Харьков 2002

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ НАУЧНО-МЕТОДИЧЕСКИЙ ЦЕНТР ВЫСШЕГО ОБРАЗОВАНИЯ ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ Р АД11ОЭ ЛЕКТРОНИКИ Н А. Лисенков ВЫЧИСЛИТЕЛЬНЫЕ И МИКРОПРОЦЕССОРНЫЕ СРЕДСТВА В ЭЛЕКТРОННЫХ АППАРАТАХ Рекомендовано Министерством образования Украины как учебное пособие для студентов всех форм обучения специальностей 7091001 7 091002 7 091003.7 091004 высших учебных заведений К ОНТРО/\ ь В1БЛ1ОТЕКА IHB. № Харьков 2002
ОБЩИЕ ПОЛОЖЕНИЯ Новый этап в развитии микроэлектронной техники, наступивший с появ- лением микропроцессоров (МП), изменил подход к проектированию и реализа- ции цифровых систем, встроенных в электронные аппараты [1]. Использование их в цифровых системах автоматического управления позволяет более эффек- тивно и гибко, по сравнению с традиционными средствами автоматики, решать задачи комплексной автоматизации в различных областях научной и производ- ственной деятельности [2,3]. Применение больших интегральных схем (БИС) с программируемой логикой значительно уменьшает габариты и энергопотреб- ление, повышает надежность, расширяет функциональные возможности элек- тронных аппаратов (ЭА), их перестраиваемость в процессе функционирования и эксплуатации. Иллюстрацией дальнейшего прогресса микроэлектроники яв- ляется развитие встраиваемых микроконтроллеров (МК), сфера применения ко- торых оказалась во много раз шире, чем МП [4,5]. Встраиваемый или однокристальный МК, который в отечественной лите- ратуре раньше называли однокристальной микроЭВМ (ОМЭВМ), представляет собой изготовленную на одном кристалле микропроцессорную систему (МПС), ориентированную на реализацию алгоритмов цифрового управления различ- ными объектами и процессами [6,7,8,9,10,11]. Микроконтроллер содержит центральный процессор, внутреннюю память программ и память данных, параллельные и последовательные порты ввода- вывода, набор периферийных устройств: таймеры, аналого-цифровые преобра- зователи, широтно-импульсные модуляторы, контроллеры прерываний, модули обработки сигналов (событий) в реальном времени. Таким образом, на базе МК с включением минимального количества дополнительных компонентов можно построить сложнофункциональную цифровую систему. По совокупности функциональных возможностей и технических характе- ристик МК ориентированы, в первую очередь, на реализацию управления раз- личными приборами и устройствами. Они используются также как компоненты в системах управления технологическими процессами, информационно- измерительных и контрольно-диагностических системах. Применение в .ЭА и других объектах управления МП и МК в качестве элементной базы требует от их разработчиков знания архитектуры, программно доступных ресурсов, используемых МП компонентов, умение оценивать их возможности и характеристики, навыков разработки программного обеспече- ния для реализации дальнейших функций. В этой связи в учебные планы по подготовке бакалавров и специалистов по всем специальностям направления «Электронные аппараты» введена дисци- . плина «Вычислительные и микропроцессорные средства в электронных аппа- ратах». Целью дисциплины является изучение принципов использования элек- тронно-вычислительных средств и МП в ЭА, изучение архитектуры базовых микропроцессорных комплектов (МПК) и методов их выбора для конкретного 3
использования, а также методов разработки и отладки программ для выполне- ния различных функций МП и МК, которые встроены в ЭА. В данном пособи» рассмотрены общие вопросы архитектуры и функцио- нирования микроЭВМ, отличительные особенности проектирования электрон- ных аппаратов на основе использования МП компонентов, представления ин- формации, арифметические и логические основы цифровых устройств, про- граммная модель микропроцессорной системы и основы программирования в машинных кодах и на языке ассемблера гиповых однокристальных микропро- цессоров, организация интерфейса в микроЭВМ на основе параллельных и по- следовательных каналов ввода-вывода? программная модель ОМЭВМ и приме- ры реализации конкретных функций управления и обработки сигналов с ис- пользованием системы команд МК семейства MCS-51. В пособии также представлены: выписка из ГОСТ [12] по оформлению схем алгоритмов и программ (приложение А); описание команд МК семейства MCS-51 (приложение Б); словарь терминов и сокращений (приложение В). 4
1 АРХИТЕКТУРА И ФУНКЦИОНИРОВАНИЕ МИКРОЭВМ 1 1 Состав и назначение микропроцессорной системы В технических словарях термин «Вычислительное средство» определяет- ся как физическая система (устройство или комплекс устройств), предназна- ченная для механизации и автоматизации процесса алгоритмической обработки информации и вычислений. В цифровой технике несколько шире имеет поня- тие «микропроцессорная система» (МПС). МПС - это законченное изделие, представляющее собой схемно-конструктивное соединение нескольких инте- гральных микроэлектронных элементов, включая одну или несколько больших или сверхбольших интегральных схем (БИС, СБИС), предназначенное для вы- полнения следующих функций: получение и обработка информации, передача информации, преобразование информации и управление Основу МПС составляет микропроцессор (МП). МП - это функционально законченное электронное цифровое устройство, выполненное на одной или не- скольких БИС и предназначенное для работы в качестве вычислителя путем исполнения определенного набора команд, хранимых в отдельной части памя- ти. МП является нейтральным процессорным элементом любой микроЭВМ и функционирует в составе с другими устройствами: блоками памяти в виде опе- ративных и постоянных запоминающих устройств (ОЗУ и ПЗУ), блоками со- пряжения МП с устройствами ввода-вывода (унифицированный интерфейс ввода ИВ и интерфейс вывода ИВыв.) и внешние периферийные устройства ввода (УВ) и вывода (УВыв), генератором тактовых сигналов (ГТС), а также другими устройствами, выполненными с использованием БИС или элементов с меньшей степенью интеграции (рис. 1.1). Названные блоки и устройства связаны друг с другом с помощью шин для передачи адресов (UIA), данных (ШД) и управляющей информации (ШУ). Эти шины образуют общий канал, называемый системной шиной (СШ). В зависимости от конструктив- ного исполнения различают одно- платные, многоплатные и одно- кристальные МЭВМ. В отличии от пер- вых, однокристальная МЭВМ представ- ляет собой одну БИС, объединяющую в себе процессор, память (ограниченного объема) и контроллеры ввода-вывода. Показатели всей микроЭВМ в ос- новном определяют характеристики МП: разрядность МП, быстродействие, на- бор выполняемых команд, режимы адресации, число программно-доступных Рисунок 1.1 - Основные компоненты МЭВМ 5
регистров, схема обработки прерываний и др. Микропроцессор обычно выполняет: 1) формирование синхронизирующих и управляющих сигналов для всех компонентов МЭВМ; 2) выборку комацд и данных из памяти; 3) декодирование команд; 4) арифметические, логические и другие операции; 5) управление передачей данных между регистрами МП и памятью, с одной стороны, и устройствами ввода-вывода с другой (за исключением случаев, ко- гда передача данных осуществляется по принципу прямого доступа между внешними устройствами и оперативной памятью МЭВМ); 6) обработку сигналов от устройств ввода-вывода, в том числе обработку сигналов прерывания, поступающих с этих устройств. В составе МП можно выделить арифметико-логический блок (АЛБ), блок рабочих регистров (БРР), блок управления (БУ), связанные друг с другом внутренней шиной (ВШ) для передачи адресов, команд и управляющих сигна- лов (рис. 1.2). Рисунок 1.2 - Основные компоненты МП Важнейшие блоки МП непосредственно или через другие блоки связаны с СШ, по которой производится передача адресов, сигналов данных и управле- ния между подключенными к ней устройствами МЭВМ. Обмен данными между двумя устройствами, подключенными к СШ, ча- ще всего происходит асинхронно, в результате чего достигается максимальная скорость передачи данных. 6
В задачу данного пособия не входит подробное рассмотрение схемотех- нических аспектов организации микропроцессоров и микропроцессорных сис- тем. Соответствующие вопросы детально излагаются на лекциях и в специаль- ной литературе [2, 12, 13]. Цель пособия - помочь обучающимся в закреплении знаний по вопросам проектирования программной части для встроенных мик- ропроцессорных систем управления. Данный материал изложен в помощь сту- дентам для закрепления знаний по дисциплине "МП и МЭВМ в РЭС" по вопро- сам проектирования программной части МП РЭС. Составляя программу для МЭВМ в машинных кодах или на языке Ас- семблера, программист абстрагируется от всего многообразия элементов МП и имеет дело лишь с системой команд и ограниченным числом его регистров, па- мятью, портами, называемыми программно-доступными ресурсами. 1.2 Функционирование микроЭВМ Для иллюстрации работы МЭВМ рассмотрим реализацию следующих процедур: 1) нажатие клавиши 'Б' клавишного устройства; 2) размещение буквы ’Б' в памяти; 3) воспроизведение 'Б' на экране дисплея. Аппаратные электрон- ные средства для реализации указанных процедур достаточно сложные, однако анализ процесса передачи данных поможет понять роль различных устройств, составляющих систему связки: клавиатура, МЭВМ, дисплей. Согласно рис. 1.3, текущими командами в программной памяти являются: 1. ВВЕСТИ (INPUT) данные через порт ввода 01. 2. РАЗМЕСТИТЬ (STORE) данные, поступающие с порта 01, в ячейке памяти данных с адресом 200. 3. ВЫВЕСТИ (OUTPUT) данные через порт вывода 10. Заметим, что приведенная программа содержит только три команды. Од- нако в программной памяти на рис. 1.3 занято шесть ячеек, которые делятся, в данном случае, на две части. Первая часть - КОП (код операции), а вторая - операнд (число данных, адреса, имя регистров, порта и др ) Так, КОП BBECTPJ содержится в ячейке памяти 100, а операнд, который указывает, откуда посту- пит информация (порт 01) — в ячейке 101. МП является центром всех преобра- зований данных и операций, выделенные в нем аккумулятор и регистр команд (РК) повышают наглядность реализуемых процедур в МЭВМ. На примере простейшей программы покажем, каким образом МП шаг за шагом осуществляет решение поставленной задачи. 7
Рисунок 1.3— Шаги МЭВМ в ходе выполнения команд Шаг 1. МП выставляет адрес 100 наША. Шина управления (ШУ) активи- зирует считывание из памяти программ (1111) (1 в кружке, рис.1.3). Шаг 2. Из ПП КОП первой команды копируется на ШД и передается в регистр команд МП, декодируется МП, после чего определяется, что этой ко- манде нужен операнд. Шаг 3. МП выставляет на ША адрес 101. ШУ активизирует вход считы- вания из ПП. Шаг 4. Содержимое ячейки 101 (адрес порта 01) копируется из ПП на ШД и передается МП. Шаг 5. МП инициирует порт 01 посредством ША и ШУ. Кодированная форма символа 'Б' передается в аккумулятор и временно хранится в нем. Заметим, что МП все время действует в такой последовательности: из- влечение, декодирование, выполнение. Он извлекает сначала из ПП команду, затем расшифровывает ее и, наконец, выполняет. Шаг 6. МП выставляет на ША адрес ячейки памяти 102 и активизирует вход считывания из ПП посредством ШУ. Шаг 7. КОП команды ПОМЕСТИТЬ ДАННЫЕ считывается с ШД, при- нимается МП и помещается в РК. Шаг 8. МП декодирует эту команду и определяет, что нужен операнд, по- сле чего он выставляет на ШД адрес 103 и активизирует считывание из ПП. 8
Шаг 9. Содержимое ячейки 103 (адрес ячейки памяти 200) передается в Mil. Шаг 10. Начинается процесс выполнения. МП выставляет на ША адрес 200 и активизирует вход записи в память. Шаг 11. МП выдает помещенную в А кодированную форму символа Ъ' на 1ПД, которая записывается в память данных (ПД) по адресу 200. Вторая коман- да выполнена. Шаг 12. МП должен извлечь следующую команду. Он адресует ячейку памяти 104 и активизирует вход считывания из памяти. Шаг 13. КОП команды ВЫВЕСТИ ДАННЫЕ копируется на ШД и пере- дается в регистр команд МП. Затем МП декодирует КОП и устанавливает, что нужен операнд. Шаг 14. МП помещает адрес 105 на ША, активизирует вход считывания из памяти. Шаг 15. Содержимое ячейки 105 (адрес порта ввода 10) копируется на ШД и подается в МП. Шаг 16. МП активизирует порт 10 посредством ША и ШУ, после чего помещает код символа 'Б' (постоянно находящийся в А) на ШД. Через порт 10 символ Ъ' начинает высвечиваться на дисплее. Большинство МЭВМ передают информацию описанным и показанным на рис. 1.3 способом. Самые значительные различия сосредоточены в элементах ввода и вывода Может быть и так, что потребуется больше шагов для осущест- вления этих операций. 1.3 Вопросы и задания для самопроверки 1. Поясните назначение системной магистрали МЭВМ. 2. Раскройте сущность элементов структурной схемы МЭВМ: АЛБ, БУ, БРР. 3. Назовите отличия ОЗУ от ПЗУ. 4. Дайте пояснения операциям МЭВМ: извлечение - декодирование — выполнение. 5. Поясните составные части команды: операция, операнд. 6. Где размещается программа пользователя в МЭВМ? 7. Поясните следующие понятия: память данных и память команд. 2 ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В МИКРОПРОЦЕССОРНЫХ СРЕДСТВАХ. СИСТЕМЫ СЧИСЛЕНИЯ 2.1 Понятие об информации и формы ее представления В "Энциклопедии кибернетики" термин "вычислительная машина" опре- деляется так: "Вычислительная машина - физическая система (устройство или 9
комплекс устройств), предназначенная для механизации и автоматизации про- цесса алгоритмической обработки информации и вычислений". Информация определяет многие процессы, происходящие в вычисли- тельной машине. В разделе 1 в общей форме процесс решения задачи на МЭВМ показан поэтапно: ввод информации (или установка исходных данных) поме- щение информаций в память (переработка и преобразование информации не предусматривалась); вывод информации. Таким образом, вычислительная машина, в общем случае, получает ин- формацию, запоминает ее, обрабатывает по заданной программе и направляет потребителю (пользователю) или передает в другие системы обработки. Термин "информация" в широком смысле - это отражение реального ми- ра а в узком смысле - это любые сведения, являющиеся объектом хранения, передачи и преобразования. С практической же точки зрения информация все- гда подается в виде представления о событиях, явлениях природы, о состоянии технологических производственных процессов. Сообщение от источника к при- емнику посредством канала передачи поступает в материально-энергетической форме (электрический, световой, звуковой сигнал и т. п.). В этом смысле ин- формационное сообщение можно представить функцией X (t), характеризую- щей изменение во времени материально-энергетических параметров физиче- ской среды, в которой осуществляются информационные процессы. Цифровые ЭВМ используют дискретные сообщения. При этом переход Рисунок 2.1- Преобразование непрерывной функции от непрерывного представле- ния сигнала к дискретному да- ет значительные преимущест- ва при передаче, хранении и обработке информации. Для этих целей широко использу- ются аналого-цифровые пре- образователи, осуществляю- щие квантование сигнала по уровню и по времени. В пер- вом случае значения уровня сигнала заменяются набором дискретных значений с точно- стью ДХ (рис. 2.1), во втором - непрерывный сигнал заменяется последовательностью импульсов длительно- стью То, следующих через интервалы времени Дг. At <, —, 2Fm где Fm - максимальная составляющая частоты в спектре непрерывного сигнала. Совокупность всех выборок образует дискретный или цифровой сигнал. В цифровой технике такой процесс называется кодированием, а совокупность полученных чисел - кодом сигнала. Для записи чисел цифровыми знаками ис- пользуются позиционные системы счисления. 10
2.2 Системы счисления Понятие о системах счисления. В общем случае система счисления представляет собой совокупность приемов и правил для записи чисел цифро- выми знаками (символами). При этом применяемая в практике система счисле- ния должна обеспечивать: запись любого числа в требуемом диапазоне вели- чин; однозначное представление совокупности символов в соответствии с чис- лом, простоту оперирования цифровыми знаками. Все системы представления чисел делят на непозиционные и позицион- ные 114,15J В первом случае количественный эквивалент цифры не зависит от места ее расположения в записи числа. Так, в римской системе счисления, если цифра, имеющая меньший количественный эквивалент, располагается справа от цифры с большим количественным эквивалентом, то их количественные эк- виваленты складываются, если слева то вычитаются. Например, запись XV соответствует числу 15 (X - десять, V - пять), а за- пись IX - числу девять. Непозиционные системы счисления характеризуются очень сложными и громоздкими алгоритмами представления чисел и выполнения арифметических действий и потому в цифровой вычислительной технике применения не нашли. Во втором случае одна и та же цифра принимает различные числовые значения в зависимости от местоположения (разряда) этой цифры в записи чис- ла. Например, в десятичной системе счисления в записи 737 цифра 7 встречает- ся дважды, однако ее количественный эквивалент в обоих разрядах различен: правая цифра 7 обозначает число единиц - семь, а левая - семьсот Любая позиционная система счисления характеризуется основанием. Ос- нование (базис) - число знаков или символов, используемых для представления цифр в данной системе. Возможно бесчисленное множество позиционных сис- тем, так как за основание можно принять любое число, образовав новую систе- му. В вычислительной технике, например, широко используются шестнадцате- ричная система счисления, запись чисел которой производится с помощью цифр и символов (букв). 0,1,..., 9, А, В, С, D, Е, F. Для позиционной системы счисления справедливо равенство (21) где N - произвольное число, записанное в системе счисления с основанием q, а - цифры системы счисления; п, m - число целых и дробных разрядов. Так, например, сокращенной записи числа 737.25 соответствует его зна- чение, вычисленное согласно равенству (2.1): 737 25 =7 • 102 + 3 • 10* + 7 • 10° + 2 -10'1 + 5 • ГО'2 В двоичной системе счисления для представления чисел используются две цифры: 0 и 1. Действуя согласно с (2.1), значение двоичного числа, напри- мер. 11110010. ОНО можно представить в следующем виде: 11110010.0110 = = 1-27+ 1-2б + 1-2S+ 1-24 + 0-23 + 0-22+ 1'21 + 0-20 + 0-2’1 + 1-2'2+ 1-2'3 + О-2'4 11
Очевидно, десятичный эквивалент этого двоичного числа (по правилам десятичной арифметики) будет равен 242. 375. В табл. 2 1 приведены эквиваленты десятичных цифр в некоторых систе- мах счисления. Таблица 2.1 - Эквиваленты десятичных цифр Деся- тичная цифра Эквиваленты В системах счисления Деся- тичная цифра Эквиваленты в системах счисления 4 = 2 д-8 q= 16 д=2 q = 8 Q = 16 0 0 0 0 8 1000 10 8 1 1 1 1 9 1001 11 9 2 10 2 2 10 1010 12 А 3 11 3 3 11 1011 13 В 4 100 4 4 12 1100 14 С 5 101 5 5 13 1101 15 D 6 но 6 6 14 1110 16 Е 7 111 7 7 15 1111 17 F . Для записи одного и того же значения в различных системах счисления требуется разное число позиций или разрядов Чем меньше основание системы, тем больше длина числа (длина разрядной сетки). Если длина разрядной сетки задана, то это ограничивает максимальное по абсолютному значению число, которое можно записать. Пусть длина разрядной сетки равна любому положительному числу, на- пример, числу К. Тогда N<4)max=qk-1. (2.2) Если же задано максимальное абсолютное значение числа, то длина раз- рядной сетки K = l‘>gq (N(g)max = 1) (2. 3) Обычно длина обрабатываемых чисел в ЦВМ ограничена значениями: 1 байт (8 разрядов), 2 байта (16 разрядов), а также 4 и 8 байт. Преобразования чисел с различными основаниями. Для перевода це- лых чисел или целых частей неправильных дробей из системы счисления с ос- нованием qt в новую систему счисления с основанием q2 используется метод, базирующийся на делении переводимого числа на основание новой системы счисления. В соответствии с (2.1) целое число в системе с основанием q2 записывается в виде: Мфг)= Ъп-1 q2n 1 + b„.2 q22 + ...+bj qj +boq2°- (2. 4) Представляя (2.4) по схеме Горнера, получим: М?2) =(—(((Ьп,1 q2+b„.2)q2 + Ьп.3) q2...+bi) q2 + b0). (2. 5) 12
Запись числа N(q2) в виде (2.5) раскрывает сущность используемого мето- да. Действительно, если разделить правую часть (2.5) на величину основания q2, то получим целую часть (...( bn.3 q2 + b„.2 )q2 +... bj) и остаток b0. Разделив целую часть на q2, найдем второй остаток bt Повторяя процесс деления и раз, находим последнее частное Ь„.2_ которое в соответствии с (2.5) является старшей цифрой п разрядного числа, представ- ленного в системе с основанием q2 Перевод чисел арифметическими действия- ми должен производиться по правилу системы счисления с основанием q2 Пример 2.1. Перевести десятичное число ЛМ34 в двоичную систему счисления (д2 =2). Ход решения приведен в табл. 2. 2. Таблица 2.2- Перевод десятичного числа Шаги Операция деления Частное Остаток (цифра) Разряд Примечание 1 134:2 67 0 ь0 Младший разряд 2 67:2 33 1 ь2 3 33:2 16 1 Ь2 4 16:2 8 0 Ь3 5 8:2 4 0 ь, 6 4:2 2 0 bs 7 2:2 1 0 Ьб 8 1:2 0 1 Ь7 Старший разряд Ответ: N=b7b6b5 b4 b3 b2 bt b0 = 100001102. При переводе правильных дробей из системы счисления с основанием q2 в систему счисления с основанием q2 используется метод, базирующийся на умножении переводимой правильной дроби на основание q2 новой системы счисления. Правильную дробь N(qt) в системе с основанием q2 можно предста- вить следующим выражением: M<7z) = b.j q2' + b.2 q2“ + ...+ b ,m q2 (2.6) По схеме Горнера (2.6) можно представить в виде: N(q^=q2I (b-1 + q2} (b.2 + ...+ q2I(b^m.l) +q2~'b (2.7) Если правую часть выражения (2.7) умножить на q2, то можно найти не- правильную дробь, в целой части которой будет число Ь.2 Оставшуюся дроб- ную часть следует далее умножить вновь на q2. В полученной дроби целая часть представит собой Ь.2 и т.д. Таким образом, т - кратное умножение по- зволяет найти все т цифр дробной части числа в новой системе счисления. Все действия выполняются по правилам ^/-арифметики. В результате описанных 13
операций в целой части получающихся дробей будут подучены эквиваленты цифр в новой системе счисления. Пример 2.2. Привести десятичную дробь N =0.34375 в двоичную систему счисления (q=2). Операции перевода приведены в табл; 2.3. Таблица 2.3 - Перевод дробного числа Шаги Операция умножения Произве- дение Целая часть (цифра) Разряд Примечание 1 2*0.34375 0.6875 0 ъ.2 Старший разряд 2 2*0.6875 1.375 1 Ь-2 3 2*0.375 0.75 0 Ь-з 4 ' 2*0.75 1.5 1 5 2*0.5 1.0 1 Ъ-5 Младший разряд Ответ: N(2) =0- b.j b.2 b,3 b^ b.s =0. 01011. Переводя правильные дроби из одной системы счисления в другую, мож- но получить дробь в виде бесконечного или расходящегося ряда. В этом случае рекомендуется процесс перевода заканчивать, если появится дробная часть, имеющая во всех разделах нули, или будет достигнута заданная точность пере- вода (получено требуемое число разрядов результата). Естественно, что при этом возникает погрешность перевода чисел. В ЭВМ точность перевода обычно ограничивается длиной разрядной сетки, отве- денной для представления чисел. Для удобства преобразования двоичных чисел в десятичные приведем значения веса некоторых разрядов (позиций) двоичной системы счисления в пределах bis... (см. табл. 2.4). Таблица 2.4 - Веса разрядов двоичного числа 2 5 214 2 4 21J 2ю 29 2* 27 —2? 32768 16384 8192 4096 2048 1024 512 256 128 64 32 24 24 24 21 2° 2' Г2" 2'3 г-4 2'5 16 8 4 2 1 0.5 0.25 0.125 0.0625 0.03125 0.015625 Пример 2. 3. Перевести двоичное число N(2j =1101. 0101 в десятичное Как и ранее, ход решения отобразим с помощью табл. 2. 5. 14
Таблица 2.5 - Перевод дробного числа Шаги Двоичное число (код) Вес двоично- го разряда Промежуточные значения 1 1 е- 1 л 1 1 2^ 0.0625 2 Й . аш.. ..••• ЩМЙЖ 3 2'2 1*0^5=0,25 4 it 5 1.0. -ч Х*1Я=и. 6- * \ '2.GZv * Й*210=0....' .. 7 4.0 1*4.0=4.0 8 ж? >. Г8Ю Ъ •J *8:0=83» - . . S00)=13. 3125 Ответ: десятичный эквивалент равен сумме промежуточных значений Nt0=13. 3125. В информатике и вычислительной технике разработано множество дру- гих методов перевода чисел из одной системы счисления в другую, позволяю- щих получить результат с меньшими затратами времени на преобразования. Шестнадцатеричные числа. Шестнадцатеричная система счисления (П-код происходит от hexadecimal), система с основанием 16 использует симво- лы от 0 до F (см. табл. 2.1). Такая форма числа удобна для записи, запоминания и ввода с клавиатуры. Компактность достигается путем разделения бит двоич- ного числа на тетрады (4 бит) и тогда число комбинаций составит 2=16. Пример 2.4. Представить двоичное число =110010111010 шестнадца- теричным Nt6 или NH, где Н указывает на принадлежность системы счисления к шестнадцатеричной. Решение: надо начать с младшего бита (МБ) и разделить двоичное число на группы из четырех бит. Затем эти группы заменить эквивалентной шестна- дцатеричной цифрой. Первая группа 1010=А, вторая - 1011=В, третья - 100=С, следовательно, результат: 1010 1011 1100 =СВА1б или в Н-коде СВАН. Поскольку обратные преобразования в рассмотренном примере не встре- чают затруднения, то рассмотрим преобразования чисел из D-кода (десятично- го) в Н-код и обратно. Пример 2.5. Преобразовать десятичное дробное число в Н-код. Решение представим в двух частях: отдельно для целой части и для дробной. В первом случае воспользуемся методикой, заложенной в табл. 2.2, про- делаем для N =634. 328125 следующие несложные процедуры (рис. 2.2). 15
Шаг 1.634: 16 = 39, остаток мл. разряд Юм = А16" Шаг 2. 39: 16 = 2, Шаг 3.2 : 16, остаток остаток 710-716 ст. разряд 2ю = 216 ~ 634ю = 2 7 А16 Рисунок 2.2 - Десятично-шестпадцатеричное преобразование целой части числа Для преобразования дробной части воспользуемся схемой операций, при- веденных в табл. 2 3. А именно, поэтапно (рис. 2.3): Шаг 1. 16-0. 328125 = 5.25 целая часть "5" ст. разряд- Шаг 2. 16-0.25= 4. 0 целая часть "4" мл. разряд--“| 0,328125= 0.5 4 Рисунок 2.3 - Десятично-шестнадцатеричный перевод дробной части числа Пример 2.6 На этом примере рассмотрим обратное преобразование ше- стнадцатеричного числа в десятичное: N16 —5СВА. 27. Целая часть числа в табл.2.6 получила свой десятичный эквивалент в видеА10 =23 738. Таблица 2 6 - Преобразование шестнадцатеричного числа в десятичное Степень позиции 163 162 16’ 16° Результат Значение позиции 4096 256 16 1 Н-код D-код 5 4096 * 5 20480 + С 256 * 12 3072 + В 16 * 11 176 + А 1 * 10 10 = 23 73816 Несколько упростив запись по сравнению с табл. 2.6, дробную часть Н- кода можно вычислить по следующей схеме, помня, что 16=0.0625, а 16=0. 0039: 16
Н-код 0. Вес позиций 2 7 161 16’2->7-0,0'039 = 0. 0273 I-------->2-0,0625 =0 1250 сумма дробной части =0.1523ю Тогда результат определяемого преобразования равен 5CBA.27H=23738 1523D В отношении восьмеричных чисел ограничимся лишь замечанием, что они как и шестнадцатеричные, используются для представления двоичных чи- сел в системе с основанием 8=23 (группа из трех бит). Методика прямых и об- ратных преобразований остается аналогичной, например, шестнадцатеричной системе. Преобразование восьмеричных в шестнадцатеричные числа производится через двоичную систем}' счисления. Двоично-десятичные числа. С целью удобства преобразования чистые двоичные числа представляются десятичными либо шестнадцатеричными. Хотя двоично-десятичное преобразование является не простой операцией, в кальку- ляторах и числовых приборах используют специальный двоично-десятичный код (DDK), когда на доступных пользователю выходах и входах используются десятичные числа. При использовании двоичных чисел для кодирования деся- тичных данных необходимо иметь возможность представлять цифры от О до 9, т е для изображения’цифры 9 предельно требуется 4 бит для группы 10012- Од- нако все 4-разрядныс двоичные числа, превышающие 10012, недопустимы в DDK. Чтобы освободить пользователя от подобных преобразований, в систем- ной программе ЭВМ предусматривается специальная команда "Десятичная коррекция", обеспечивающая переполнение 4-разрядного регистра при 2VJ(j=10 путем добавления числа 01102 (+6ю). Пример 2.7. Произвести операции преобразования десятичного числа (D- кода) в DDK, а затем записать десятичный эквивалент (обратная задача) Решение. Пусть имеем дело с десятичным числом 3579ю- Каждая цифра числа преобразуется прямо в свой двоично-десятичный эквивалент из 4 бит, в результате получаем: Десятичное число 3 5 7 9 Двоично-десятичное число ООН 0101 0111 1001 Ответ: 357910 =0011 0101 0111 1ОО1(2.1Ж3. Решим обратную задачу для DDK в виде: 1000 0010 0110 0000. Решение. Каждая труппа из 4 бит прямо переводится в ее десятичный эк- вивалент: DDK 1000 0010 0110 0000 D-код 8 2 6 0 Ответ: 1000 0010 0110 0000(2.10к) =82601). 17 Б1БЛ1ОТЕКА ХНУРЕ IHB. №-------------
Mil складывает чистые двоичные числа, <но, как отмечалось выше, они имеют команды для преобразования результата своих сложений в двоично- десятичную форму. Полученный DDK легко затем представляется в дес жгичной форме, используя вышеописанные простые процедуры. — - - 2.3 Вопросы и задания для самопроверки 1. Поясните принцип представления информации в аналоговой и дис- кретной формах. Приведите примеры их источников.' 2. Поясните различие между позиционными и непозиционными система- ми счисления. Что пбйиййется под термином "Основание" позиционной систе- мы при записи цифровых чисел? 3. Преобразуйте в двоичные числа следующие десятичные числа: 128; 255; 29; 75; 16.015625; 10.5; 12. 4. Преобразуйте десятичные числа в эквивалентные восьмеричные и ше- стнадцатеричные чиста. 27=256.5725; ЛЛ-176 5 5. Преобразуйте в десятичные числа с различными системами счисления: N2 =01101101; Ns =1172.258; N16 =27А 54; N16 =9.4. 6. Преобразовать TV# =1730 в Н-код, по которому определить Л%- 7. Записать следующие двоично-десятичные числа в десятичном коде: а) 1001 0101; 6)0101 ООП; в) 0100 0010; г) 0110 0110: 3 ДВОИЧНАЯ АРИФМЕТИКА Двоичная арифметика, или действия над двоичными числами, использует следующие правила, заданные таблицами сложения, вычитания и умножения: Сложение Вычитание Умножение 0+0 = 0 0-0=0 0-0 = 0 0 +Д = 1 t 1 -0=4 0 1=0 1*0=1 1 -1 = 0 ' 1-0==0 1 + 1 =Ю "" 10-1=1 1-1=1 i .-... перенос заем В старшем в старший разряд • разряде ‘ — - 3.1 Двоичное сложение и вычитание Сложение двоичных чисел подобно сложению десятичных. В обоих слу- чаях операции начинаются с обработки наименьших значащих цифр, располо- женных в крайней справа позиции Если результат сложения наименьших зна- чащих цифр двух слагаемых не помещайся в соогв-лствующем разряде ре- зультата, то происходит перенос. Цифра, переносимая в соседний слева разряд, Добавляется к содержимому последнего. 18
Сложение цифр любых одноименных разрядов может повлечь за собой перенос в более старший разряд. Перенос возникает, если результат сложения цифр одноименных разрядов больше 9 при использовании десятичной арифме- тики,- и более 1 в случае двоичной системы счисления. Сходство операций десятичного и двоичного сложения покажем на при- мере, ход решения которого представлен на рис. 3.1. Десятичная арифметика Двоичная арифметика 11еренос (единицы) 11 1111111 Слагаемое (первое) 099 01100011 + + Слагаемое (второе) 095 01011111 Сумма 19410 110000102 Рисунок 3.1- Двоичное сложение Для того, чтобы убедиться в правильности результата, можно либо пере- вести число 194 из десятичной системы в двоичную, либо байт числа 11000010 представить в развернутом виде и сравнить результаты: 194ю = 110000102,11000010 = 1-27 +1-26+0-25 +0-2л+0-23-Ю-22 + -ы-г’+о-г^^Дю. Рассмотренный пример свидетельствует о простоте процедуры двоичного сложения. Единственное неудобство - громоздкость записи больших чисел в двоичной форме, что вызывает множество переносов из одного разряда в дру- гой. В примере использованы 8-разрядные двоичные числа, так как большинст- во МП оперирует 8-разрядными словами. Хотя для представления слагаемых можно ограничиться меньшим количеством разрядов, по указанным выше при- чинам в примере двоичные числа в старших разрядах имеют нули (незнача- щие). Двоичное вычитание, как и в случае сложения, отличается от десятичного лишь особенностями поразрядных операций. Если содержимое разряда умень- шаемого меньше содержимого одноименного разряда вычитаемого, то осуще- ствляется заем единицы из соседнего старшего разряда Это происходит в том случае, когда из нуля вычитается единица. Благодаря займу в одноименном разряде результата получается единица, так как вес займа равен 2. Пример дво- ичного и десятичного вычитания, когда уменьшаемое больше вычитаемого, по- казан на рис. 3.2. В ЭВМ операцию арифметического вычитания заменяют операцией ал- гебраического сложения, которая и является основной операцией двоичного сумматора 19
Заем (единицы) Уменьшаемое Вычитаемое Разность Десятичная арифмётйка F • ' 109 049 060] о Двоичная арифметика 11 01101101 00110001 001111002 Рисунок 3.2 - Двоичное вычитание 3.2 Двоичные числа в дополнительном коде Информация в ЭВМ обычно обрабатывается в двоичном коде. Однако ес- ли необходимо использовать числа со знаком, используется специальный до- полнительный код, что упрощает аппаратные средства ЭВМ. В связи с этим возникает вопрос, каким способом можно записать отрицательные двоичные числа? Существует несколько способов представления отрицательных двоичных чисет Большинство йз них не соответствуют возможностям аппаратной основы АЛУ. Однако анализ этих способов и требований, "вязанных с работой элек- трических схем, привел к разработке приемлемых решений Одно из них из- вестно как представление числа посредством величины и знака, причем бит знака занимает самый старший разряд поля представления двоичного числа. Для положительного числа бит знака равен 0, а для отрицательного - 1. Напри- мер, число +87ю имеет двоичный эквивалент (с учетом знака) в виде 010101112, а-87,о- 110101112. Бит знака используется и при записи двоичных чисел в обратном коде (в виде так называемого дополнения до 1). Обратный код двоичного отрицатель- ного числа формируется заменой всех нулей числа на единицы, а всех единиц - на нули. Поскольку старший разряд не занят битами величины числа, то в ис- ходном состоянии там 0 Пойте формирования обратного кода этот 0 заменяет- ся 1, выполняющей роль кода знака. Правило получения обратного кода простое, но работа с этими кодами может приводить к неоднозначности нулевого результата. Связано это с тем, что нулевой результат может быть представлен комбинацией или двоичных ну- лей, или двоичных единиц,- ' - ч Приведем пример записи отрицательного числа в обратном коде:’деся- тичному числу -87,о соответствует двоичная запись 10101000 обр. (сравните с двоичным числом 01010111, являющимся эквивалентом десятичного числа +8710). В микроЭВМ широко используется представление отрицательных чисел в дополнительном коде (в виде так называемого дополнения до 2). При таком представлении исчезает двусмысленность представления нулевого результата, 20
присущая записи в обратном коде. Дополнительный код формируется путем добавления 1 к обратному кеду двоичного числа. Это позволяет, например, посредством 8 бит представить в двоичпой форме десятичные числа от -128 до +127, включая 0. Рассмотрим порядок действий при работе с дополнительным кодом. Пример 3.1. Вычислить разность чисел 58t0 - 231О в двоичной системе счисления: 1) определение дополнительного кода числа 23ю ООО 10111 - двоичный эквивалент числа 231 о; 11101000 - обратный код числа; + 00000001 - единица, которая добавляется к обратному коду; 11101001 - дополнительный код. 2) вычисление разности путем алгебраического сложения 00111010 - двоичный эквивалент числа 58ю, + 11101001 - дополнительный код числа 23, 1. 00100011 - разность (58-23) = + 35. ’’►единица переноса, отбрасываемая в случае положительного результата. Пример 3.2 Вычислить разность чисел 23ю - 58jо: 1) определение дополнительного кода числа 58ю 00111010 - прямая запись числа 58ю, 11000101 - обратный код числа; + 00000001 - единица; 11000110 - дополнительный код. 2) вычисление разности 00010111 - прямая запись числа 23ю; + 11000110 - дополнительный код числа 58]0, 11011101 - разность (23-58) = - 35 в дополнительном коде, так как в старшем разряде имеется единица. 3) определение абсолютного значения разности 11011101 - дополнительный код разности; 00100010 - обратный код; + 00000001 - единица; 00100011 - абсолютное значение разности (35)О). 21
При решении задач в двоичной системе счисления рекомендуется полу- ченные результаты проверять (сличать) с помощью десятичной арифметики. 3.3 Вопросы и задания для самопроверки 1. В какой ферме возможны представления отрицательных двоичных чи- сел? 2. Чему равен диапазон чисел двойной точности 16-разрядного МП при использовании дополнительных кодов? 3. Преобразовать десятичные числа Хю в 8-разрядные числа в дополни- тельном кодеХгда: 64; -56; 12; 0; -128; +127, -4; 256; -100. 4. Определить десятичный эквивалент Х10 по значению Хгдк: 11111011; 00001111; 10001111; 01110111. 5. Сложить приведенные ниже двоичные числа: 0000 0101 + ; 0001 0001 1000 1001 01010101 101 1001 + j + j + " + *. 0000 1111 1010 1010 on on 6.11роизвести операцию вычитания двоичных чисел: 1001 11110001 10010011 10011001 НИ 1001 Ilf 0000 0011 0101 1101 1111 0000 1001 0001 7. Найти десятичные эквиваленты результатов сложения и вычитания по п. 3.5. и п. 3.6. соответственно. 4 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВСТРОЕННЫХ СИСТЕМ УПРАВЛЕНИЯ НА БАЗЕ ОДНОКРИСТАЛЬНЫХ МП 4.1. Программная модель МП с регистр-аккумуляторной архитектурой Выполнение определенной функции с помощью микропроцессорного устройства (МПУ) требует изучения особенностей архитектурной организации применяемого МП. Составной частью архитектуры является система команд, т е. полный набор инструкций, предписывающих МП выполнять на каждом ша- ге программы элементарные операции. Зная программно-доступные ресурсы МП и принципы перемещения данных, можно с помощью набора команд за- программировать любую сложную операцию. Программная модель МПС [13], построенной на базе однокристального 8-разрядного МП состоит из программно доступных регистров, восьмиразряд- ных ячеек ОЗУ и восьмиразрядных портов ввода/вывода. Разряды регистров нумеруются справа налево целыми числами начиная с нуля. Программно- доступными регистрами такого МП являются регистры специальных функций (РСФ) и регистры общего назначения (РОН). К регистрам специальных функ- 22
пий относятся: аккумулятор (А), регистр признаков (F), регистр указателя стека (SP), регистр счетчика команд (PC). Регистр А предназначен для временного хранения одного из операндов, участвующих в арифметических или логических операциях, и полученного ре- л’ЛЬ'гата после ее выполнения. Кроме того, А используется для программно управляемого обмена с внешними устройствами через порты ввода/вывода. Регистр признаков (F) - это восьмиразрядный регистр, содержащий при- знаки результата выполнения команд (рис.4 1). 7 6 5 4 3 210 F | S | Z | 0 j АС | 0 | Р | 1 | CY | Рисунок 4.1 - Формат регистра признаков 8-разрядного МП Для большинства команд признаки устанавливаются следующим образом: признак S — единица, если седьмой разряд результата равен единице, в противном случае - нуль; , - признак нуля Z - единица, если во всех разрядах результата нули, в противном случае - нуль; - признак дополнительного переноса АС - единица при переносе из третьего разряда или при займе в третий разряд результата, в противном случае - нуль: - признак четности Р - единица, если результат в двоичном коде содер- жит четное количество единиц, в противном случае - нуль; - признак переноса CY - единица при переносе из седьмого разряда или при яшме в седьмой разряд результата, в противном случае - нуль. Регистр указатель стека (SP) - это шестнадцатиразрядный регистр, кото- рый содержит адрес вершины стека. Стек - это динамическая последовательная структура данных в ОЗУ, организованная таким образом, что очередная запись данных всегда осуществляется в вершину (начало) стека [14]. Максимальный размер стека равен адресуемой емкости памяти. В вершину стека могут запи- сываться только шестнадцатибитные данные. При записи данных в стек содержимое регистра указателя уменьшается на 2, а при считывании - увеличивается на 2. Регистр счетчика команд (PC) - это шестнадцатиразрядный регистр, ука- зывающий адрес следующей команды, которая должна быть выполнена микро- процессором. Регистры общего назначения, как правило, обозначаются буквами В, С, D, Е, Н, L, А. Регистры В и С, D и Е. Н и I. в некоторых командах рассматрива- ются как шестнадцатиразрядные регистры, называемые регистровыми парами. Регистры В, D, и Н образуют старшие восемь разрядов регистровых пар, а реги- стры С. Е, и L - младшие. Программно-доступные восьмиразрядные ячейки ОЗУ используются в качестве памяти МПС. Разряды ячейки ОЗУ нумеруются справа налево целыми 23
числами, начиная с нуля. Максимальная емкость памяти, реализуемой запоми- нающим устройством, равна 65 536 байт. Программно-доступные восьмиразрядные порты используются для ввода и вывода. Максимальное число регистров для ввода данных составляет 256, для вывода данных - столько же. Программная модель 16-разрядного МП отличается увеличением как ко- личества программно-доступных регистров, так и их разрядностью [16]. По своему назначению они разделяются на три группы. 1. Регистры общего назначения АХ, ВХ, СХ, DX используются для хра- нения промежуточных результатов и могут без ограничения участвовать в вы- полнении арифметических и логических операций. При выполнении операций над цепочками байтов и слов этим регистрам предписываются специальные функции 2. Указательные и индексные регистры (SP, BP, SI, DI) предназначены для хранения 16-разрядных адресов (внутрисегментных смещений) и обеспечи- вают при этом косвенную адресацию и динамическое вычисление эффективно- го адреса памяти 3. Сегментные регистры (CS, DS, SS, ES) хранят начальные адреса че- тырех сегментов памяти, используемых в текущей программе: команд, стека, и двух сегментов данных. Имеется программно доступный регистр признаков (флаговый) (рис.4.2), младший байт которого FL полностью соответствует регистру флагов рассмот- ренного выше МП и называются арифметическими флагами, а старший байт FH содержит четыре дополнительных флага (TF, IF, DF, OF), три первых из ко- торых относятся к флагам управления МП. 15 14 13 12 11 10 9_____8 7 6 5 4 3 2 1____0 X 1 X 1 X | X 1 OF 1 DF 1 IF | TF SF | ZF | X | AF | X | PF | X | CF - -EE J EL J Рисунок 4.2 - Формат регистра признаков 16-разрадногоМП TF - флаг трассировки (прослеживания). При TF=1 МП переходит в по- командный (пошаговый) режим работы, применяемый при отладке программ, когда автоматически генерируется сигнал внутреннего прерывания после вы- полнения каждой команды. При этом выполняется переход на соответствую- щую подпрограмму, которая обычно обеспечивает индикацию содержимого внутренних регистров МП. IF - флаг разрешения прерываний, управляемый с помощью команды CLI и STI: при П =1 МП воспринимает и реагирует на запрос прерывания по входу INTR; при IF=0 прерывания по этому входу запрещаются (маскируются) и МП игнорирует поступающие запросы прерываний. DF - флаг направления, управляемый командами CLD и STD, определяет порядок обработки цепочек в соответствующих командах (при DF=0 от мень- ших адресов к большим и наоборот при DF=1). 24
OF - флаг переполнения, сигнализирующий о потере старшего бига ре- зультата сложения или вычитания в связи с переполнением разрядной сетки при работе со знаковыми числами. При выполнении команд операнды могут храниться в программно- доступных регистрах микропроцессора или в памяти МПС. Для указания опе- ранда в регистре используется: регистровая адресация и регистровая неявная адресация. ПРИМЕР: MOV А, в ADC В СМА Для указания операнда в памяти используются адресации: непосредст- венная. прямая, косвенно-регистровая и стековая. ПРИМЕР: LDA 8324Н ;прямая IN FA ;прямая ADC M ;косвенно-регистровая PUSH PSW .стековая Таким образом, для большинства МП наиболее общими являются пять способов адресации операндов. В 16-разряд ном МП и выше допускаются до- полнительные способы адресации, такие как базовая, индексная, базовая ин- дексная, относигельная, страничная и др. Выбор того или иного определяется минимальным объемом памяти для хранения программ и наименьшее время их исполнения. Для каждого МП имеется свой список команд. По функциональному на- значению, как правило, они делятся на группы: команды пересылки данных, арифметические команды, команды логических операций, команды передачи управления, команды управления микропроцессором. Группа команд пересылки данных: - команды пересылки данных общего назначения (MOV, MVI, LDA, STA, LHLD, SHLD, LXI, LDAX, SPHL, STAX, XCHG, XTHL); - команды обращения к стеку (PUSH и POP); - команды ввода (IN) и вывода (OUT). Группа арифметических команд: - команды сложения (ADD, ADI, ADC, ACI, INR, INX, DAD); - команды вычитания (SUB, SUI, SBB, SBI, DCR, DCX); - команды умножения (MUL); - команды деления (DIV); - команда десятичной коррекции содержимого аккумулятора (DAA). Группа команд логических операций: - логические команды (ANA, AN1, ORA, ORI, XRA, XRI); - команды сравнения (CMP, CPI); - команды сдвига (RLC, RRC, RAL, RAR); - команды инверсии содержимого аккумулятора (СМА) 25
Группа команд передачи управления: - команды безусловного перехода (JMP); - команды условного перехода (JNC, JC, JNZ, JZ, JPO, JPE, JP, JM); - команды безусловного вызова подпрограмм (CALL, RST); - команды условного вызова подпрограмм (CNZ, CZ, CNC, СС, СРО, СРЕ); - команда безусловного возврата из подпрограммы (RET); - команда условного возврата из подпрограмм (RNZ, RZ, RNC, RC, RC, RPO, RPE, RP, RM). Группа команд управления микропроцессором: - команды управления признаком переноса (CMC, STC, CLC), - команды флагами (El, DI, СП, STI); - команда "нет операции" (NOP); — команда останова микропроцессора (HLT). Число базовых команд МП составляет несколько десятков, а с учетом их модификаций достигает нескольких сотен. Время выполнения команды, оцениваемое числом тактов МП. Зная час- тоту генератора тактовых импульсов (Ргти), можно определить длительность одного такта; Т (мкс) =1/Ргти (МГн), а значит и время выполнения команды, что имеет существенное значение при программной генерации временных интерва- лов. Для подавляющего числа команд время выполнения команды (число так- тов) есть величина постоянная, однако существуют команды, для которых это время может меняться. Такими командами являются команды условного вызова и возврата из подпрограмм. Время выполнения команды зависит от того, вы- полняется условие или нет. Как правило, если условие выполняется, время вы- полнения команды существенно увеличивается. 4.2 Язык проектирования МПС, встроенной в ЭА Для системы, содержащей МП, требуется проектирование как аппарат- ных, так и программных средств [1]. Проектирование аппаратной части может быть выполнено с использованием стандартной методологий проектирования аппаратуры. I {роекгирование программного обеспечения лучше всего может быть вы- полнено с использованием языка проектирования, подобного естественному языку. Программное обеспечение строится путем преобразования конструкций языка проектирования в язык программирования микрокомпьютера (МКП). Оно тестируется и одновременно с аппаратурой объединяется в единое целое. Схемы языка проектирования можно рассмотреть с помощью простого примера. Пусть имеем систему из микрокомпьютера с двумя выходами (рис.4.3), которая должна реализовывать функцию преобразования, представ- ленную на рис.4.4. 26
Рисунок 4.3 - Структурная схема микрокомпьютерной системы Из наличия у системы входов и выходов можно сделать заключение о том, что микрокомпьютер должен иметь возможность проверять значение каж- дого входа, а также устанавливать каждый из выходов в определенные значе- ния. На языке проектирования в операциях проверки и установки используют- ся простые конструкции. Проверить Вх. 1 и запомнить его значение. Установить значение Вых.1, равное 6. Необходимо также иметь возможность проверять условия, которым удовлетворяют хранимые значения каждого из входов для установки выходных значений. С этой целью используется условная конструкция, которая в общем виде может быть представлена как: ЕСЛИ (условия проверки - истина). ТО (выполнить что-либо). ИНАЧЕ (выполнить что-либо другое). Таким образом, для данного примера описание на языке проектирования вначале будет иметь вид: 1. Проверить Вх1 и хранить его значения. 2. Проверить Вх2 и хранить его значения. 3. Если 4 < Вх1 < 8, установить Вых1 = 6. 4. Иначе Вых1 установить = 0. 5. Если 2 < Вх2 < 6, установить Вых2 = 4. 6. Иначе Вых2 установить = 0. 27
Когда система функционирует, микрокомпьютер выполняет запрограм- мированные операции шаг за шагом. После того, как входы проверены, нет уверенности, что затем при повторной проверке один из них не окажется изме- ненным. Поэтому необходима такая операция, которая позволяла бы выполнять другие операции языка проектирования бесконечное число раз. Для этой цели используется конструкция: «ВЫПОЛНЯТЬ НЕПРЕРЫВНО».......................«КОНЕЦ» В этой конструкции набор операций, расположенный между ВЫПОЛ- НЯТЬ HEI1РЕРЫВНО и КОНЕЦ, должен повториться без конца. В этом случае, однажды начавшись, операция проверки значении входов будет повторяться столько времени, сколько система остается в действии. Из вышеприведенного примера можно сделать следующие вывода: - микрокомпьютер является последовательным устройством и в каждый момент времени выполняет только одну операцию; - во многих случаях, чтобы изменить функциональное поведение мик- рокомпьютерной системы, необходимо изменить лишь некоторые операции в описании программы на языке проектирования; - МКП манипулирует только цифровыми данными. Если в системе имеются аналоговые сигналы, для преобразования входных сигналов в цифро- вую форму необходим АЦП, а для преобразования выходных сигналов в анало- говую форму - ЦАП. 4.3 Составление схем алгоритмов Реализация любой функции с помощью микрокомпьютера всегда требует проектирования необходимой последовательности действий, получившей на- звание алгоритма. Наиболее удобная и наглядная форма представления алго- ритма решения задачи - графическая, в виде схемы [12]. Она состоит из упоря- доченной совокупности условных геометрических фигур, несущих информа- цию об определенном характере операций, накладываемом условии, принятых обозначениях. Основные формы, которые согласно действующим стандартам представлены в приложении А. Рассмотрим в качестве примера задачу формирования двух наборов це- лых чисел, лежащих в диапазоне от -5 до +5. Путем сортировки организуется два набора, один из которых включает в себя положительные числа, а другой - отрицательные. Схема алгоритма решения этой задачи показана на рис. 4.5. 28
( Начало^ Рисунок 4.5 - Схема алгоритма с ветвлением 4.4 Подпрограммы Подпрограмма - это часть программы, используемая обычно несколько раз в процессе выполнения программы. Однако текст подпрограммы записыва- ется программистом только один раз. Когда же программисту необходимо вос- пользоваться подприраммой, достаточно указать в программе соответствую- щую команду вызова (обращения к подпрограмме), адресующуюся к области памяти, в которой расположена подпрограмма. С этой целью в языке програм- мирования для большинства МП существует команда CALL (вызвать). В этой команде после кода операции (CALL) указывается имя подпрограммы, которое присвоено физическому адресу в области памяти, где расположена данная под- программа Кроме того, по команде выполняются действия, необходимые для воз- вращения к основной программе после выполнения подпрограммы: а) в счетчике команд фиксируется адрес команды в основной программе, которая следует за командой вызова; б) содержимое счетчика команд (адрес возврата) загружается в стек, со- держимое указателя стека модифицируется; в) в счетчик команд загружается адрес, задаваемый командой вызова. По- сле этого может начаться исполнение подпрограммы. Последней выполняемой командой подпрограммы является команда RET (return - возврат). По этой команде выполняется возврат к основной программе, прерванной командой вызова. Команда возврата содержит только код опера- ции. По этой команде происходит следующее: а) счетчик команд получает из стека адрес команды в основной программе, следующей за командой вызова; б) содержимое указателя стека соответственно модифицируется. Основное достоинство подпрограмм заключается в том, что благодаря возможности их многократного использования, сокращается текст программы в целом. Вместо того, чтобы по мере необходимости повторять запись одного и того же фрагмента программы, достаточно оформить запись фрагмента как 29
подпрограмму и обращаться к ней столько раз. сколько требуется в соответст- вии с алгоритмом решения задачи. Из одной программы можно производить обращение к нескольким под- программам Одна подпрограмма может обращаться к другой. Такое построение под- программ называется ВЛОЖЕНИЕМ. Глубина допустимого уровня вложения подпрограмм зависит от типа вы- числительной машины и используемого языка программирования. Большинст- во современных МП и языков программирования допускает многоуровневое вложение. Как следует из вышеизложенного, использование подпрограмм - не слишком обременительная работа для программиста. 4.5 Программирование в машинных кодах Реализация требуемого алгоритма вычисления достигается путем подго- товки, отладки и записи в ПЗУ соответствующей программы. МП способен воспринимать лишь программы, состоящие из последовательности команд, представленных двоичными кодами. Программирование непосредственно в машинных кодах требует постоянного оперирования многоразрядными двоич- ными числами, представляющими как коды команд, так и коды операндов. В качестве примера линейной программы в машинных двоичных кодах рассмотрим программу' сложения двух чисел, одно из которых 01100100 нахо- дится в регистре общего назначения (РОН) В, а второе - 00010111 расположено в ячейке памяти с адресом 0000 0000 1000 1111. Напомним, что рассматривае- мый МП имеет шестнадцатиразрядную шину адреса. Фрагмент программы приведен в табл. 4.1. Таблица 4.1 - Программа Таблица 4 2- Программа сложения в машинных кодах сложения в шестнадцатеричных Адрес памяти Мнемокод 0000 0000 0000 0100 01111000 0000 0000 0000 0101 00100001 0000 0000 0000 0110 10001111 0000 0000 0000 0111 00000000 0000 0000 0000 1000 10000110 0000 0000 0000 1001 01110110 0000 0000 0000 0100 00010111 кодах Мнемокод Адрес Н - код Vt MOVAJ3 0004 78 5 LXIH 0005 0006 21 8F 16 0007 00 ADDM 0008 86 7 HLT 0009 76 7 008F 17 Первая команда - пересылка содержимого регистра В в аккумулятор - является однобайтовой, имеет код операции. Код операции расположен в ПЗУ по адресу 0000 0000 0000 0100, который для данной программы является на- чальным. 30
Следующая команда - трехбайтовая, имеет код операции 00100001, пред- ставляющий первый байт команды. Второй и третий байты, расположенные в очередных ячейках ПЗУ, содержат соответственно младшую и старшую части адреса 1000 1111 0000 0000, передаваемые по этой команде в регистровую пару Ник Микропроцессор при выполнении программы последовательно обраща- ется к ячейкам памяти и выполняет поочередно все команды. Напомним, что коды операций и операнды хранятся в памяти в одинаковом виде и их различе- ние осуществляется микропрограммами выполнения команд, заложенными в МП. Последняя команда имеет код 01110110 и является командой останова (HLT). В результате выполнения программы в аккумуляторе окажется записан- ным число 01111011 Даже рассмотрение такой простейшей программы показывает, насколько неудобным и недостаточно наглядным является представление чисел в машин- ных двоичных кодах. Поэтому принято запись машинных кодов производить в шестнадцатеричной системе. В табл. 4.2 приведен фрагмент той же самой программы, записанной в шестнадцатеричных кодах. Рядом с кодом операции показаны его мнемониче- ское изображение и наименования операндов, принятые в системе команд дан- ного МП Например, шестнадцатеричный код команды 78, имеющей мнемони- ческое обозначение MOV А,В, соответствует операции пересылки содержимого регистра В в аккумулятор А. В табл. 4.2 также указано число тактов Vt, необхо- димое для выполнения каждой команды. Для выполнения всей программы тре- буется 35 машинных тактов. Практически удобнее программировать непосредственно в мнемокодах, а затем представлять шестнадцатеричные коды адресов и операндов, получаю- щиеся после распределения памяти. 4.6 Программирование в мнемокодах Наиболее удобным методом написания программ является использование мнемонических кодов, состоящих из аббревиатуры полного названия инструк- ции. В этом случае .мнемокод отражает содержательный смысл выполняемой операции. Пример 4.1. Организация счетчиков циклов. Схема алгоритма счета пока- зана на рис. 4.6, а фрагмент программы приведен в табл. 4.3. Счетчиком служит один из РОН — регистр В. По команде MVI В, N в него заносится число N, определяющее количество повторяемых циклов. В данной программе N=16. Для определенности принято, что участок программы, кото- рый необходимо повторить 16 раз, начинается командой логической операции «ИСКЛЮЧАЮЩЕЕ ИЛИ» XRA А, расположенной по адресу 1002, и заканчи- вается командой пересылки из аккумулятора в регистр D: MOV D, А, располо- женный по адресу 10А1 После каждого выполнения этого участка программы 31
содержимое счетчика (регистра В) уменьшается на единицу посредством ко- манды DCR В (адрес 10Л2). До тех пор, пока содержимое регистра В отлично от нуля, признак Z имеет нулевое значение и программа переходит к выполне- нию команды, адрес 1002 который содержится во втором и третьем байтах ко- манды JNZ (переход по отсутствию нуля). Указанный адрес отмечен в про- грамме меткой Ml, т.е. метка Ml является.мнемоническим обозначением адре- са 1002. Таблица 4.3 - Программа счета циклов Метка Мнемокод Операнд Адрес Н-код Комментарий Vt ...... .......... MV1 В, 16 1000 06 Установка счётчика N=16 в (В) 7 1001 10 Ml: XRA А 1002 AF Обнуление призна- ка переноса 4 . MOV D,A 10А1 57 Пересылка содер- жимого А в регистр D (D:=A) 5 DCR В 10А2 05 Уменьшение содер- жимого счётчика на 1 5 .JNZ Ml 10АЗ С2 Переход по усло- вию (N) * 0 к ячейке памяти с адресом 1002 10 10А4 02 10А5 10 Если в результате очередного вычитания единицы содержимое регистра В окажется равным нулю (Z=l), то программа перейдет к выполнению коман- ды, расположенной за JNZ. Происходит выход из циклического участка про- 1раммы. Поскольку регистр В имеет восемь двоичных разрядов, рассмотренная структура программы позволяет организовать счетчик от 1 до 255 циклов. При необходимости получения большого числа циклов для организации счетчика следует использовать регистровые пары (например, В и С). Загрузка такой пары осуществляется с помощью команды LXI В, а вместо команды DCR В необхо- димо использовать команду DCX В (декремент регистровой пары). Пример 4.2. Определение модуля числа. При исследовании сигналов час- то приходится оценивать погрешность измерения по модулю. Рассмотрим про- грамму определения модуля числа, содержащую условный переход. В связи с тем, что отрицательные числа представляются в дополнительных кодах, при определении модуля нельзя ограничиться только отбрасыванием знака числа, 32
Рисунок 4.6 - Схема алгоритма счета циклов информация о котором заключена в старшем бите. Если число положительное, то его надо умножить на -1. Знак можно определить, используя операцию мас- кирования или засылку старшего бита в триггер переноса с последующим его анализом. В данном случае эти операции нежелательны, так как сопровожда- ются изменением содержимого аккумулятора. Целесообразно применить ко- манду логического сложения содержимого аккумулятора с самим собой. При этом содержимое аккумулятора не меняется, а флаги останавливаются в соот- ветствующие состояния. Условный переход выполняется по содержимому триггера знака S. На рис. 4.7 изображена схема алгоритма определения модуля числа, на- ходящегося в регистре Е. Программа работа- ет следующим образом. Число из регистра Е пересылается в аккумулятор. В результате выполнения операции логического сложения аккумулятора с самим собой в триггер знака записывается старший биг числа. С помо- щью команды условного перехода осущест- вляется ветвление программы. Если S=0 (положительное число) не выполняется, то производится изменение знака числа и мо- дуль числа из аккумулятора пересылается в регистр Е. Знак числа изменяется примене- нием операции дополнения, заключающейся в инвертировании всех разрядов числа (ко- манда СМА) с последующим прибавлением единицы к младшему разряду (команда INR А). Если условие S=0 выполняется (число положительное), то по условному переходу JM М2 три последние команды обходятся, содержимое регистра Е не меняется, а вы- полнение программы продолжается с адреса 01F8, соответствующего метке М2. Программа в машинных кодах с коммента- риями приведена в табл. 4.4. Пример 4.3. Определение максимального из двух положительных чисел. При обработке сигналов часто встречается необходимость определения макси- мального из нескольких положительных чисел. Такие задачи возникают, на- пример, при обнаружении полезных сигналов или при нахождении максималь- ного значения сигнала при заданном интервале времени. Нахождение макси- мального из нескольких чисел сводится к последовательному определению максимального из двух чисел. В системе команд МП имеется команда сравнения СМР, которая не изме- няет содержимого аккумулятора, однако устанавливает триггер признака CY (перенос) в единичное состояние, если содержимое аккумулятора меньше со- держимого регистра. 33
MOVA.E ORAA JPM2 СМА INRA MOV E,A Рисунок 4.7 - Схема алгоритма определения модуля числа СМРВ JCM1 MOV С, А MOV А, В MOV В.С Рисунок 4.8 - Схема алгоритма нахождения большего из двух положительных чисел Таблица 4.4 - Программа определения модуля числа Метка Мнемокод Операнд Адрес Н-код Комментарий Vt MOV A, E 01F0 7B Пересылка в аккумулятор 5 ORA A 01F1 B7 Определение знака числа 4 JP М2 01F2 F2 Условный переход по по- ложительному значению 10 01F3 F8 01F4 10 СМА A 01F5 2F Изменение знака числа 4 INR A 01F6 3C 5 MOV E,A 01F7 5F Пересылка в регистр Е 5 М2: 10F8 Для определенности будем считать, что одно из чисел находится в акку- муляторе. а другое - в регистре В Требуется большее число поместить в ре- гистр В. а меньшее - в аккумулятор. Схема алгоритма показана на рис. 4.8, а программа в машинных кодах приведена в табл. 4.5. 34
чисел Таблица 4.3 - Программа нахождения большего из двух положительных Метка Мнемокод Операнд Адрес Н-код Комментарий Vt СМР В 00А1 В8 Сравнение чисел 7 JC Ml 00А2 DA Переход на Ml, если (А)<(В) 10 00A3 А8 00А4 00 MOV с, А 00А5 4F Обмен содержимого между аккумулято- ром и регистром В через регистр С 5 MOV А,В 00А6 7В 5 MOV В С 00А7 41 5 Ml: 00А8 Пример 4.4. Организация временной задержки длительностью ЮОмкс. Программу, обеспечивающую такую задержку, оформим в виде подпро- Q Возврат-^) CALL DEL MVI В.Х DCR В JNZM1 NOP • К раз NOP RET Рисунок 4.9 - Схема алгоритма формирования временной задержки граммы, которую назовем DEL. Это симво- лическое имя будем использовать в виде метки, указывающей начальный адрес под- программы. Схема алгоритма формирования временной задержки изображена на рис. 4.9, а программа помещена в табл. 4.6. Началь- ный адрес подпрограммы записан во втором и третьем байтах команды, с помощью кото- рой происходит обращение к подпрограмме DEL. При выполнении подпрограммы в ре- гистр В должно быть записано число циклов X, которое вначале неизвестно. Содержимое регистра В уменьшается на единицу до тех пор, пока не станет равным нулю. При этом признак Z устанавливается в единичное со- стояние (Z=l) и происходит выход из цикла. Подпрограмма неработоспособна до тех пор, пока не будет задано значение X. Зная, какие команды используются в данной подпрограмме и время их выполне- ния, можно вычислить, сколько раз должен повториться циклический участок подпро- граммы для обеспечения требуемой временной задержки. Команды MVI В, X, CALL DEL и RET используется один раз. Если час- тота задающего генератора МП составляет 2МГц, каждый такт длится 0.5мкс. В этом случае время выполнения перечисленных команд составит 17мкс. Для получения задержки времени, равной ЮОмкс, циклический участок программы должен выполняться столько раз, чтобы этот процесс завершился за .35
оманд DCR В и JNZ Ml составляет 2. получить многократным повторением ко- Продолжение таблицы а 7.5 без остатка. ' Наименование | исток программы X = 10 раз, то получим н..,—— — — —!- шеся 835=8 мкс можно скомпенсировать . , Запоминающее > ОР (К=4) Значение Х=0А, соответствую- . устройство с ио- । ся во второй байт команды МVI В, X. следбвательным г | доступом „ ‘ i формирования временной задержки .\; Запоминающее устройство с прямым досту- пом X Н-код Комментарий Vt 1 0 CD Вызов подпрораммы формирования времен- ’ ной задержки 17 1 09 Дисплей 1 i 2 0А _ _ _ - ........ V. 9 06 Запись в регистр В числа Х=0А 7 А 0А В 05 Уменьшение содержи- мого регистра В на 1 5 Линия потока 1 С С2 Повторить цикл, если результат не равен ну- лю 10 5 D Е ОВ 0А F 00 Пустые операции 4 Соединитель < 0 00 4 1 00 4 2 00 4 3 С9 Возврат к основной программе 10 Ассемблера “ зыке ассемблера такжё используется мне- отражающее содержательный смысл вы- злучае необходимо помнить, что исходный jpa должен иметь определенный формат. , ся на четыре поля: , • • S: поле «О1IEPAH- > поле «КОММЕ11- ДЫ» ТАРЙИ» Терминатор Комментарий друга произвольным числом пробелов, но 36
Метка. В поле метки размещается символическое имя ячейки памяти, в которой хранится отмеченная команда или операнд. Метка представляет собой буквенно-цифровую комбинацию, начинающуюся с буквы. Используются только буквы латинского алфавита. Некоторые ассемблеры допускают исполь- зование в метках символа подчеркивания (_) Длина метки не должна превы- шать шесть символов. Метка завершается двоеточием (:). Псевдокоманды ассемблера не преобразуются в двоичные коды, а потому не могут иметь меток. Исключение составляют псевдокоманды резервирования памяти и определения данных (DS, DB, DW). У псевдокоманд, осуществляю- щих определение символических имен, в поле метки записывается определяе- мое символическое имя, после которого двоеточие не ставится. В качестве символических имен и меток не могут быть использованы мнемокоды команд, псевдокоманд и операторов ассемблера, а также мнемони- ческие обозначения регистров и других внутренних блоков МП или МК. Код операция. В. этом поле записывается мнемоническое обозначение команды МП или МК или псевдокоманды ассемблера, которое является сокра- щением (аббревиатурой) полного английского наименования выполняемого действия. Например: MOV - move - переместить, JMP — jump - перейти, DB - define byte - определить байт. Для всех МП и МК используется строго определенный и ограниченный набор мнемонических кодов. Любой другой набор символов, размещенный в поле операции, воспринимается ассемблером как ошибочный. Операнды. В этом поле определяются операнды (или операнд), участ- вующие в операции. Команды ассемблера могут быть без-, одно- или двухопе- рандными. Операнды разделяются запятой (,). Операнд может быть задан непосредственно или в виде его адреса (пря- мого или косвенного) Непосредственный операнд представляется числом. В некоторых МП он задается в команде. ПРИМЕР: MVI А, 15Н LXI Н,23ВЕН ACI 25 В МК семейства MCS 51 записывается с обязательным указанием пре- фикса непосредственного операнда (#) (MOV А,#25 или с символическим име- нем: ADDC A,#OPER2). Адрес операнда может быть задан мнемоническим обозначением регистра (INC Rn; MOV A,D), символическим именем (MOV A,MEMORY). Указателем на косвенную адресацию может служить для одних МП буква М (MOV М,А: ADD М), для других префикс @ (MOV @Ri,2FH). Операндом может являться прямой адрес ячейки памяти (JMP 8324Н; CALL 115ВН .INC 1F5AH), порта ввода/вывода (IN F9H, OUT ВАН) или их символи- ческие имена (JMP LABEL, MOV А,РЗ). Используемые в качестве операндов символические имена и метки долж- ны быть определены, а числа представлены с указанием системы счисления, для чего используется суффикс (буква, стоящая после числа): В - для двоичной, 37
/ Q - для восьмеричной, D - для десятичной и Н - для шестнадцатеричной. Чис- ло без суффикса по умолчанию считается десятичным. Обработка выражений в процессе трансляции. Некоторые ассемблеры допускают использование выражений в поле операндов, значения которых вы- числяются в процессе трансляции. Выражение представляет собой совокупность символических имен и чи- сел, связанных операторами ассемблера. Операторы ассемблера обеспечивают выполнение арифметических ("+" - сложение, - вычитание,* - умножение, / - целое деление) и логических (OR - ИЛИ, AND - И, XOR - исключающее ИЛИ) операций в формате 2-байтных слов. Комментарий. Поле комментария может быть использовано програм- мистом для текстового или символьного пояснения логической организации прикладной программы. Поле комментария полностью игнорируется ассембле- ром, а потому в нем допустимо использовать любые символы. По правилам языка ассемблера поле комментария начинается после точки с запятой (;). Псевдокоманды ассемблера. Ассемблирующая программа транслирует исходную программу в объектные коды. Хотя транслирующая программа берет на себя многие из рутинных задач программиста, таких как присвоение дейст- вительных адресов, преобразование чисел, присвоение действительных значе- ний символьным переменным и т.п., программист все же должен указать ей не- которые параметры: начальный адрес прикладной программы, конец ассембли- руемой программы, форматы данных и т.п. Всю эту информацию программист вставляет в исходный текст своей прикладной программы в виде псевдокоманд (директив) ассемблера, которые только управляют процессом трансляции и не преобразуются в коды объектной программы. Псевдокоманда ORG ЮН задает ассемблеру адрес ячейки памяти (ЮН), в которой должна быть расположена следующая за ней команда прикладной про- граммы. Псевдокомандой EQU можно любому символическому имени, исполь- зуемому в программе, поставить в соответствие определенный операнд. На- пример, запись PET EQU 13 приводит к тому, что в процессе ассемблирования всюду, где встретится символическое имя РЕТ, оно будет заменено числом 13. Символические имена операндов, переопределяемых в процессе ис- полнения программы, определяются псевдокомандой SET: ALFA SET 3 ALFA SET ALFA+1 Ассемблер MCS-51 позволяет определить символическое имя как адрес внутренних (псевдокоманда DATA), внешних (XDATA) данных или адрес бита (псевдокоманда BIT). Например, директива ERROR FLAG BIT ’ 25Н.З 38
определяет символическое имя ERROR FLAG как третий бит ячейки ОЗУ с ад- ресом 25Н. Псевдокоманда DB обеспечивает занесение в ПП константы, пред- ставляющей собой байт. Псевдокомандой END программист дает ассемблеру указание об оконча- нии трансляции. В результате трансляции должна быть получена карта памяти программ, где каждой ячейке памяти поставлен в соответствие хранящийся в ней код. В соответствии с форматом команд для представления их объектных ко- дов отводятся одна, две или три ячейки памяти программ Пример программы на языке ассемблера: ORG 801FH /Присвоение начального адреса для /подпрограммы DELET (задержка) COUNT EQU X.XXXH /Присвоение символического имени /значению ХХХХН (количество циклов ;в подпрограмме для формирования /задержки) PUSH PSW /11 тактов. Сохранение в стеке /программно доступные регистры / (А, Е, Н, L) PUSH H /11 тактов LX I H,COUNT /10 т. Установка счетчика циклов в /регистровой паре (Н)(L) CICL: OCX H /5т.Уменьшение счетчика циклов на 1 MOV A, L /4т. и проверка ORA H /4т. на "нуль" JNZ CICI /Ют. If ХХХХ*0 GOTO CICL POP. H /Ют. Восстановление программно- POP PSW /10т. .доступных регистров перед / выходом из подпрограммы RET /Ют. Выход 4.8 Ввод, редактирование, трансляция и отладка прикладных программ Написанием текста программы заканчивается первый этап разработки прикладного программного обеспечения — "от постановки задачи к исходной программе" и начинается следующий - "от исходной программы к объектному модулю". Для простых программ объектный код может быть получен вручную (ручная трансляция). Однако для более сложных программ требуются специ- альные средства автоматизации подготовки программ. Обычно такие средства используют большие емкости памяти и широкий набор периферийных уст- ройств, в силу чего они не могут быть резидентными, а используются только на микроЭВМ. В минимальный состав программного обеспечения кросс-средств входят: 39
- системная программа для ввода исходного текста прикладной про- граммы, его редактирования и записи на внешней носитель информации - так называемый редактор текстов; - программа-транслятор, обеспечивающая преобразование исходного текста прикладной программы в объектный модуль (ASM). Более мощные кросс-средства предполагают наличие редактора внешних связей (LINK), позволяющего включать в программу модули, разработанные независимо друг от друга, и программу, обеспечивающую настройку переме- щаемых программных модулей на абсолютные адреса (LOCATE). Для ввода исходного текста прикладной программы необходимо вызвать редактор текстов, указав ему тип носителя, на котором будет создан исходный файл. Для трансляции исходного текста программы необходимо вызвать транс- лятор, указав ему файл с исходным текстом, место размещения объектного ко- да, а также условия формирования и вывода листинга После окончания транс- ляции при отсутствии синтаксических ошибок выдается сообщение ASSEMBLY COMPLETE NO ERRORS или сообщение ASSEMBLY COMPLETE NNN ERRORS<LLL> с указанием числа ошибок (NNN) и номера последней ошибочной строки (LLL) при наличии синтаксических ошибок. Все обнаруженные ошибки исправляются в исходном тексте прикладной программы (это относится и к ошибкам, обнаруженным на этапе отладки). Для этого необходимо вновь вызвать редактор текста и осуществить редактирова- ние исходного текста программы, а затем выполнить повторную трансляцию. Если исходный текст прикладной программы не имел внешних ссылок и содержал директиву • ORG, то после успешного завершения трансляции этап разработки программного обеспечения "от исходной программы к объектному' модулю" можно считать законченным. 4.9 Вопросы и задания для самопроверки 1. Какие виды адресации применяются в МП? а) для обращения к памяти большого объема; б) для работы с массивами; в) в командах передачи управления? 2. С какой целью формируются признаки результатов операций? Пере- числите основные признаки. 3. Какую команду можно использовать для сброса бита переноса и уста- новки аккумулятора в нулевое состояние? 4. Приведите примеры использования команд ANA и ORA. 5. Назовите средства описания алгоритмов. 40
6. Представьте схему алгоритма решения задач: - преобразование числа 02DEH в дополнительный код; - принятие решений "больше чем" и "равно" Какие команды понадобятся для этой цели? 7. Объясните различия между командами перехода, вызова подпрограм- мы и прерывания. 8. Как осуществляется возврат из подпрограммы к основной программе? 9. Объясните преимущества и недостатки языков программирования раз- личных уровней 10 Составьте схему алгоритма и программу на языке Ассемблера для ти- повых 8-разрядных МП решения задач: - умножение двух двухбайтовых чисел; - формирование временной задержки 1м 30 с. 11 . Какие разделители полей используются в командной строке ассемб- лера? 12 Перечислите состав программных средств, необходимых для создания рабочих программ пользователя. 5 ОРГАНИЗАЦИЯ ИНТЕРФЕЙСА В МИКРОЭВМ 5.1 Основные понятия и требования к интерфейсу Работа микроЭВМ сопровождается интенсивным обменом информацией между МП, ЗУ и УВВ. В процессе выполнения программы МП принимает ко- манды из памяти программ, обращается к памяти данных, а при исполнении команд ввода-вывода - к УВВ. Эффективность решения задачи в микроЭВМ в значительной степени определяется организацией этого обмена и структурой связи между МП, памятью и УВВ. Система шин, вспомогательной аппаратуры и алгоритмов, реализованных на этом оборудовании, предназначенная для организации обмена между МП, памятью и УВВ, называется интерфейсом. В функции интерфейса входят де- шифрация адреса устройств, синхронизация обмена информацией, согласова- ние форматов слов, дешифрация кода команды, связанной с обращением к па- мяти или УВВ, электрическое согласование сигналов и некоторые другие опе- рации. Сложность задач, возлагаемых на интерфейс, а также недостаточная мощность буферных схем, входящих в состав БИС МП, привели к распределе- нию средств интерфейса между различными устройствами: а) устройством управления памятью и вводом-выводом, входящим в со- став МП; б) непосредственно интерфейсным устройством, являющимся промежу- точным звеном между МП, с одной стороны, и памятью и УВВ, с другой; 41
в) специализированными устройствами управления (контроллерами) УВВ, предназначенными для реализации алгоритмов управления, специфиче- ских для различных УВВ. Организация обмена между МП и памятью' или УВВ в простейших слу- чаях возможна на основе средств, содержащихся только в МП. Недостающие функции в таких случаях реализуются программно. Более сложные ЗУ и УВВ соединяются с МП обязательно через дополни- тельные интерфейсные устройства, выполненные на основе СИС и МПС или (в некоторых МПК) в виде специальных БИС. Разработка БИС обусловливается значительной сложностью функции интерфейсных устройств: при отсутствии БИС в некоторых случаях может потребоваться до нескольких сотен корпусов СИСиМИС. • Наконец, существуют сложные ЗУ и УВВ со специфическими алгорит- мами управления (магнитные диски и ленты, электронно-лучевые трубки и т.д.), реализация которых возможна лишь специальными контроллерами. Сложность внешнего интерфейса определяется как сложностью перифе- рийных устройств, так и степенью совместимости их с ЭВМ. Под совместимо- стью будем понимать возможность объединения отдельных компонентов сис- темы в единую операционную сеть посредством программных и аппаратных средств. Совместимость определяется четырьмя основными признаками: быстро- действием, кодами, используемыми для обмена, архитектурой процессора, электрическими характеристиками. Если объединяемые компоненты не соот- ветствуют друг другу по одному или нескольким признакам, то они не могут быть объединены без интерфейсных модулей. 5.2 Программируемый адаптер параллельного интерфейса В любой микроЭВМ необходимы средства обмена данными с разнооб- разными периферийными устройствами. В зависимости от условий конкретно- го применения и характеристик периферийного оборудования передача данных производится в параллельном или последовательном формате. Общность функ- ций ввода-вывода стимулировала разработку БИС периферийных адаптеров, представляющих собой гибкие программируемые приборы, ориентированные исключительно на ввод-вывод. В настоящее время такие адаптеры стали обяза- тельными компонентами практически всех микропроцессорных систем. Они получили широко распространенные имена как LPT и СОМ порты соответст- венно для параллельных и последовательных каналов ввода/вывода [15,17]. На рис. 5.1 приведена структурная схема адаптера и его программная мо- дель. Подключение периферийного оборудования производится через три дву- направленных 8-битных порта (или канала) А, ‘В и С. Интерфейс с системной шиной осуществляется с помощью 14 линий: 42
Рисунок 5.1 - Структурная схема (а) и программная модель (б) типового параллельного адаптера Do+- - двунаправленная шина данных с трехстабильными каскадами. Ac, Ai - линии адреса, которые выбирают внутренний регистр адаптера, коммутируемый на шину данных: 00 - порт А, 01 - порт В, 10 - порт С и 11 - регистр управления. CS - L-активный вход выбора кристалла; высокий уровень запрещается, а низкий разрешает связь прибора с системной шиной. RD - L-активный вход считывания информации из адресуемого по лини- ям А, регистра на шину данных. 43
WR - L-активный вход записи информации с шины данных в адресуе- мый внутренний регистр адаптера. RESET - Н-активный сигнал сброса для приведения прибора в начальное иоигояние при действии сброса регистр управления обнуляется, а все три порта переводятся в режим ввода. Отметим, что считывание из регистра управления (RD = 0, Ai o = 11) не допускается, а одновременные запись и считывание (RD = 0 и WR = 0) приво- дят к непредсказуемому результату. Программирование и обмен данными с адаптером осуществляются ко- мандами ввода IN и вывода OUT, при выполнении которых на линиях Ао*7 (и одновременно As+is) находится адресная информация. Приемником и источни- ком данных в микропроцессоре является аккумулятор. Входы Аод адаптера обычно подключаются к младшим линиям шины адреса, а подключение входа CS зависит от принятого способа выбора адаптеров, если их несколько. В ли- нейном выборе с кодами адреса 011111ХХ, 101111ХХ,..., 111110ХХ входы CS подключаются без дополнительного дешифратора к соответствующим (нуле- вым) линиям адреса Аг*?. В этом способе система может иметь до шести адап- теров, при большем числе адаптеров потребуется дешифратор с L-активными выходами, вход которого подключается к линиям А2+7. 7 6 5 4 3 2 1 0 Рисунок 5.2 — Формат управляющего слова для настройки 1111А на допустимый режим Программирование адаптера заключается в загрузке кода (приказа) в ре- гистр управляющего слова (РУС). Формат приказа определения режима, иден- тифицируемого условием D7 = 1, приведен на рис. 5.2. Отметим, что 8-битные порты А и В не разделены, а линии порта С разделены на две 4-битные группы, представляющие собой два независимых порта. Например, приказ конфигура- ции порта А на ввод в режиме 0, порта В на вывод в режиме 1, бита 3 порта С на ввод и бита 7 порта С на вывод имеет код 10010101. Этот код загружается в 44
аккумулятор командой MVI и выводится в регистр управления адаптера коман- дой OUT Управляющее слово с нулевым старшим битом D? = О используется для установки или сброса любого бита порта С. Биты не используются и обыч- но содержат нули: биты Di,3 содержат двоичный номер (адрес) модифицируе- мого бита порта С, а бит Do задает установку (Do = 1) или сброс (Do = 0) адре- суемого бита Например, приказ сброса бита 2 порта С имеет код 00000100. Приказы данного формата используются для формирования сигналов квитиро- вания в режимах 1 или 2. Формирование положительного импульса на выходе бита 3 порта С реализуется следующими командами: MV1 А, 00000111В /Установка бита 3 OUT РУС /Вывод в порт РУС MVI А,00000110В /Сброс бита 3 OUT РУС /Вывод в порт РУС Здесь РУС — символический адрес регистра управления, который опреде- ляется интерфейсом адаптера с системной шиной. Например, им может быть РУС = 0FBH. Отметим, что в приведенном фрагменте можно сэкономить один байт, заменив вторую команду MVI на команду DCR А. Аналогичная функция установки и сброса отдельных бит портов А и В реализуется в три этапа: содержимое порта вводится в аккумулятор, командами ORI и ANI с соответствующими операндами-масками модифицируется нужный бит, а затем измененный результат выводится в тот же порт. Как видно из приказа определения режима, адаптер имеет три режима ра- боты. Режим 0 - программно-управляемый ввод-вывод данных в синхронном режиме по трем 8-разрядным каналам А, В и С. Каждый канал может быть ис- пользован только для ввода или вывода информации, а канал С дополнительно может быть разделен на два 4-разряд ных канала, что обеспечивает 16 возмож- ных конфигураций адаптера. Выводимые данные фиксируются в регистрах- защелках, входящих в состав всех портов, а вводимые данные не запоминаются, т. е в операции считывания входного порта в аккумулятор передается текущее состояние входных линий. Режим 0 применяется в программно-управляемом вводе-выводе медленно меняющихся данных или постоянных значений. Режим 1 - обмен данными с ВУ по каналам А и В в асинхронном режиме и режиме прерывания программы. Шесть линий порта С используются для управления обменом. Данный режим предоставляет пользователю следующие возможности: запрограммировать один или два параллельных порта с линиями квитирования и прерывания, каждая из которых может работать на ввод или вывод: при использовании только одного порта остальные 13 линий запро- граммировать в режиме 0: при определении двух портов в режим 1 оставшиеся 2 линии использовать для ввода или вывода. Режим 2 - двунаправленный обмен данными с ВУ по канату А в режиме прерывания программы. Пять разрядов порта С используется как управляющие для порта А. 45
Только группа А1111А может быть настроена на этот режим. Пример 5.1. Необходимо настроить ППА на режим 0, причем порт А должен выполнять ввод; порт В - ввод; порт С (4-7й разряды) - вывод; порт С (О-Зй разряды) - ввод (рис. 5.3). MVI А, 10010011В Программирование ППА на заданный режим OUTOFBH а) управляющее слово; б) заданный режим Рисунок 5.3 - Управляющее слово для программирования ППА Положим, что регистр управления требуемого ППА имеет адрес 0FBH. Для задания требуемого режима необходимо загрузить в аккумулятор МП управляющее слово (рис. 5.3) и по команде OUT записать его в регистр управ- ления ППА. Пример 5.2. Необходимо настроить ППА на режим 1, причем порт А и В должен обеспечивать стробируемый ввод. а б а) порт А - ввод; б) порт В - ввод Рисунок 5.4 - Управляющие слова для настройки ППА Для реализации этого режима триггер разрядов РС.4 для порта А и РС.2 для порта В должны быть предварительно установлены в " 1", если программист разрешает прерывание. Настройка триггеров «разрешение прерывания» осуще- 46
ствляется посредством загрузки управляющего слова с нулем в старшем разря- де с помощью команды OUT в регистр управляющего слова: для порта A: MVI А, 01011001В ;РС.4:= 1 OUT OFBH дляпортаВ: MVI А, 01010101 В ;РС.2:=1 OUT OFB Н Общий формат управляющего слова поразрядной установки порта С представлен на рис. 5.5. D7 De Ds D4 D3 D2 D1 Do Значение разряда (0 или 1) Номер разряда -------------------- 0 определяет поразрядную установку Порта С Рисунок 5.5 — Формат управляющего слова поразрядной настройки установки Порта С Пример 5.3. Написать управляющее слово режима для адаптера со сле- дующей конфигурацией: 1. Порт А - режим 0. ввод: Порт В — режим 0. ввод; Порт С4-гС7 — вывод. Управляющее слово установки режима имеет вид 92 Н. 2. Порт А-режим 2. ввод. Управляющее слово установки режима имеет вид D0H. Следует обратить внимание, что разряды, определяющие режим работы Порта С. в управляющем слове равны нулю. Пример 5.4. Написать управляющее слово: для установки разряда С3. для сброса разряда С (. для установки разряда Се. для сброса разряда С6. Ответ: 07 н 0 0 0 0 0 1 1 1 с3 Ответ: 06 Н 0 0 0 0 0 1 1 0 Ответ: 0D Н 0 0 0 0 1 1 0 1 Ответ: ОС Н 47
O|O|O|O|1|1|O|O Установка соответствующего уровня сигнала на выходе порта С реализу- ется следующими командами МП: MVI , А, 07Н OUT РУС MVI А, 06Н OUT РУС к т.д. Здесь РУС - символический адрес регистра управляющего слова ППА. 5.3 Вопросы и задания для самопроверки 1. Что понимается под интерфейсом, какие основные функции он выпол- няет? 2. Что называется портом ввода (вывода)? 3. Какие существуют способы объединения шин адреса и данных? 4. Каким образом программируется параллельный адаптер на различные режимы работы? 5. Напишите управляющее слово и запрограммируйте ППА со следую- щей конфигурацией: Порт А - режим 1; ввод; Порт В - режим 0, вывод, Порт Со - Сз ввод: Порт С4 - С7 - вывод. 6. В каких режимах работы ППА возможна поразрядная установка порта С? 7. Напишите управляющее слово и запрограммируйте НПА для пораз- рядной установки порта С: С4 "1"; С5 0; С7 1 С2 "0"; Сз 1; Сб 1. 8. Составьте фрагменты программ настройки НПА и программного обме- на для п. 5,7. 6 ВСТРОЕННЫЕ МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ НА ОСНОВЕ ОДНОКРИСТАЛЬНЫХ МИКРОЭВМ 6.1 Структура микроконтроллера семейства MCS-51 Внутренняя структура исходного микроконтроллера семейства MCS-51 (рис.6.1) включает следующий набор функциональных модулей: - 8-разрядное АЛУ с аппаратной реализацией операций типа умноже- ние; - внутренняя память программ (4Кбайт) и ОЗУ данных (128 байт); - четыре универсальных программируемых параллельных 8-разрядных порта ввода-вывода с возможностью реализации определенных альтернативных функций. - два 16-разрядных программируемых таймера/счетчика; 48
- дуплексный последовательный порт. Этот набор аппаратных средств и совокупность реализуемых функций делают МК семейства 8051 эффективным средством сбора, предобработки ин- формации и управления объектом. Усовершенствование HMOS технологии, рост степени интеграции позво- лил в рймках устоявшейся архитектуры расширить набор внутренних интер- фейсных блоков, увеличить внутреннюю память программ и данных. Таким об- разом появились микроконтроллеры типа 8052. Далее семейство продолжало увеличиваться за счет модификаций типа 80С51/52/54/58, выполненных с ис- пользованием фирменной комплиментарной MOS технологии (CHMOS). Эта технология позволила уменьшить рассеиваемую мощность при обычной работе и ввести особые режимы, дополнительно снижающие энергопотребление. Поя- вились микроконтроллеры типа 80L52/54/58 с пониженным напряжением пита- ния. С группой 80C51FA/FB/FC связано введение в архитектуру семейства модуля РСА (programmable counter array) и сторожевого таймера WDT (watchdog timer). Модуль РСА предназначен для выполнения различных опера- ций снега и определения длительности интервалов времени, в том числе при широтно-импульсной модуляции. Сторожевой таймер обеспечивает переза- грузку процессора при зависаниях. Старшими членами семейства являются микроконтроллеры типа 80C51GB, имеющие встроенный 8-разрядный АЦП, шесть параллельных портов. Современные версии микроконтроллеров семей- ства MCS-51 выполнены с использованием полностью статической схемотех- ники. Это позволяет останавливать микроконтроллер при отладке разрабаты- ваемой системы [9| 49
Регистр РО Регистр состояния PSW ПОРТ1 Регистр Р1 ПОРТ 2 Регистр °2 ПОРТЗ Регистр РЗ Память программ 4Кх8 Счетчик команд PC Регистр указателя адреса данных DPTR Таймер/счетчик 1 Регистр ТН1 Pc р TL1 Внутренняя магистраль ПОРТО Память данных ОЗУ 4К х 8 Указатель стека SP АЛУ Аккумулятор А Регистр В__ Буфер Р1 Буфер Р2 Буфер РЗ Блок управления Регистр команд Логика ввода/ вывода Логика управления микроконтроллером 1S те Формирователь —7 временных интервалов —7 Приемопередатчик последов, порта Буфер передатчика Буфер приемника Упр. регистр SCON а 29 30 31 Блок таймеров/счетчиков Таймер/счетчик 0 Регистр ТНО Регистр TLO Регистр управления TCON Регистр режима TMOD Буфер РО Блок прерываний и последовательного : порта__________ Регистр разрешения прерываний IE Регистр приоритетов прерываний IP Рисунок 6.1 - Структура микроконтроллера 8051 АН 6.2 Программно доступные ресурсы и организация памяти ОМЭВМ (МК семейства MCS-51) имеет: 32 РОН; 128 определяемых пользователем программно-управляемых флагов; набор регистров специальных функций. РОН и определяемые пользователем программно-управляемые флаги расположены в адресном пространстве внутреннего ОЗУ данных. Регистры специальных функций (SFR, SPECIAL FUNCTION REGISTERS) с указанием их адресов приведены в таблице 6.1. 50
Таблица 6.1 - Регистры специальных функций Обозначение Наименование Адрес * АСС Аккуму [ятор 0E0H *В Регистр В 0F0H *PSW Регистр состояния программы 0D0H SP Указатель стека 81Н DPTR Указатель данных. 2 байта: DPL Младший байт 82Н DPH Старший байт 83Н *Р0 Порт 0 80Н *Р1 Порт 1 90Н *Р2 Порт 2 0A0H *РЗ Порт 3 ОВОН *1Р Регистр приоритетов прерываний 0В8Н *1Е Регистр разрешения прерываний 0А8Н TMOD Регистр режимов таймера/счетчика 89Н ♦TCON Регистр управления таймера/счетчика 88Н ТНО Таймер/счетчик 0. Старший байт 8СН TL0 Таймер/счетчик 0. Младший байт 8 АН ТН1 Таймер/счетчик 1. Старший байт 8DH ты Таймер/счетчик 1. Младший байт 8ВН *SCON Управление последовательным портом 98Н SBUF Буфер последовательного порта 99Н PCON Управление потреблением 87Н * - регистры, допускающие пооитовую адресацию. Аккумулятор. АСС - регистр аккумулятора. Команды, предназначенные для работы с аккумулятором, используют мнемонику "А", например, MOV А, Р2 Мнемоника "АСС используется, к примеру, при побитовой адресации ак- кумулятора. Так, символическое имя пятого бита аккумулятора при использо- вании ассемблера ASM51 будет следующим: АСС.5. Регистр В. Используется во время операций умножения и деления. Для других инструкций регистр В может рассматриваться как дополнительный сверхоперативный регистр. Регистр состояния программы. Регистр PSW содержит информацию о состоянии программы. Указатель стека SP. 8-битовый регистр, содержимое которого инкре- ментируется перед записью данных в стек при выполнении команд PUSH и CALL. При начальном сбросе указатель стека устанавливается в 07Н, а область стека в ОЗУ данных начинается с адреса 08Н. При необходимости путем пере- определения указателя стека область стека может быть расположена в любом месте внутреннего ОЗУ данных микроЭВМ. 51
Указатель данных. Указатель данных (DPTR) состоит из старшего байта (DPH) и младшего байта (DPL). Содержит 16-битовый адрес при обращении к внешней памяти. Может использоваться как 16-битовый регистр или как два независимых восьмибитовых регистра. ПортО - ПортЗ. Регистрами специальных функций РО, Pl, Р2, РЗ являют- ся регистры-"защелки" соответственно портов РО, Р1, Р2, РЗ. Буфер последовательного порта. SBUF представляет собой два отдель- ных регистра: буфер передатчика и буфер приемника. Когда данные записыва- ются в SBUF, они поступают в буфер передатчика, причем запись байта в SBUF автоматически инициирует его передачу через последовательный порт. Когда данные читаются из SBUF, они выбираются из буфера приемника. Регистры таймера. Регистровые пары (THO,TLO) и (ТН1,ТЫ) образуют 16-битовые счетные регистры соответственно таймера/счетчика 0 и тайме- ра/счетчика 1. Регистры управления. Регистры специальных функций IP, IE, TMOD, TCON, SCON и PCON содержат биты управления и биты состояния системы прерываний, таймеров/счетчиков и последовательного порта. ОМЭВМ при функционировании обеспечивает: минимальное время выполнения команд сложения - 1 мкс; - аппаратное умножение и деление с минимальным временем выполне- ния команд умножения/деления - 4 мкс. Все ОМЭВМ рассматриваемого семейства имеют несколько адресных пространств, функционально и логически разделенных за счет разницы в меха- низмах адресации и сигналах управления записью и чтением: память программ; внутренняя память данных; внешняя память данных. Структура адресного пространства ОМЭВМ показана на рис. 6.2. Слева приводятся адреса соответствующих областей памяти. FFFFH Внешняя память ООООН "Р°гРамм Работа только с внешней памятью программ (DEMA=O) OFFFH ООООН FFFFH 1000Н Внутрен. память программ Внешняя память программ Работа с внутренней памятью программ (DEMA=1) OFFH 80Н 7FH ООН Регистры специальных функций Внутреннее ОЗУ данных Внутренняя память данных FFFFH оооон Внешняя память данных Рисунок 6.2 - Пространство памяти ОМЭВМ 52
Память программ имеет 16-битовую адресную шину, ее элементы адре- суются использованием счетчика команд (PC) или инструкций, которые выра- батывают 16-разрядные адреса. Память программ доступна только по чтению ОМЭВМ не имеют команд и управляющих сигналов, предназначенных для записи в память программ. Па- мять программ имеет байтовую организацию и общий объем до 64 Кбайт. Ряд ОМЭВМ (КР1816ВЕ51, КМ1816ВЕ751, КР1830ВЕ51) содержат расположен- ную на кристалле внутреннюю память программ емкостью 4 Кбайт, которая может быть расширена до 64 Кбайт за счет подключения микросхем внешней памяти программ. ОМЭВМ семейства MCS-51 имеют внешний вывод DEMA, с помощью которого можно запретить работу внутренней памяти программ, для чего необ- ходимо подать на вывод DEMA "О" При этом внутренняя память программ от- ключается и, начиная с нулевого адреса, все обращения происходят к внешней памяти программ с формированием сигнала РМЕ. В случае, если DEMA=1, ра- ботают и внутренняя, и внешняя память программ. Для ОМЭВМ, не имеющих внутренней памяти программ, для нормальной работы всегда необходимо зада- вать DEMA=O. Таким образом, доступ к внешней памяти программ осуществляется в двух случаях 1) при действии сигнала DEMA=O независимо от адреса обращения: 2) в любом случае, если программный счетчик (PC) содержит число, большее чем OFFFH. Внутренняя память данных ОМЭВМ состоит из двух областей: 128 байт оперативной памяти (ОЗУ) с адресами 0-7FH и области регистров специ- альных функций, занимающей адреса 80H-FFH. Распределение пространства внутренней памяти данных показано на рис. 6.3. Физически внутреннее ОЗУ данных и область регистров специальных функций являются отдельными уст- ройствами. Все ячейки внутреннего ОЗУ данных мечут адресоваться с использова- нием прямой и косвенной адресации (режимы адресации даны в описании сис- темы команд ОМЭВМ). Кроме того, внутреннее ОЗУ данных имеет следующие особенности. Младшие 32 байта внутреннего ОЗУ данных сгруппированы в 4 банка по 8 регистров в каждом (БАНКО - БАНКЗ на рис. 6.3). Команды программы мо- гут обращаться к регистрам, используя их имена RO - R7. Два бита PSW (ука- затели банка рабочих регистров RSO и RS1) определяют, с регистрами какого банка производятся манипуляции. Наличие такого механизма работы с ячейка- ми ОЗУ позволяет экономить память программ, т. к. команды, работающие с регистрами R0-R7, короче команд, использующих прямую адресацию. Следующие после банков регистров внутреннего ОЗУ данных 16 байт (адреса 20H-2FH) образуют область ячеек, к которым возможна побитовая ад- ресация. Набор команд ОМЭВМ семейства MCS-51 содержит значительное ко- личество инструкций, позволяющих работать с отдельными битами, используя 53
при этом прямую адресацию. 128 бит, составляющих рассматриваемую область внутреннего ОЗУ данных, имеют адреса 00H-7FH и предназначены для работы с такими инструкциями. 7FH 2FH Прямо адресуемые биты 20Н R7 1FH БАНКЗ R0 18Н R7 17Н БАНК 2 R0 ЮН R7 OFH БАНК 1 R0 08Н R7 07Н БАНКО R0 ООН Рисунок 6.3 — Адресное пространство внутренней памяти данных Внешняя память данных формируется дополнительными микросхема- ми памяти, подключаемыми к ОМЭВМ, и может иметь емкость до 64 Кбайт. Пространства внутренней и внешней памяти данных не пересекаются, т.к. дос- туп к ним осуществляется с помощью разных команд. Для работы с внешней памятью данных существуют специальные команды MOVX, которые не влияют на внутреннюю память данных ОМЭВМ. Таким образом, в системе могут од- новременно присутствовать внутренняя память данных с адресами ООН - FFH и внешняя память данных с адресами 0000Н - FFFFH. Обращение к ячейкам внешней памяти данных осуществляется только с использованием косвенной адресации по регистрам R0 и R1 активного банка регистров внутреннего ОЗУ (команды типа MOV @Ri) или по регистру специ- альных функций DPTR (команды типа MOV @DPTR). Соответственно в пер- вом случае будет формироваться 8-разрядный, а во втором случае 16- разрядный адреса внешней памяти данных. При обращениях к внешней памяти данных адрес выводится через порт РО (младший байт) и порт Р2 (старший байт) ОМЭВМ. Обмен байтом данных (запись и чтение) производится через порт РО ОМЭВМ, т.е. порт РО использу- ется как шина адреса/данных в режиме мультиплексирования. Считывание данных из внешней памяти данных в ОМЭВМ производится с помощью выходного сигнала ОМЭВМ RD, а запись данных из ОМЭВМ во внешнюю память данных с помощью выходного сигнала ОМЭВМ WR. 54
Каждый тип внешней памяти (память программ, память данных) может быть добавлен независимо от другого и каждый использует те же адреса и ши- ны данных, но различные сигналы управления. 6.3 Система команд Система команд ОМЭВМ семейства MCS-51 имеет 111 команд и позво- ляет реализовать обработку данных, обеспечить выполнение логических, ариф- метических операций, а также управление в режиме реального времени. Реали- зованы побитовая, потетрадная (4 бита), побайтовая (8 бит) и 16-разрадная об- работка данных. Полное описание команд и примеры их выполнения приведены в приложении Б. В машинном коде команда занимает один, два или три байта и выполня- ется за один, два или четыре (умножение и деление) машинных цикла. При час- тоте тактового генератора, равной 12 МГц, одноцикловые команды выполня- ются за 1 мкс, двухцикловые - за 2 мкс и т.д. Из 111 типов команд 64 выполня- ются за 1 мкс (12 тактов), 45 команд - за 2 мкс (24 такта) и две команды - ум- ножение и деление (MUL DIV) выполняются за 4 мкс (48 тактов). Все команды условных переходов осуществляются относительно содер- жимого счетчика команд с адресом перехода, вычисляемым ЦПУ во время вы- полнения команды. Трехбайтовые команды перехода и вызова LCALL, 1JMP (с 16- разрядным адресом) позволяют осуществлять переход и обращение по любому адресу адресного пространства памяти программ емкостью 64 Кбайт. Если не- обходим переход в пределах области памяти программ 2 К, то можно использо- вать команды перехода и вызова с 11-разрядным адресом (ACALL, А.ГМР). Пе- реход внутри участка памяти, определяемый 8-разрадной величиной смещения, осуществляется по команде SJMP. В табл. 6.2 приведены обозначения и симво- лы, используемые в системе команд. Систему команд ОМЭВМ условно можно разбить на пять групп: арифме- тические команды; логические команды с байтовыми переменными; команды передачи данных; команды битового процессора; команды ветвления программ и передачи управления. Арифметические команды. В наборе команд ОМЭВМ имеются сле- дующие арифметические операции: сложение, сложение с учетом флага пере- носа, вычитание с заёмом, инкрементирование, декрементирование, сравнение, десятичная коррекция, умножение и деление. 55
Таблица 6.2 - Обозначение символов в наборе команд Обозначе- ние, символ Назначение 1 2 А Аккумулятор Rr Регистры текущего выбранного банка регистров Г Номер загружаемого регистра, указанного в команде direct Прямо адресуемый 8-битовый внутренний адрес ячейки данных, который может быть ячейкой внутреннего ОЗУ данных (0-127) или SFR (128-255) @Rr Косвенно адресуемая 8-битовая ячейка внутреннего ОЗУ данных data 8 8-битовое непосредственное данное, входящее в код опе- рации (КОП) Data 16 16-битовое непосредственное данное, входящее КОП DataH Старшие биты (15-8) непосредственных 16-битовых дан- ных Data L Младшие биты (7-0) непосредственных 16-битовых дан- ных Addrll 11 -битовый адрес назначения Addr 16 16-битовый адрес назначения AddrL Младшие биты адреса назначения disp 8 8-битовый байт смещения со знаком bit Бит с прямой адресацией, адрес которого содержит КОП, находящийся во внутреннем ОЗУ данных или SFR al5,al4...a0 Биты адреса назначения (X) _ Содержимое элемента X ((X)) (X)[M] • Содержимое по адресу, хранящемуся в элементе X Разряд М элемента X (X)[MI-M2] Группа разрядов Ml-М2 элемента X + * / AND OR XOR /X Операции: сложения вычитания умножения деления логического умножения (операция И) логического сложения (операция ИЛИ) сложения по модулю 2 (операция "Исключающее ИЛИ") инверсия элемента X В АЛУ производятся действия над целыми числами без знака. В двухопе- 56
рандных операциях: сложение (ADD), сложение с переносом (ADDC) и вычи- тание с заёмом (SUBB) аккумулятор является первым операндом и принимает результат операции. Вторым операндом может быть рабочий регистр выбран- ного банка рабочих регистров, регистр внутренней памяти данных с косвенно- регистровой и прямой адресацией или байт непосредственных данных. Указан- ные операции влияют на флаги: переполнения, переноса, промежуточного пе- реноса и флаг четности в слове состояния процессора (PSW). Использование разряда переноса позволяет многократно повысить точ- ность при операциях сложения (ADDC) и вычитания (SUBB). Выполнение операций сложения и вычитания с учетом знака может быть осуществлено с помощью программного управления флагом переполнения (OV) регистра PSW. Флаг промежуточного переноса (АС) обеспечивает выпол- нение арифметических операций в двоично-десятичном коде. Операции инкрементирования и декрементирования на флаги не влияют. Операции сравнения не влияют ни на операнд назначения, ни на операнд источника, но они влияют на флаг переноса. Существуют три арифметические операции, которые выполняются толь- ко на аккумуляторе: две команды проверки содержимого аккумулятора A (JZ, JNZ), и команда десятичной коррекции при сложении двоично-десятичных ко- дов. При операции умножения содержимое аккумулятора А умножается на содержимое регистра В и результат размещается следующим образом: млад- ший байт в регистре А, старший - в регистре В В случае выполнения операции деления целое от деления помещается в аккумулятор А, остаток от деления - в регистр В. Логические команды с байтовыми переменными. Система команд ОМЭВМ позволяет реализовать логические операции: "И", "ИЛИ", "ИСКЛЮ- ЧАЮЩЕЕ "ИЛИ" на регистре-аккумуляторе (А) и байте-источнике. Вторым операндом (байтом-источником) при этом может быть рабочий регистр в вы- бранном банке рабочих регистров; регистр внутреннего ОЗУ, адресуемый с по- мощью косвенно-регистровой адресации; прямо адресуемые ячейки внутренне- го ОЗУ и регистры специальных функций; непосредственная величина. Указанные логические операции могут быть реализованы на любо» пря- мо адресуемом регистре внутреннего ОЗУ или регистре спепиальных функций с использованием в качестве второго операнда содержимого аккумулятора А или непосредственных данных. Существуют логические операции, которые выполняются только на ак- кумуляторе: сброс и инвертирование всех восьми разрядов А; циклический сдвиг влево и вправо циклический сдвиг влево и вправо с учетом флага пере- носа; обмен местами старшей и младшей тетрад внутри аккумулятора. Команды передачи данных. Таблицы символов (кодов), зашитые в ПЗУ программы, могут быть выбраны с помощью команд передачи данных с ис- пользованием косвенной адресации. Байт константы может быть передан в ак- кумулятор из ячейки памяти программ, адресуемой суммой базового регистра 57
(PC или DPTR) и индексного регистра (содержимого А). Это обеспечивает, на- пример, удобное средство реализации алгоритма преобразования кода ASCII в семисегментный код. Любая ячейка 256-байтового блока внешнего ОЗУ данных может быть выбрана с использованием косвенно-регистровой адресации через регистры указатели R0 или R1 (выбранного банка рабочих регистров). Ячейка внутри адресного пространства 64 Кбайт внешнего ОЗУ также может быть выбрана с использованием косвенно-регистровой адресации через регистр-указатель данных DPTR. Команды передачи между прямо адресуемыми регистрами позволяют за- носить величину из порта в ячейку внутреннего ОЗУ без использования рабо- чих регистров или аккумулятора. В логическом процессоре любой прямо адресуемый бит может быть по- мещен Ё бит переноса и наоборот. Содержимое аккумулятора может быть обменено с содержимым рабочих регистров (выбранного банка) и с содержимым адресуемых с помощью косвен- но-регистровой адресации ячеек внутреннего ОЗУ, а также с содержимым прямо адресуемых ячеек внутреннего ОЗУ и с содержимым регистров специ- ального назначения. Младшая тетрада (разряды 3-0) содержимого аккумулятора может быть обменяна с младшей тетрадой содержимого ячеек внутреннего ОЗУ, выбирае- мых с помощью косвенно-регистровой адресации. Команды ветвления и передачи управления. Адресное пространство памяти программ ОМЭВМ не имеет страничной организации, что позволяет свободно перемещать фрагменты программы внутри адресного пространства, при этом не требуется перезасылка (изменение) номера страницы. Перемещение отдельных фрагментов программы обеспечивает возмож- ность использования перемещаемых программных модулей различными про- граммами. Команды 16-разрядных переходов и вызовов подпрограмм позволяют осуществлять переход в любую точку адресного пространства памяти программ объемом 64 Кбайт. Команды 11-разрядных переходов и вызовов подпрограмм обеспечивают переходы внутри программного модуля емкостью 2 Кбайт. В системе команд имеются команды условных и безусловных переходов относительно начально- го адреса следующей команды в пределах от (РС)-128 до (РС)+127. Команды проверки отдельных разрядов позволяют осуществлять условные переходы по состоянию "0" или "1" прямо адресуемых битов. Команды проверки содержи- мого аккумулятора (на ноль/не ноль) позволяют осуществлять условные пере- ходы по содержимому А. Косвенно-регистровые переходы в системе команд ОМЭВМ обеспечива- ют ветвление относительно базового регистра (содержимого DPTR или PC) со смещением, находящимся в аккумуляторе А. 58
Команды битового процессора. Битовый процессор является частью ар- хитектуры ОМЭВМ семейства MCS-51 и его можно рассматривать как незави- симый процессор побитовой обработки. Битовый процессор выполняет свой набор команд, имеет свое побитово адресуемое ОЗУ и свой ввод-вывод. Команды, оперирующие с битами, обеспечивают прямую адресацию 128 битов (0-127) в шестнадцати ячейках внутреннего ОЗУ (ячейки с адресами 20H-2FFI) и прямую побитовую адресацию регистров специального назначе- ния, адреса которых кратны восьми: Р0(80Н), TCON(88H), Р1(90Н), SCON(98H), Р2(А0Н), 1Е(А8Н), РЗ(В0Н), 1Р(В811), PSW(DOH), A(E0H), B(FOH). Каждый из отдельно адресуемых битов может быть установлен в "1”, сброшен в "0", инвертирован, проверен. Могут быть реализованы переходы: ес- ли бит установлен: если бит не установлен, переход, если бит установлен, со сбросом этого бита: бит может быть перезаписан в (из) разряда переноса. Меж- ду любым прямо адресуемым бигом и флагом переноса могут быть произведе- ны логические операции "И", "ИЛИ", где результат заносится в разряд флага переноса. Команды побитовой обработки обеспечивают реализацию сложных функций комбинаторной логики и оптимизацию программ пользователя. 6.4 Способы адресации операндов Существуют след ующие способы адресации операндов-источников: - регистровая адресация; - прямая адресация: - косвенно-регистровая адресация; - непосредственная адресация: - косвенная адресация по сумме базового и индексного регистра. Первые три способа используются также для адресации операнда назна- чения Указанные пять способов адресации, используемые в различных сочета- ниях, обеспечивают 21 режим адресации. Многие команды содержат поля: “приемник", "источник", которые определяют тип данных, метод адресации и участвующие операнды. Для команд, не выполняющих операции перезаписи, операнд назначения является и операндом-источником. Большое количество команд включает операнды, расположенные во внутреннем ОЗУ данных ОМЭВМ. Выбор адресною пространства памяти про- грамм или внешней памяти данных в качестве второго операнда определяется командной мнемоникой (если только второй операнд не является непосредст- венной величиной) Адресуемая область внутреннего ОЗУ данных определяется способом ад- ресации и величиной адреса. Например, обращение к регистрам специальных функций может быть выполнено только с помощью прямой адресации 59
Регистровая адресация. Регистровая адресация используется для обра- щения к восьми регистрам выбранного банка (эти же регистры могут быть вы- браны с помощью прямой адресации и косвенно-регистровой адресации как обычные ячейки внутреннего ОЗУ данных). Регистровая адресация используется также для обращения к регистрам А, В, АВ (сдвоенном)' регистру), DPTR и к флату переноса С. Использование ре- гистровой адресации позволяет получать двухбайтовый эквивалент трехбайто- вых команд прямой адресации. ПРИМЕР: MOV A,Rn; CLR A; DEC Rn, ADD A,Rn; MOV DPTR,#datal6 и др. Прямая адресация. Прямая байтовая адресация используется для обра- щения к ячейкам внутренней памяти (ОЗУ) данных (0 - 127) и к регистрам спе- циальных функций. ПРИМЕР: MOV A.direct(MOV A.4FH); MOV direct.direct; IN direct; ADD A.direct и др. Прямая побитовая адресация используется для обращения к отдельно ад- ресуемым 128 битам, расположенным в ячейках с адресами 20H-2FH и к от- дельно адресуемым битам регистров специальных функций. ПРИМЕР: SETB BIT(SETB 1FH); CLR TFO, CLR С. Косвенно-регистровая адресация. Косвенно-регистровая адресация ис- пользуется для обращения к ячейкам внутреннего ОЗУ данных. В качестве ре- гистров-указателей используются регистры RO, R1 выбранного банка. В коман- дах PUSH и POP используется содержимое указателя стека (SP). Косвенно- регистровая адресация используется также для обращения к внешней памяти данных. В этом случае с помощью регистров-указателей R0 и R1 (выбранного банка рабочих регистров) выбирается ячейка из блока в 256 байт внешней па- мяти данных. 16-разрядный указатель данных (DPTR) может быть использован для обращения к любой ячейке адресного пространства внешней памяти дан- ных объемом до 64 Кбайт. ПРИМЕР: MOV A.@Ri (MOV A.@RO): INC @Ri: ADD A.@.Rr. XRL A.@Ri; MOVX @Ri.A; MOVX A,@DPTR. Непосредственная адресация. Непосредственная адресация позволяет выбрать из адресного пространства памяти программ константы, явно указан- ные в команде. ПРИМЕР: MOV Л,fldata (MOV A.fllFH); MOV DPTR.#datal6 (MOV DPTR,#5B4EH); ADD A.fldata; XRL A,fldata. Косвенно-регистровая адресация по сумме базового и индексного ре- гистров. Косвенно-регистровая адресация по сумме: базовый регистр плюс ин- дексный регистр (содержимое аккумулятора А) упрощает просмотр таблиц, за- шитых в памяти программ. Любой байт из таблицы может быть выбран по ад- ресу, определяемому суммой содержимого DPTR или PC и содержимого А. ПРИМЕР: MOVC A,@A+DPTR; MOVC А.@А+РС. JMP @A+DPTR. 60
6.5 Программная модель битового процессора Пригодность архитектуры каждого компьютера для конкретного класса задач определяется тем. насколько его система команд соответствует задачам, которые должны быть выполнены. Поэтому для дискретного управления в ре- альном масштабе времени наличие в системе команд операций непосредствен- но над бигами приводит к созданию более производительных систем и про- грамм обработки входной и выходной двоичной информации. С этой целью в ОМЭВМ семейства MCS-51 введены специальные средства, называемые бито- вым процессором, которые поддерживают прямые логические операции с от- дельными битами и операции их тестирования и позволяют использовать одно- битовые переменные в логических операциях. В связи с этим в систему команд ОМЭВМ семейства MCS-51 введены специальные инструкции для выполнения операции с битовыми переменными. Имеется 17 таких команд, которые перечислены в табл. 6.3. Таблица 6.3 - Команды битового процессора Мнемоническое обозначение Описание команды Число байтов Число циклов SETBC Установка флага переноса 1 1 SETB bit УСТАНОВКА БИТА 2 1 CLRC Сброс флага переноса 1 1 CLR bit Сброс бита 2 1 CPLC Инверсия флага переноса 1 1 CPL bit Инверсия бита 2 1 MOV C, bit Пересылка бита во флаг переноса 2 1 MOV bitC Пересылка флага переноса в бит 2 2 ANL C, bit "Логическое И” бита и флага переноса 2 2 ANL. C, /bit "Логическое И" инверсии бита и флага переноса 2 2 ORL C. bit "Логическое ИЛИ" бета и флага переноса 2 2 ORL C,/bit "Логическое ИЛИ" инверсии бита и флага переноса 2 2 JC re!8 Переход если флаг переноса установлен 2 JNC re!8 Переход, если флаг переноса сброшен 2 2 JB bitrel8 Переход если бит установлен 3 О JNB bitre!8 Переход если бит сброшен 3 2 JBC bitre!8 Переход, если бит установлен, и сброс этого бита . 3 2 ОБОЗНА ЧЕНИЯ: С флаг переноса; bit 128 программно-доступных битов, любой 1'0 вывод, бит управления или состоя- ния: Tiit - 128 программно-доступных битов, любой I/O вывод, бит управления или со- стояния, взятые с инверсией; ге!8- байт относительного смещения (условный переход осуществляется в диапазоне от -128 до + 127 байтов относительно адреса первого байта следующей команды). Эти команды в зависимости от двух- или трехбайтные Те из них. имеют однобайтный код или код. за выполняемой функции могут быть одно-, которые оперируют с флагом переноса, которым следует байт смещения, исполь- 61
дующийся для вычисления адреса условного перехода (.рис. 6.4.а). В более обобщенных командах битовых операций после кода добавляется байт адреса прямоадресуемого бига, образуя двух- или трехбайтные команды (рис 6.4.6). На рис. 6 4 для справки приведены коды этих команд. С помощью указанных команд можно обращаться непосредственно к 128 битам внутреннего ОЗУ и к 83 битам одиннадцати восьмиразрядных регистров ОМЭВМ. Код команды: | Код команды: SETBC 11010011В (D3H) CLRC 11000011В (СЗН) CPLC 10110011В(ВЗН) Код команды Смещение JC <ге18> 01000000В (40Н) ‘ JNC <ге18> 01010000В (50Н) а) Команды проверки и управления флагом переноса Код команды Адрес бита Код команды: SETB <bit> 11010010B (D2H) CLR <bit> 11000010B (C2H) CPL <bit> 10110010В (B2H) MOV С, <bit> 10100010B (A2H) MOV <bit>. C 10010010B (92H) ANLC, <bit> 10000010B (82H) ' ANLC. </bit> 10110000B (BOH) ORLC, <bit> 01110010B(72H) ORLC, <bit> 10100000B (A0H) Код команды Адрес бита 1 Смещение JB <bit>. <ге18> 00100000B (20H) JNB <bit>, 00010000В (ЮН) 00110000B(30H) JBC <bit>, <rel8> OOOIOOOOB(IOH) б) Команды проверки и операций с битами Рисунок 6.4 — Форматы команд операций над битами В зависимости от значения байта адреса прямо адресуемый бит выбира- ется из двух групп битов. Значения адреса от О (ООН) до 127 (7FH) определяют биты в 1б-байтном блоке внутреннего ОЗУ между адресами 20Н и 2FH (см. рис.6.5а). Они пронумерованы последовательно от младшего бита младшего байта к старшему биту старшего байта. Адреса битов от 128 (80Н) до 255 (0FFH) соответствуют битам регистров специальных функций. Адреса этих битов вычисляются иначе, чем адреса ячеек ОЗУ: пять старших битов адреса совпадают с собственными адресами регистров, а три младших бита адреса идентифицируют позицию бита в пределах регистра (см. рис.6.56). Хотя MCS-51 имеет 20 регистров специальных функций, побитовый дос- туп обеспечен только для 11 (PSW, АСС, В, РО, Pl, Р2, РЗ, TCON, SCON, IE, IP). У 6 из них (PSW, РЗ, TCON, SCON, IE, IP) разряды имеют собственные символические имена (рис.б.б). 62
Команды общего назначения, адресующиеся непосредственно к битам, могут обращаться к ним (в том числе и к биту переноса), используя соответст- вующую мнемонику: CY, AC, F0 и i д. К битам всех 11 регистров также можно обратиться, используя соответ- ствующее позиционное обозначение PSW. I, АСС.2, В.З, Р0.4 и т.д. Регистр АСС (аккумулятор) и регистр В относятся к байтовой арифмети- ке, но их отдельные биты могут использоваться в программе в качестве произ- вольных 16 флагов. В сумме со 128 ячейками ОЗУ это дает 144 битовые ячейки общего назначения для хранения переменных или программных флагов. Адрес Адреса Обозначение Адрес Адреса битов Байта ОЗУ 7 0 7FH 2FH 7F 7Е 7D 7С 7В 7А 79 78 2ЕН 77 76 75 74 73 72 71 77 2DH 6F 6Е 6D 6С 6В 6А 69 68 2СН 67 66 65 64 63 62 61 66 2ВН 5F 5Е 5D 5С 5В 5А 59 58 2АН 57 56 55 54 53 52 51 55 29Н 4F 4Е 4D 4С 4В 4А 49 48 26Н 47 46 45 44 43 42 41 44 27Н 3F ЗЕ 30 ЗС ЗВ ЗА 39 38 26Н 37 36 35 34 33 32 31 33 25Н 2F 2Е 2D 2С 2В 2А 29 28 24Н 27 26 25 24 23 22 21 22 23Н IF 1Е 1D IC 1В 1А 19 18 22Н 17 16 15 14 13 12 11 11 21Н OF 0Е 0D ОС ОВ 0А 09 08 20Н 07 06 05 04 03 02 01 00 1FH 18Н БанкЗ 17Н ЮН Банк 2 0FH 08Н Банк 1 07Н 00 БанкО а) Адреса битов ОЗУ регистра 7 0FFH 0F0H ОЕОН 0D0H 0В8Н ОВОН 0А8Н ОАОН 98Н 90Н 88Н 80Н битов регистра О F7 | F6 [ F5 | F4 I F3 | F2 | FI | F0 Е7 | Е6 ! Е5 [ Е4 | F.3 | Е2 | E l | ЕО D7 |Р6 | D5] D41 D3 | D2 |D1 | DO - | | - | ВС | ВВ |ВА| В9 | В8 В7 | В6 | В5 | В41ВЭ | В2 | Bl 1 ВО AF| - I [АС|АВ|АА|А9| А8 А7 | А6 | А5 | А4 | АЗ | А2 | А1 | АО 9F | 9Е | 90 | 9С | 9В 19А | 99 | 98 97 | 96 1 95 J 94 | 93 | 92 | 91 | 90 8F | 8Е | 80~[~8С | 8В | 8А | 89 | 88 87 | 86 | 85 | 84 | 83 | 82 | 81 | 80 В АСС (Ак.) PSW IP (Рет. при- орит. прер.) РЗ IP (Per. разр. прорыв.) Р2 SCON (Упр. посл.п.) Р1 TCON (Per. упр) РО б) Адреса битов РСФ Рисунок 6.5 - Адреса прямо адресуемых битов Все 32 вывода портов РО-РЗ могуч индивидуально адресоваться как вход, выход или вход/выход в лк,бой комбинации Любой вывод может служить про- 63
граммно реализуемым стробом, тестовым входом или последовательным кана- лом ввода/вывода. Для обработки битов регистров ОЗУ. не имеющих побитового доступа, могут быть использованы логические операции с байтами Регистр слова состояния программы PSW содержит биты флагов и со- стояния процессора, включая флаг переноса. Операции обработки байтов, воз- действуя на регистр PSW, могут таким образом влиять и на бит переноса. Регистр PSW | CY | АС | F0 | RS1 | RS0 | Р | - | Р~~| ____________________Регистр РЗ_____________________ | RD | WR | Т1 | ТО | INT1 | INTO | TxD | RxD | Регистр TCON | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | ГГО~| ____________________Регистр SCON___________________ | SM0 | SM1 | SM2 | REN | ТВ | RB | TI | RI | ___________________ Регистр IE _____________ | ЕА | - | - | ES | ЕТ1 | ЕХ1 | ЕТО | ЕХ0~| ___________________ Регистр IP ____________________ | - | - | - | PS | РТ1 | PX1 | PTO | PX0~~| PSW - регистр слова состояния программы; РЗ - регистр порта ввода/вывода 3 (альтернативные функции); TCON - регистр управления таймером/счетчиком; SCON - регистр управления последовательным портом; IE - регистр разрешения прерываний; IP - регистр приоритетов прерываний. Рисунок 6.6 - Формат регистров специальных функций, имеющих символические имена прямо адресуемых битов В языке ассемблера MCS-51, как показано в табл.б.З, адрес бита указыва- ется одним из трех способов: числом или выражением, соответствующим пря- мому адресу бита; названием или адресом регистра, содержащего данный бит, и позицией бита в регистре (0-7), разделенными точкой, для определенных битов (рис.6.6) - указанием символического имени. Биты также могут обозначаться произвольными именами директивой ассемблера "ВГГ". Например, 5-й бит ре- гистра PSW может быть очищен любой из четырех команд: 64
USR_FLG BIT PSW 5 ; Описание символа пользователя CLR 0D5H . Абсолютная адресация Cl.R PSW.5 : Использование точечного операгора CLR FO ; Использование собственного имени бита CLR USR_FLG ; Символ пользователя. 6.6 Применение битового процессора Программная реализация последовательного порта. ОМЭВМ семей- ства MCS-5I могут программно принимать и передавать последовательные данные с использованием системы команд битового процессора [3]. Поскольку любой вывод порта может служить последовательным входом или выходом, одновременно можно организовать несколько последовательных линий связи. На рис. 6.7 показаны алгоритмы приема и передачи байтов данных. Про- грамма будет обращаться к этому алгоритму 8 раз, синхронизируясь старт- битом, тактовым сигналом, программной задержкой или прерыванием от тай- мера. Данные принимаются путем опроса входного вывода, присвоения бигу переноса состояния этого вывода, сдвига бита переноса в буфер данных и со- хранения полученного значения в ОЗУ. Передача происходит путем сдвига со- держимого буфера передаваемого байга через перенос и выдачи состояния фла- га переноса на выходной вывод. ( Вв°д ) Загрузить из буфера Сдвигать через перенос Запомнить- в буфере б) Передача а) Прием Рисунок 6.7 - Алгоритмы последовательного порта ввода/вывода На рис. 6.8 приведены программы, реализующие показанные на рис. 6.7 алгоритмы приема и передачи для трех различных микропроцессоров: 8085, 8048 и 8051. Программная реализация последовательного порта на MCS-51 наиболее эффективна. Представленные оценочные характеристики подтвер- ждают эффективность реализации последовательного порта на базе MCS-51. 65
Решение уравнений комбинаторной логики. На рис. 6.9 показана реа- лизация на ТТЛ-элементах функции шести переменных от U до Z, которая яв- ляется решением уравнения Q = (U • (V+W))+(X Y)+Z. Уравнения такого рода решаются с помощью карт Карно или аппарата алгебры булевой логики. Для сравнения выполним эту функцию тремя спосо- бами, ограничиваясь тремя подмножествами системы команд MCS-51. Предположим, что U и V являются входными выводами некоторого пор- та, W и X - биты состояния двух периферийных контроллеров, a Y и Z - про- граммные флаги, ранее установленные в программе. Окончательный результат должен выдаваться на выходной вывод порта. Первые два способа решения основываются на алгоритме, показанном на рис. 6.10, который может быть выполнен практически любым микропроцес- сором. Выполнение программы идет с проверками и ветвлением, до тех пор пока не будет получен результат, который выдается на порт. 8085 8048 8051 IN SERPORT MOVC,SERPIN ANIMASK CLRC JZ.LO JNT0L0 СМС CPLC L0: LXI HL.SERBUF L0: MOV R0.#SERBUF MOVA,M MOVA,@RO MOVASERBUF RR RRCA RRCA MOVM.A MOV @R0,A MOV SERBUF,A 8 команд 7 команд 4 команды Мбайт 9 байт 7 байт 56 состояний 9 циклов 4 цикла 19 мкс 22,5 мкс 4 мкс а) подпрограмма ввода 66
8085 8048 8051 LXIHL,SERBUF MOV A.M RR MOVM.A INSERPORT JCHl LO: ANI NOT MASK JMPCNT H1:ORIMASK CNT: OUT SERPORT MOV R0.#SERBUF MOVA,@RO RRCA MOV @R0,A JCHI ANL SERPRT,#NOi MASK JMPCNT Hl: ORL SERPRT.fiMASK CNT: MOVASERBUF RRCA MOV SERBUF.A MOV SERPIN.C 10 команд 8 команд 4 команды 20 байт 13 байт 7 байт 72 состояния И циклов 5 циклов 24 мкс 27,5 мкс 5 мкс б) подпрограмма вывода Рисунок 6.8 — Подпрограммы последовательного ввода/вывода В первом варианте решения (пример 6.1) не используются команды бито- вого процессора, хотя используется мнемоника MCS-51. Другие процессоры могут выполнить аналогичные действия, используя собственную мнемонику типа INPUT, OUTPUT, LOAD, STORE и т.д. Благодаря возможностям проверки битов одна команда MCS51 может за- менить последовательность "переслать/маскировать/условно перейти". Это по- зволяет сократить программу (пример 6.2). Для удобства каждой входной пере- менной присвоено символическое имя 67
Q=(U‘(V+W))+(X*Y)+Z Рисунок 6.9 - Аппаратное решение Рисунок 6.10 - Программное решение логической функции логической функции Колее красивое решение (пример 6.3) получается с применением команд битового процессора, благодаря чему удается написать программу без команд условного перехода. При завершении программы полученный результат при- сваивается флагу переноса, который копируется на выходной вывод. Таким образом ОМЭВМ семейства MCS-51 могут моделировать любую комбинационную схему с N-числом входов с помощью самое большее N+1 строк исходной программы: по одной строке на каждый вход и еше одна на со- хранение результата. Возможное ограничение при моделировании большого числа входов и выходов определяется длиной программы и фиксированным числом выводов портов. Пример 6.1. Использование команд с байтовыми операндами ;BFUNC1 вычисляет логическую функцию 6 переменных путем загрузки ; байта маскирования соответствующих битов в аккумуляторе ; и выполнения условных переходов. Байты и маски соответ- ; ствуют адресам и битовым позициям. (Используется для ; процессоров, ориентированных на работу с байтами) OUTBUF DATA 22Н ; карта состояния выходов TESTV: MOV 68
ANL A, onrio] П0В JNZ TESTU MOV A,TOoN .ANL -A, # ’ ’ 1: • 0 1 v 0 Б JZ TEST’-. TESTU: MOV A, Pl ANL A,#00000010B JNZ SETQ TESTX: MOV A,TCON ANL A,#000010003 JNZ TESTZ MOV A, 2 OH ANL A,#00000001B JZ SETQ TESTZ: MOV A,21H ANL A,#00000010B JZ SETQ CLRQZ: MOV A, O’JTBUF ANL A, JMP OUTQ SETQ: MOV A, CUTBUF ORL A,#00001000B OUTQ: MOV OUTBUF, A MOV P3,A Пример 6.2. Использование команд проверки битов ; BFUNC2 вычисляет логическую функцию 6 переменных путем прямого • ; опроса каждого бита. Биты обозначены в соответствии с ; символами, использованными в алгоритме (Используется ; возможность проверки битов) U BIT Pl.l V BIT P2.2 w BIT TFO X BIT IE1 Y BIT 20H.0 z BIT 21H.1 Q BIT P3.3 TESTJJ: JB V, TESTJJ JNB W, TEST X - TESTJJ: JB U,SET Q TEST_X: JNB X,TEST_Z JNB Y,SET_Q TEST_Z: JNB Z,SET_Q CLR_Q: CLR Q JMP NXTTST SET_Q: SETB Q NXTTST: ; продолжение программы 69
Пример 6 3. Использование битового процессора / Г,Я'1'ДЗ Е ' 3 --=T JET t.hl- -тей 0 lV T O' <.r- j?; •7~< li' “ | Г* ьз'.'ганием • mov c,v" ORL c,w / Ьы:-;од вентиля ИЛИ AML c,u ; Ьыхс-д верхнего вентиля И М(%' OF, C ; Сохранение промежуточного состояния MOV C, X ANL C,/Y ; Выгод нижнего вентиля И ORL C,0F ; Использование ранее вычисленного значения OftL c,/z ; Использование последней входной г тереме иной MOV c,/z ; Вывод результата В разделе 7 пособия рассмотрены практические примеры и их реализация на основе системы команд и программной модели ОМЭВМ семейства MCS-51. Все приведенные решения задач имеют программную совместимость с после- дующими модификациями 8-разрядных микроконтроллеров фирмы INTEL, включая MCS-251. 7 ОБРАБОТКА СИГНАЛОВ НА ОСНОВЕ MCS-51 В данном разделе рассматриваются практические примеры и их про- граммная реализация на языке ассемблера для микроконтроллера семейства MCS-51 (МК51). При рассмотрении решения задач, связанных с генерацией временных интервалов и работой последовательного порта предполагается использование МК с частотой задающего генератора равной 12 МГц [4]. 7.1 Использование команд передачи данных Пример 7.1. Передать содержимое буфера последовательного адаптера в резидентную память данных по косвенному адресу в R0: MOV 0RO,£BUF /передача принятого по последовательному каналу ; байта в Й1Д. Пример 7.2. Записать в ячейки РПД с адресами 39 и 40 число FA1BH: LOAD: MOV 3 9H,#0FAH MOV 40Н,#1ВН Пример 7.3. Загрузить в указатель данных начальный адрес 4300Н масси- ва данных, расположенного во внешней памяти данных: MOV DPTR,#4300H ;загрузка начального значения указателя данных. Пример 7.4. Загрузить управляющее слово в регистр управления тайме- ром: MOV TCON,#000801016 /разрешение внешних прерываний по низкому /уровню сигнала. 70
Пример 7.5. Сбросить все флажки пользователя (биты) в резидентной об- ласти памяти от 20Н до 2FH: MOV MOV EC,#20H Rl,#0FH ; заданный на /альный адрес области памяти ; загрузить счетчик (длина области памяти) i,< ЗЕ: MOV @R0,#0 ; снять один байт (н флажков) INC R0 ; переход к следующему байту DJNZ R1,LOOP ; цикл, если не все флажки сброшены Пример 7.6. Передать управление по метке L0, если счетчик 0 достиг зна- чения 128: MOV A,TL0 /передача содержимого счетчика в аккумулятор JB A.7,LC /перейти на L0, если А.7=1 L0: ; продолжение программы Пример 7.7. Запомнить во внешней памяти данных содержимое регистров банка 0. Начальный адрес ВПД - 2000Н: MOV PSW,#00010000В; выбор банка регистров 1 MOV MOV MOV LOOP: MOV MOVX INC INC DJNZ RO, #8 ; счетчик <— 8 DPTR, #2000H ; определение начального адреса ВПД Rl,#0 ; определение начального адреса РГЩ A, 0R1 ; (А) «— (регистр) @DPTR,A ; передача из аккумулятора в ВПД R1 ; переход к следующему регистру DPTR ; приращение указателя адреса RO,LOOP ; RO=RO-1, если R0>0 то повторить цикл Пример 7.8. Обращение к памяти программ, где сохраняется готовая таб- лица значений. Для этого используется специальная команда MOVC. Напри- мер: программа для выбора значений функции синуса из таблицы с точностью 0,4 % и дискретом 1°. Начальный параметр для подпрограммы есть значения угла х, которое находится в аккумуляторе. Данная программа работает без ука- зателя данных DPTR. Инкремент аккумулятора перед обращением к таблице необходим в связи с использованием однобайтной команды возврата. Таблица синусов занимает в памяти 90 байтов. ; вычисление sin(х) по таблице значений: вход (А) <—(х), хе (0,89°); ; выход (А) «- дробная часть значения синуса SIN: INC А ; инкремент аккумулятора MOVC А,@А+РС ; загрузка значения синуса из таблицы RET ; возвращение ; таблица синусов SINUS: DB ОООООООСВ ; SIN (0)=0 DB 00000100В ; SIN (1)=0,017 DB 00001001В ; SIN (2)=0,035 DB 11111111Е ; SIN (891=0, 999 Пример 7.9. Операции со стеком и организация прерываний. Механизм доступа к стеку MCS-51: перед записью в стек содержимое регистра-указателя стека SP инкрементируется, а после чтения данных из стека декрементируется. После начальной установки ОМЭВМ в SP заносится начальное значение 07Н. Для переопределения начального значения SP можно использовать коман- ду MOV SP, #data!6. 71
Таким образом, стек может быть расположен в любом месте РПД. Стек используется для организации обращения к подпрограммам и при обработке прерываний Кроме того, может использоваться для временного хранения зна- чении регистров специальных функции Подпрограмма обработки прерываний. ORG 3 ; задание адреса Лектора прерываний SUBINC ; переход на подпрограмму обработки ORG ЗОН SUBINO: FUSE PSW ; сохранение в стеке P3W ptJSH A ; сохранение в. стеке аккумулятора °, PUSH в ; сохранение в стеке дополнения-аккумулятора В PUSH DPL ; сохранение в стеке DPTR PUSH DPH ; сохранение в стеке DPTR MOV PSW,#00001000В ; выбор другого банка регистров !1) . обработка прерываний POP DPH ; восстановление DPTR POP DPL ; восстановление DPTR POP E ; восстановление В POP A ; восстановление аккумулятора POP PSW ; восстановление PSW и банка регистров О RETI ; возвращение в основную программу Если SP=1FH, размещение регистров в стеке после входа в подпрограмму обработки будет таким, как показано на рис. 7.1. 7FH 26Н DPH <-(SP) 25Н DPL 24Н В 23Н А 22Н PSW 21Н РСН Указатель 20Н. PCL ч—(счетчик) команд PC 1FH ООН Рисунок 7.1- Распределение памяти при вызове подпрограммы Пример 7.10. Передать управление одной из восьми подпрограмм при по- явлении нулевого уровня на соответствующем входе порта 1 Высший приори- тет входа РЕЗ. 72
ORL P1,#FFH ; настройка Pl на ввод L1: MOV А, Pl ; ввод данных из порта Ть ч i инверсия а к кумул ятор а JZ L1 ожидание появления первого нуля JNB E1.3,c’JBRl ; переход на первую подпрограмму JNB P1.4,SUBR2 ; переход на вторую подпрограмму JNB P1.2,SUBR8 /переход на восы^/ю подпрограмму Порядок приоритетов определяется, порядком проверки нулевого уровня на соответствующем входе и может быть любым. 7.2 Арифметические операции в MCS-51 Пример 7.11. Сложить десятичные двоично-кодированные числа, разме- щенные в А и R5: ADD A,R5 DA А ; двоичное сложение ; десятичная коррекция результата Пример 7.12. Вычитание байтов. Данная операция может выполняться двумя способами: 1)перевести уменьшаемое как отрицательное в дополнитель- ный код и выполнить операцию добавления; 2)перевести уменьшаемое в обрат- ный код и произвести инверсию суммы. Например, из данных в А необходимо отнять данные регистра R3. Вычи- тание выполняем по алгоритму: " А<— A +R3 CPL А ADD A, R3 CPL А ; инверсия аккумулятора ; добавление байтов ; получение разности Пример 7.13. Сложить два двоичных многобайтных числа. Оба слагаемых находятся в РПД, начиная из младшего байта. Начальный адрес слагаемых на- ходится в R0 и R1, формат в R2. Результат размещают на месте первого слагае- мого. CLR С LOOP: MOV A, @R0 ; сбрасывание переноса ; загрузка в аккумулятор ; бегущего байта первого слагаемого ADDC A, @R1 MOV @R0,A INC RC INC R1 DJNZ R2,LOOP ; добавление байтов с учетом переноса ; размещение байта результата ; смещение указателя ; смещение указателя ; цикл, если не все байты просуммированы Время суммирования составляет (1+7N) мкс, где N - длина в байтах. Пример 7.14. Перемножить число в аккумуляторе на число 2х, где х < 8 - значение в R6. Умножение на 2 заменяется арифметическим сдвигом аккумуля- тора и R0: MOV R0,#0 CLR С ; сброс R0 ; сброс переноса 73
LI: n ; сдвиг ь.’-в 1 -разрядного лгмн< . у в Л VW XGH .b.,F0 Пример 7.15. Умножение (MUL). Выполняется для двух беззнаковых чи- сел, которые находятся в регистрах А и В После выполнения операции млад- ший байт произведения размещается в А, а старший - в В. Умножение числа любого формата на константу' 168. Число размещено в РПД, адрес младшего байта находится в R0. Формат числа в байтах задан в R2. MOV A, #00H ; сброс аккумулятора A LOOP: ADD A,6R0 ; загрузка множимого MOV B,#163D ; загрузка множителя MUL AB ; перемножение MOV @R0,A ; запись младшего байта частичного произведения INC RO ; прирост адреса MOV A, В ; пересылка старшего байта частичного произведения в аккумулятор А ZCH A,@RC ; предшествующее формирование очередного байта произведения JNZ R2,LOOP ; цикл, если не все байты начального ; числа перемноженные на константу. Полученный результат находится на месте начального числа и занимает в РПД на 1 байт больше. Время вычисления произведения составляет (1+13N) мкс, где N - длина числа в байтах. Пример 716 Деление (DIV) - делится содержимое аккумулятора на зна- чение в В После деления в А находится целая часть, в В - остаток. Команда может быть использована для быстрого преобразования двоичного числа в дво- ично-десятичный формат. Программа переводит двоичное число, находящееся в аккумуляторе, в двоично-десятичный код, который может быть трехразрядным (в десятичной системе счисления). В этом случае число сотен будет размещено в R0, десятки и единицы - соответственно в А и В. MOV B,#100D DIV АВ MOV RO, А XCH А, В MOV В, НОГ1 DIV АБ SWAP А ADD А, В ; (В) <— 100 для вычисления числа сотен числе ; в А е число сотен (то есть старшая цифра) ; пересылка в R0 старшей цифры ;пересылка остатка от деления входного числа в ° • (В; <—10 (OnpS Д 951Л 9Т С Я 4I4C5IС Д 9 СЯТКО В 9 т 9' ; в А - число десятков, В - число единиц ; размещение числа десятков в старшей тетраде А ; суммирование остатка (числа единиц), ; аккумулятор сохраняет две младших цифры. Время преобразования - 16 мкс. Пример 7.17. Сравнение двух четырехразрядных чисел, которые подают- ся на входы порга Р2. 74
Сигнал равенства выводится на Р1.1, большее - Р1.2, меньшее — РЕЗ, раз- решение сравнения подается на Р1.0. AIIL Pi,#11110ПО1В /сброс все.’. сравнений L0: JNB P1.0,L0 /ожидание разрешения MOV A, P2 ANL A., #F0H ; выделение первого числа SWAP A MOV В,A ;запоминание первого числа CLR С /сброс переноса MOV А,Р2 ANL A,#0FH /выделение второго числа SUBB А,В /вычисление В JZ LR /переход, если А=В JC LL ; переход, если А<В SETB Р1.2 / результат А>В JMP EXIT LR: SETB Р1.1 ; результат А=В JMP EXIT LL: SETB Р1.3 ; результат А<В EXIT: / продолжение выполнения программы Аналогично выполняется сравнение чисел большей разрядности. Если необходимо сравнивать многобайтные числа, ло сравнение следует начинать со старших байтов. 7.3 Логические операции в MCS-51 Пример 7.18. Вывод управляющих сигналов из МК. Формирование статических сигналов используется для управления ис- полнительным механизмом по принципу "включен-выключен". При этом соот- ветствующие линии портов просто устанавливаются в 0 или 1. Если имеем группу исполнительных механизмов, то для их управления необходимо сформировать управляющее слово (УС), каждый бит которого - соответствующий управляющий сигнал. Для изменения УС достаточно выполнять логические операции над теми битами портов, которые необходимо изменить. Например: ANL - для сброса тех битов УС, какие заданные нулями ORL - для установки бит XRL - инверсия бит по времени Пример 7.19. Определение переполнений. При накоплении большого ко- личества слагаемых может возникнуть переполнение разрядной сетки. Для оп- ределения этого используют модифицированный дополнительный код, который отличается от обычного дополнительного введением дополнительного знаково- го разряда. При добавлении к слагаемых таких разрядов должно быть г = log2 к. Признаком переполнения служит отличие знаковых разрядов. Отметим, что использование г знаковых разрядов суживает диапазон изменения сигналов в 2Г раз. 75
Пример 7.20. Сбросить биты 0,2,4,6 порта 2: Ж1 £2,#101010106 ; сбрасывание бит 0,2,1,? порта 2 Пример 7.21. Установить биты О...3 из порга 1 м: . #00001111В ; 1Р1.0...21. С <- 1111 Можно также, записагь ORfc Pl, #0FH Пример 7.22. Выбрать нулевой регистровый банк: ANL PSW,#111С0111В ; сбрасывание бит RS0 и RS1 Пример 7.23. Проинвертировать биты порта Р1, которые отвечают еди- ничным битам в аккумуляторе. XRL Р1,А ; сумма по модулю два значений ; порта 1 и аккумулятора Пример 7.24. Проинвертировать биты 7,6,5,4 порта 0: XRL Р,#1111СС00В; сумма по модулю два значений ; порта 0 и константы Можно также записать XRL Р0, ftOFOH Пример 7 25. Проинвертировать биты 0...3 в аккумуляторе: XRL А,#0рН ; сумма по модулю два ; значения аккумулятора и константы Пример 7.26. Настроить биты 1,3,5,7 порта 1 на ввод: CRL Р1,#10101010В ; установление Pl.1, Pl.3, Pl.5, Р1.7 Пример 7.27. Маскировка данных при вводе. Ввести в регистр R3 инфор- мацию из линий 1,3,5,6,7 порта 1: MOV ANL MOV Пример 7.28. Выполнить логический сдвиг вправо двухбайтового числа, которое размещено в R5, А: ft, Р1 ; ввод байта с Р1 А, #1110101013 ; маскировка R3,A ; .передача в R3 SH1FTR: CLR С ; сбрасывание переноса CPL С ; установление переноса ХСН A,|R5 ; обмен байтами JNB А. 7, LI ; если R5.7=l, то снять флажок переноса CLR С RRC А ; сдвиг флажка переноса LI: ХСН A,Rb ; обмен RRC A ; сдвиг младшего байта Пример 7.29. Выполнить сдвиг влево двухбайтового числа, которое мещено в R5 и А: SHIFT L: RLC А ; сдвиг младшего байта ХСН A,R5 ; обмен А и R5 RLC А ; сдвиг старшего байта ХСН A,R5 ; обмен раз- Пример 7.30. Управление группой бит порта. В РИД находится массив распакованных десятичных цифр. Необходимо передать их внешнему устройству в соответствии с протоколом (рис.7.2). Для передачи 4-х бит данных используются младшие линии порта 1. Линии Р1.4 и Р1.5 используются как сигналы квитирования, то есть передачу сигналов на выход МК сопровождает стробирующий сигнал на линии Р1.4. Внешнее уст- 76
ройство, которое приняло данные, сообщает об этом сигналом на входе Р1.5. Биты Р1.6 и Р1.7 не должны изменять своих значений. Исходные данные программы: начальный адрес массива - (R0), длина массива -(R1). ORL Pl, #0')l iHJOOOB ; настройка ; Pl.5 на ввод LOOP: MOV A, @R0 ; загрузка байта ; ь аккумулятор ANL Pl,#11100000В ; сброс данный ; и строба ORL Р1,А ; выдача данных ORL Р1,#00010000В ;выпача строба WAIT: JNB Pl.5, WAIT ; ожидание ответа INC R0 ; продвижение ука- зателя адреса JNZ Rl, LOOP ; цикл, если не все данные переданные ОТВЕТ РГ5 СТРОБ Р1.4 Р1.О...Р1.3 Данные вывод строба вывод ответа Рисунок 7.2 - Протокол вывода данных 7.4 Битовые операции в MCS-51 Пример 7.31. Операция Исключающее ИЛИ используется очень часто для сравнения бит, или их сброса. В кодах битового процессора такой операции нет, но легко осуществляется наложение логической операции Исключающее ИЛИ на флажок переноса: JNB bit, LZ ; исключительное ИЛИ для флажка переноса CPL С ; инверсия флажка LZ: ; Продолжение программы Пример 7.32. Преобразовать байт в последовательный код и передать его через Р1.0, не воздействуя при этом на остальные разряды порта. Передачу вес- ти, начиная с младшего бита: MOV R7,#8D ; инициализация счетчика циклов LOOP: RRC А ; присвоение переноса значение бита А.О MOV Pl.О,С ; передача бита DJNZ R7,LOOP ; цикл, если не все биты переданы Время выполнения программы 41 мкс, время передачи - 5 мкс (скорость передачи - 200 кбит/с). Пример 7.33. Вычислить булеву функцию 3-х переменных Y=(X V)+W(X+V). Переменные X, V, W поступают на линии 2, 1, 0 порта 1; результат Y необходимо вывести на линию 3 порта 1. Для сохранения проме- жуточных значений использовать бит F0H. Y BIT Pl.3 ; спецификация бит порта 1 X BIT Pl.2 V BIT Pl.l W BIT P1.0 MOV c,x ; ввод X ANL c,/v ; X-V MOV F0,C ; запоминание результата в F0 MOV C,X ; ввод X 77
ORL C,V ANL C,W ORL C,FC :<+V W (X+V) ,;w '//-V; ' J (Z- V ' ?ыеза. Время выполнения программы 14 мкс. Пример 7.34. Организовать последовательную передачу данных из акку- мулятора на 0 вывод порта 2. Пересылку вести манчестерским кодом (каждый бит кодируется двумя интервалами: первый интервал имеет инверсию бита. второй - его прямое значение): MOV R0,#bD ; инициализация сч«ГЖка бит LOOP: PRC А ; (С)«-(сдвиг мл. бита из акк-ра в перенос; CPL С ; инверсия бита MOV Р2.0,С ; передача инверсии бита х CPL С ; восстановление бита NOP Г NOP ; выравнивание длины интервалов NOP г MOV P2.0,C ; передача прямого значения бита DJNZ RO,LOOP ; цикл, если счетчик не нулевой Передача начинается с младших битов. Продолжительность одного ин- тервала 6 машинных циклов (6 мкс), время передачи одного бита - 12 мкс, вре- мя передачи байта - 96 мкс (скорость передачи 83 кбит/с, или 10,4 кбайт/с). Пример 7.35. Пошаговый режим работы. Для его реализации необходимо: - запрограммировать одно из внешних прерываний (к примеру INTO) на активизацию по уровню; - в подпрограмме обработки прерывания ожидать последовательность «1»-«0» на входе INTO (вывод Р3.2), задаваемую, нанример, с помощью кнопки. В основной программе необходимо дописать следующее: SETB IE.0 ; разрешение прерывания уровня 0 CLR ICON.0 ; прерывания разрешены по нулевому уровню ... ; продолжение основной программы Подпрограмма обработки прерывания должна закончиться следующими командами: . . . ; подпрограмма обработки LI: JNB P3.2,L1 ; ожидание уровня 1 L2: JB P3.2,L2 ; ожидание уровня 0 RETI ; возвращение и выполнение одной I ►соманды основной программы, ; после чего снова происходит ; возвращение в подпрограмму. Пример 7.36. Обращение к медленным микросхемам внешней памяти. Программным путем можно задать необходимую длительность импульсов WR и RD . Например, если сигнал RD должен длиться 50 мкс, то это осуществляет- ся так. CLR Р3.7 ; RDC 78
MOV R3,#24D LO: DJNZ R3, LO SETB РЗЛ ; инициализация счетчика (2мкс) ; цикл (24*2мкс) • ; RD = 1 7.5 Взаимодействие МК с объектом управления Пример 7.37. Опрашивание двоичного датчика, например, конечного вы- ключателя. Ключ подключен к входу MCS-51: порт 1, разряд 3. ( WAITC ~) -—н I Вв°Д I | Анализ S~~| С Выход ) Рисунок 7.4 - Схема алгоритма опроса двоичного датчика ТТЛ-логика, оптрон, схема согласования уровней Рисунок 7.3 - Схема согласования двоичного датчика с MCS-51 WAITO: JNB Pl.С, WAITC ; ожидание размыкания датчика WAITC: JB Pl.3, WAITC ; ожидание замыкания датчика Пример 7.38. Опрашивание группы двоичных датчиков (аналогично на- хождению заданного кода или комбинации датчиков). WTCODE: MOV A,#10D ; загрузка в А эталонного кода 00001010В WAIT: CJNE A,Pl,WAIT ; если кодовая комбинация не совпала ; с заданной, то ждать EXIT: ; вывод Пример 7.39. При достижении значения параметра равного 135, передать управление на подпрограмму с меткой LABEL А, иначе LABEL В. MCV A, S135D ; загрузка значения параметра CJNE A,Pl, LABEL В ; сравнение и передача управления LABEL А: - . LABEL В: Пример 7.40. Зафиксировать импульс, поступающий на вход ОМЭВМ (Р1.3) и его окончание. WAITC: JB Pl.3,WAITC ; ожидание Pl.3=0 WAIT0: JNB P1.3,WATT0 ; ожидание Pl.3=1 Зафиксированный импульс имеет вид ~3_Г“ . Для импульса обратного вида -Г1— нужно поменять WAIT0 и WAITC местами. 79
Таблица 7.1 - Минимальная продолжительность сигнала, которую определяет МК__________________________________________________ Подключение датчи- ка к выводам Минимальная длительность импульса, мкс (отрицательного) (положительного) P1,P2, BUS/P0 10/2 12,5/2 Т0,Т1 5/2 5/2 ЗПР 10/2 5/2 Пример 7.41. Передать управление на метку TEST и установить Р3.7, если на ТО поступит 30 импульсов. MCV Rl,#30D ; загрузка числа импульсов L1: JB P3.4,L1 ; ожидание нуля L0: JNB P3.4, L2 ; ожидание единицы JMP LC L2: DJNZ R1,L1 ; повторить 30 раз JMP TEST TEST: SETB P3.7 ; установление бита Пример 7.42. Схема для фиксации короткого импульса: D-триггер .уста- навливается коротким импульсом, а сбрасывается программно, после опреде- ления наличия сигнала на входе ТО. Рисунок 7.5 - Схема фиксации коротких импульсов то Р2.0 МК51 Пример 7.43. Устранение дребезжания контактов. Дребезжание состоит в том, что благодаря упругим свойствам контактов возможен отрыв контактов, который приводит к переходному процессу. При этом сигнал может быть про- читан многократно как случайная последовательность нулей и единиц. Эго можно устранить с помощью триггера (рис. 7.6). Чаще всего с помощью MCS51 это делается программно так, как показа- но на рис.7.7 и рис.7.8. Рисунок 7.6 - Аппаратное устранение дребезга контактов 80
Рисунок 7.8 - Метод 2: временная задержка Рисунок.7.7 — Метод 1: подсчет заданного числа совпадений значений сигналов Реализация первого метода, количество совпадений задано в R3. DBNC: MOV R3,#3 ; инициализация счетчика DBNC1: JB P3.4,DBNC ; если контакт замкнутый, ; то начать отсчет опрашиваний ; сигнала сначала DJNZ R3,DBNC1 ; повторять, пока значение'в R3 ; не станет равным О JB P3.4,DBNC ; конечная проверка Временная задержка подбирается экспериментальное (1-10 мс) в зависи- мости от типа датчика. Пример 7.44. Формирование импульсных сигналов делается по принципу включен/выключен с необходимой временной задержкой: PULLS.-ON: ANL Р1, #11110111В ; выдача импульса в линию 3 порта 1 CALL DELAY ; временная задержка OFF: ORL Pl,#00001000В ; сброс Пример 7.45. Считывание данных из таймера. Для устранения возможных сбоев при считывании сначала читается старший байт, потом - младший, после чего подтверждается, что старший байт за это время не изменился. RDTIME: MOV А,ТН0 MOV RC,TL0 CJNE А, THO,RDTIME MOV R1,A RET Пример 7.46. Подсчет числа импульсов, например, радиодеталей, которые движутся по конвейеру, зафиксированных фотоэлементом (рис.7.9). MOV TMOD,#01000000В ; настройка ; счетчика 1 MOV ТН1,#00Н ;сброс счетчика WAITO: JB P3.4,WAIT0; ожидание включения Рисунок 7.9 - Схема подсчета числа радиодеталей 81
; транспортера SETB TCON. 6 ;запуск счетчика 1. WAITC: JNB Р3.4, WAITC ; ожидание ; отключения транспортера CLR TUCN.4„ ; остановка счетчика 1 MOV А.ТН1 ; А <— число деталей EXIT: ; выход Максимальное число радиодеталей - 255. Пример 7.47. Реализация функций времени на основе таймеров. В MCS-51 при частоте генератора тактовых импульсов 12 МГц тай- мер/счетчик изменяет свое значение с частотой 1 Мгц (в режиме таймера), или при поступлении сигнала от внешнего источника через счетный вход Т0,Т1 (в режиме счетчика). Если использовать таймер/счетчик в режиме 1 полного формата (16 бит), то получим задержки в границах (1 - 65536 мкс). Программа задержки на 50 мс в MCS-51, прерывание’разрешено. Органи- зация перехода к метке NEXT пр 1 переполнении Т/СО: овн TCON.4 ORG CLR RETI ORG MOV MOV MOV SETB SETB SETB NEXT: 1.0 ОН TMOD, TL0, ТНО, TCON.4 IE.1 PCON.O ; адреса вектора прерываний от Т/СО ; остановка Т/СО ; выход из подпрограммы обработки прерываний ; начальный адрес программы #01Н ; настройка Т/СО #LOW(NOT(50000)-1) ; загрузка таймера #HIGH(NOT(50000)-1) ; старт Т/СО ; разрешение прерываний от Т/СО ; перевод в режим холостого хода ; продолжение программы. Пример 7.48. Организация задержки программным путем: DELAY: MOV R2, X ; (R2)«—(X) COUNT: DJNZ R2,COUNT ; декремент R2 и цикл, если не нуль RET ; возвращение из подпрограммы Пример 7.49. Подпрограмма задержки на 50 мс, используя Т/СО, погреш- ность не превышает 2 мкс. DELAY: MOV TMOD,#00000001В ; настройка Т/СО MOV TH0, ((HIGH (NOT (50000-16)) MOV TL0,#LOW(NOT(50000-16)) SETB TCON.4 ; запуск T/CO JNB TCON.5,$ ; ожидание ANT TCON,#NOT(ЗОН) ; остановка T/Cv, сброс TFO RET ; возвращение из подпрограммы Пример 7.50. Подпрограмма задержки на 1 секунду. Погрешность не больше, чем 123 мкс. OS: MOV R3,(f20D ; счетчик циклов SI: ACALL DELAY ; задержка на 50 мс DJNZ R3,S1 ; организация цикла RET ; возвращение из подпрограммы 82
Пример 7.51. Измерение временных интервалов При применении тайме- ра используется вход разрешения счетчика (INT) Тогда измеренный сигнал по- дается на вход INTO, а измерение продолжительности выполняется в Т/СО «Положительный» импульс MOV TMOD,#000010018 ; настрапвзнив Т/СО MOV ТН0,#0 ; сбрасывание таймера MOV TL0,#0 ЗЕТЕ TCON.4 ; запуск Т/СО WA.ITO: JNB F3.2,WAIT0 ; ожидание единичного уровня WAITC: JB P3.2,WAITC ; ожидание нулевого уровня CLR TCON.4 ; остановка Т/СО RET ; выход из процедуры Управление программе должно передаваться при условии INTO =0. Пре- рывание от Т/СО и внешние от INTO - должны быть запрещены. По заверше- нию программы в Т/СО будет находиться число, пропорциональное продолжи- тельности импульса на входе INTO. Максимальная продолжительность импуль- са 65536 мкс, погрешность 1 мкс. Если необходимо измерять большую продолжительность импульса, то можно программным путем подсчитывать число переполнений от таймера. Пример 7.52. Преобразование параллельного кода в последовательный в MCS-51 сводится к передаче одного байта в буфер приемо-передатчика: MOV SBUF, А Пример 7.53. Обратное преобразование последовательного кода в парал- лельный инициируется стоповым битом и выполняется аппаратно без участия программы. Основная программа должна выполнить команду MOV A, SBUF. Пример 7.54. Преобразование однобайтовых чисел в дополнительный код и наоборот. Числа со знаком можно представить в дополнительном коде в гра- ницах от -128 к +127. Алгоритмы перевода чисел из прямого кода со знаком в дополнительный и обратное преобразование одинаковы: DOD-PR: JNB А.7,EXIT ; проверка знакового разряда CPL А ; инверсия аккумулятора ADD А, #1 ; добавление единицы ЗЕТЕ А.7 ; установление знака EXIT: ; выход Пример 7.55. Преобразование чисел из одной системы исчисления в дру- гую методом «двух счетчиков». При этом методе из начального кода отнимает- ся. а к новому коду прибавляется единица до обнуления начального кода. При- чем отнимание осуществляется в старой системе счисления, а добавление - в новой. Программа перевода двоичного числа в двоично-десятичное. MOV CLR R5,A A ; передача начального числа в ; сброс аккумулятора R5 REV: ADD A,#l ; добавление единицы DA A ; десятичная коррекция DJNZ R5,REV ; декремент начального кода и ; если не нуль цикл. 83
Результат преобразования находится в аккумуляторе. Пример 7.56. Подсчет числа импульсов за заданный промежуток времени Решается 4-я способами: 1 Программная реализация временного интервала и программный под- счет числа импульсов" 2. Программная реализация временного интервала и аппаратный подсчет числа импульсов (на внутреннем таймере/счетчике') 3. Аппаратная реализация временного интервала и проз-раммный подсчет числа импульсов 4. Аппаратная реализация временного интервала и аппаратная реализация подсчета импульсов. Реализация на MCS-51: в таймере-счетчике Т/Cl осуществляется подсчет числа импульсов, в Т/СО заданный временной интервал. Датчик импульсов должен быть подключен к Т1 TIME: EQU NOT(10000)+1 ; определение константы TIME ;лля отсчета времени в 10мс MOV TMOL,#0101000]В ; настройка таймеров-счетчиков: ; 1-й - счетчик 16 бит, 0-й - таймер CLR А. ; сброс аккумулятора MOV ТН1,А ; сброс Т/С1 MOV ТЫ,А ; MOV THO,#HIGH (TIME) ; загрузка в Т/СО константы TIME MOV TLC,#LOW (TIME) ; ORL TCON,S50H ; запуск Т/Cl и Т/СО WAIT: JBC TCON.5,EXIT ; проверка переполнения Т/СО SIMP WAIT ; цикл, если TF=0 EXIT: MOV В, ТН1 ; (В) - (А), число импульсов за время 10 мс MOV А, ТЫ 7.6 Реализация ЦАП и АЦП Пример 7.57. Преобразование информации из цифровой формы в анало- говую осуществляется с помощью подключения интегральных микросхем циф- роаналогового преобразователя (ЦАП) к одному из портов MCS-51. Выдача информации при этом осуществляется с помощью одной команды, например. MOVP1, А. Если необходимо генерировать какую-то сложную функцию, то лучше записать ее таблично и передавать с соответствующим периодом в заданный порт. Пример 7.58. Аналого-цифровой преобразователь (АЦП) последователь- ного приближения (рис. 7.10). 84
ивх<ицап Uex>Unan Сигнал на входе компаратора К Рисунок 7.10 — Реализация АЦП последовательного приближения МК выдает через порт Р1 байт данных, что превращается в аналоговую форму и сравнивается с входным сигналом компаратора, после чего анализиру- ется результат сравнения. В зависимости от значения сигнала на входе ТО MCS- 51 или оставляет старший бит в единичном состоянии, или сбрасывает в 0. По- том аналогично проверяются все остальные биты. R4 - регистр цифрового эквивалента; R3 - регистр бегущего значения 1 для указания весового бита. CONVRT: MOV R5#08H ; загрузка счетчика циклов MOV R3,#01H MOV R4,#00H LOOP: MOV A,R3 ; сдвиг КЗ вправо на 1 разряд RR A MOV R3,A ORL A,R4 ; логическое ИЛИ весового разряда ;и цифрового эквивалента MOV Pl,A ; выдача в Р1 JBC TO,ENDUGH ; если ТС=1, то аналоговый эквивалент ; выданного байта больше чем Ь’вх и сохраняется ; в R4, если наоборот, то установленный бит ; запоминается в R4 MOV R4, А ENDUGH: DJNZ R5,LOOP ; декремент R5 и если не 0, то переход ; к анализу следующего бита Пример 7.59. Реализация АЦП методом двойного интегрирования. Метод двойного интегрирования заключается в следующем (рис.7.11). Сначала интегрируется входной опорный сигнал Еоп- На выходе интегратора устанавливается отрицательный потенциал, после чего интегрируется входной аналоговый сигнал за строго определенное время Т1. Т1 отсчитывается от мо- мента перехода сигнала интегратора через 0. Потом подается UOn и измеряется время интегрирования Т2, которое пропорционально входному сигналу. 85
Рисунок 7 11 - Реализация АЦП двойного интегрирования Максимальное время преобразования для точности 16 разрядов 2x65.536 мс. Если необходима точность преобразования 8 разрядов, то Т/СО переключа- ется в режим 8-битного таймера, а время преобразования составляет 2x256 мкс. Рисунок 7 12 - Временные диаграммы сигналов АЦП двойного интегрирования MOV TMOD,#01Н ; Настройка Т/СО на режим 16 бит MOV ТНО,#HIGH(NOT(Т1)+1); загрузка Т/СО MOV TLO, #LOW(NOT (Т1)+1) SETB Pl.l ; настройка Pl.l на ввод СЕТЕ Pl. О ; подача ЕуП на интегратор WAIT: JB Pl.l,WAIT ; ожидание появления на выходе ; интегратора отрицательного уровня сигнала CLR Р1.0 ; подача UEX на интегратор WAITTO: JNB Pl.l, WAIT0 ; ожидание момента ТО SET В ICON. '1 ; запуск Т/СО WAITT1: JNB TCON5, WAITT1 ; оягидание момента Т1 сЕТВ Р х. и E..JJ Но ,ч и Тс .р.* ср и на тало ; обратного интегрирования WAITT2: JB Pl,l, WAITT2 ; ожидание момента Т2 CLR TCON.4 ; остановка Т/СО CLR TCON.5 ; сброс флажка ТЕО MOV В, ТНО ; формирование результата в регистровой паре А,В MOV A, TL0 86
7.7 Локальная управляющая микросеть на основе MCS-51 При управлении сложными технологическими объектами используются системы с распределенным управлением, которые состоят из группы контрол- леров, руководящих отдельными агрегатами объекта (например, многосекци- онной печатной машиной, бумагообрабатывающей установкой, переплетно- обрабатывающей линией, прокатным станом и т.п.). Между отдельными под- системами должен быть обеспеченная информационная связь. Поэтому обяза- тельным элементом распределенной системы управления есть локальная сеть, которая объединяет определенные контроллеры в систему. На такую сеть возлагаются обычно простые функции передачи сообще- ний за гарантированное время. Протяжность линий связи обычно не превышает десятков метров, размер сообщения - нескольких десятков байтов, а время дос- тавки сообщений - в границах от 0.01 до 1 с. Типичными есть два режима ин- формационного обмена в сети: широковещательный, если сообщение, которое присылается, назначается для всего остатка подсистем (микроконтроллеров се- ти), и абонентский, если сообщение назначается лишь одному МК. Обычно первым способом передаются разные информационные параметры, которые используются многими подсистемами. Эго разрешает уменьшить загрузки сети за счет изъятия многочисленных передач одного и того же сообщения разным адресатам. Вторым способом обыч но передаются команды управления от цен- трального устройства к исполнительным средствам или сообщения экстренного характера. Наиболее широко распространены локальные сети двух структур: кольце- вые и моноканальные (типа BITBUS). Последние есть более удобными для управляющих микросетей, так как допускают простое наращивание и модифи- кацию системы. Кроме этого, в моноканальной сети время доставки сообщение не зависит от общего числа МК и они имеют высокую живучесть и надежность. В сетях с единым моноканалом все МК связаны между собой одной об- щей (распределительной) линией связи (рис. 7.13). В линиях передачи данных обычно используется коаксиальный кабель или витая пара с резисторами согла- сования на их концах. Известны разные методы доступа к распределительной ли- нии (протоколы), которые разре- шают осуществлять обмен дан- ными между многими МК сети, то есть обеспечивать разделение ка- нала связи между многими под- системами [18]. Рассмотрим интервально- маркерный метод доступа к рас- пределительному моноканалу, ко- Рисунок 7.13 - Структура локальной управляющей микросети на основе моноканала 87
торый разрешает устранить конфликты в канале и достаточно полно использо- вать пропускную способность канала. Суть метода состоит в следующем: I. При нулевой загрузке в канале периодически появляется маркер, кото- рый генерируется одним из МК сети. Маркер содержит номер ведущего МК. Главное назначение ведущего - поддерживать синхронизм в сети за счет пе- риодической выдачи маркера в канал. 2. Период генерации маркера состоит из определенного числа «окон», число которых равное числу МК в сети. Каждое окно имеет свойномер и при- надлежит одной из подсистем. 3. В процессе захвата канала МК. которое желает выдать свой пакет (со- общение), должен дождаться появления маркера и отсчитать от него свое окно. Если при этом его не опередят другие МК, то, дождавшись своего окна, подсистема может, не опасаясь конфликтов, начать передачу данных (рис.7.14а). 4 После выдачи сообщения МК генерирует свой маркер и становится но- вым ведущим Старый ведущий микросети, распознав, что моноканал захвачен, освобождается от этой роли. 5. Отсчет момента времени от маркера своего окна проводится по такому правилу. Продолжительность окна принимается равной времени передачи од- ' ного байта данных. Если ведущий имел номер I, то первое окно будет принад- лежать МК с номером /+1, потом МК с номером 1+2 и т.д. Время ожидания сво- его окна (Т) можно определить как T=t X, где t - время передачи одного байга, то есть продолжительность окна. Число X определяется следующим образом: {к-£-1,еслик>1; к-^ + 1,еслик<1; где к- номер МК, который пробует захватить канал, к = ОХп-1); / - номер ведущего, I = О-Чп-1); п - число МК в сети. 6. Если самый ведущему необходимо выдать сообщение, то он может за- хватить канал во время своего окна, то есть вместо генерации очередного мар- кера начать передавать свое сообщение. 7. Выдав маркер, ведущий МК запускает таймер на время t-(n-l), а если за это время ни единый МК не захватит канал, то весь цикл повторяется еще раз и т.д. 8. Любой МК принимает все байты, которые передаются по каналу. Для контроля пропадания маркера любой МК после приема каждого байга запуска- ет таймер на задержку t-(n+l). Таким образом, пропадание маркера (а значит, и режима синхронизма микросети) фиксируется, если за время t-(n+l), не было передано ни одного сообщения 9. При выявлении пропадания маркера для восстановления синхронизма в . микросети любой МК выполняет следующие простые действия: выдерживает паузу продолжительностью t-(i+l), где i - собственный номер МК: если во вре- 88
мя паузы снова не было принято ни одной информации, то данный МК становится ведущей и генерирует но- вый маркер. Этой процедурой обеспечивается автоматическое восстановление рабо- ты микросети при отказе МК, которое есть в данный момент ведущим. 10. При интервально-маркерном методе удается избегнуть любых кон- фликтов в сети по следующим причи- нам: - контроль пропадания марке- ра осуществляется постоянно всеми МК и он полностью синхронный, так как счетчики паузы корригируются приблизительно одновременно при приеме каждого байта. Все МК обна- Маркер Окно станции 1+1 I Ml I n-2j н-з| м|' * | i-2 pi] Период сети равен с п а) 67654321 0 Ш-.Ц LL I..I ] I Номер ведущего ’--Бит паритета ---— Признак маркера |Ab|Ao|l | | |сяс| Поле данных. L байт в) а) диаграмма одного перехода сети; б) маркер; в) формат сообщения Рисунок 7.14 - Интервально- маркерный доступ к моноканалу ружат пропадание маркера одновременно; - одновременно начинается отсчет паузы t-(i+l) всеми МК; - микроконтроллер с меньшим номером первым генерирует маркер и восстановит синхронизм в микросети. Последовательный порт MCS-51 допускает передачу 9-битных кодов. Используя это, можно легко ввести признак маркера таким образом, что байт маркера будет отличаться от любого информационного байта. На рис. 7.146 изображена структура маркера; старший бит определяет признак маркера (для маркера — 1). Бит 7 используется для простейшего контроля за паритетом. Се- мибитное поле адреса разрешает иметь в системе до 127 подсистем с номерами от 0 до 126. Адреса 127 зарезервированная для широковещательной передачи. Рекомендованный формат сообщения представленный на рис.7.14в и пре- дусматривает такие поля : Ао, - адреса получа теля; Ав - адреса отправителя; L - длина поля данных (0-255); CRC - байт контрольной суммы Можно определить четыре состояния, в которых будет находиться любой МК микросети. Приемник (R). В этом состоянии МК прослушивает канал, принимает со- общение и выбирает из них необходимую ему информацию. Передатчик (W). В этом состоянии МК, захватив канал, передает свое со- общение. Ведущий (Н). МК - ведущий и поддерживает синхронизм в сети. Специальное состояние (RM). МК реализует процедуру восстановления синхронизма в сети. Граф состояний МК микросети представленный на рис 7.15. 89
Прием Передача данных данных Рисунок 7.15 - Граф состояний МК микросети Запрос на передачу сообщения формируется в МК прикладной програм- мой управления объектом и обозначенный RQ. Задержки, которые реализуются таймером, имеют такое содержание. ТМ1 - контроль исчезновения маркера, задержка равная т-(п+1). ТМ2 - ожидание своего окна (т-х); ТМЗ - ожидание окончания периода сети (х-п); ТМ4 - пауза перед выдачей маркера при восстановлении синхронизма, задержка равная T-(i+l ). Для реализации подсистемы необходимы следующие ресурсы: УАПП, тайк ер два уровня прерываний. Этими ресурсами владеет MCS51, что разре- шает вести передачу и прием данных со скоростью до 375 кбит/с. Время передачи одного байта, обрамленного стартовыми и стоповыми битами (плюс 9-й разряд), со- ставляет 58,7 мкс. Пропускная способность микросети при этом равна приблизительно 17 кбайт/с. Микроконтроллер, который работает в составе распределенной системы управ- ления на основе локальной микросети, должен, кроме прикладной программы управления, иметь еще программные сред- ства доступа к моноканалу. Таким образом, МК должен работать в двухпрограммном режиме с распределением всех ресурсов между этими двумя сопрограммами. По- нятно, что при этом должен быть реализо- ван механизм взаимодействия между сетевой и прикладной программами. Чаще всего этот механизм реализуется путем присвоения сетевой программе более высокого приоритета. 90
ПЕРЕЧЕНЬ ССЫЛОК 1. Фридмен М., Ивенс Л. Проектирование систем с микрокомпьютерами: Пер. с англ. - М.: Мир. 1986. - 405 с. 2. Корячко В. П. Микропроцессоры и микро ЭВМ в РЭС: Учебник для вузов по специальности 23.03. - М.: Высш, шк., 1990. - 407 с. 3. Титов М.А. Изделия электронной техники. МП и ОМЭВМ: Справоч- ник.-М: 1994. 4. Липовецкий Г. П., Литвинский Г. В. и др. Однокристальные микро ЭВМ. Семейство МК-48. Семейство МК-51. Техническое описание и руководство по применению : серия "Электроника для профессиналов" -М : Мал. предпр. "БИНОМ". 1992. 5. Бобрыкин А.В., Липовецкий Т.П., Литвинский Г.П. и др. Однокри- стальные микро ЭВМ. - М.: МИКАП, 1994. 6. Стрепко I.T., Тимченко О.В., Дурняк Б.В. Проектування систем керу- вання на однокристальних MiKpo-EOM. - К. .Фенгкс, 1998. - 286 с. 7. Фурман И.А. и др. Программируемые контроллеры / Учебное пособие. — К.,1999. 8. Корольов К.П. Сучасш пристрот та мжроконтролери. - К.: Наукова думка, 2000, - 107с. 9. Бродин В.Б., Шагурин И.И. Микроконтроллеры. Архитектура, про- граммирование, интерфейс. - М.: Издательство ЭКОМ, 1999. - 400 с. Ю.Предко М. Руководство по микроконтроллерам. Том 1. - М.: Постмар- кет, 2001.-416 с. П.Предко М. Руководство по микроконтроллерам. Том 2. - М.: Постмар- кет, 2001. -488 с. 12 . ГОСТ 19.701. Схемы алгоритмов, программ, данных и систем. Услов- ные обозначения и правила выполнения. 13 .Микропроцессоры: в 3-х кн.: Учебник для вузов./ Под ред. Л.А. Пре- снухина. -М.: Высш, шк., 1986. 14 .Токхайм Р. Микропроцессоры: Курс и упражнения / Пер. с англ. / Под ред. В.Н. Грасевича. - М.: Энергоатомиздат, 1988. - 336 с. 15 .Лысенков Н.А., Свитенко В.Н., Сюткин В.А. Практическое пособие по учебной дисциплине "МП и микро ЭВМ в радиоэлектронных средст- вах". - Харьков, 1994. 16 .Башков Е.А. Аппаратное и программное обеспечение зарубежных микроЭВМ: Учебное пособие. - К. :Вища шк. 1990. - 207 с 17 .Самофалов К.Г., Викторов О.В., Кузняк А.К. Микропроцессоры. -К.: Техшка, 1986. - 278 с. 18 .Ги К. Введение в локальные вычислительные сети. - М.Радио и связь, 1986,- 176 с. 91
Приложение А Указания по выполнению схем алгоритмов Алгоритмом называется четкое описание последовательности действий, которые необходимо выполнить для решения задачи Схемы - документы, на которых показаны в виде условных изображений или обозначений составные части изделия и связи между ними Под схемой ал- горитма или программы понимается наглядное графическое изображение алго- ритма или программы. Правила выполнения схем алгоритмов и программ автоматическим или ручным способом регламентируются ГОСТ 19.701-90 [12]. При выполнении схем алгоритмов и программ отдельные функции алго- ритмов и программ с учетом их степени детализации, отображаются в виде ус- ловных графических обозначений (УГО) - символов. Правила использования символов по ГОСТ 19.701 -90 приведены в табл.А. 1. Схемы алгоритмов и программ могут использоваться на разных уровнях детализации и состоят из символов, которые имеют заданное значение, кратко- го объяснительного текста и линий связи. 92
Таблица А. 1 - Правила использования символов в схеме Фрагмент схемы Содержание обозначе- ния Правило использования XXX..X L Идентификатор симво- ла очерчивает символ для использования в справочных целях в других элементах до- кументации Любому символу в схеме можно присвоить идентифи- катор, который надо разме- щать слева над символом / |yyy.. . Y Описание символа - для улучшения пони- мания функции как части схемы Описание символа надо раз- мещать по правую сторону над символом ◄ Линии потока Используют для указания направления линий потока: можно без стрелки, если ли- нии потока направленные слева направо или сверху вниз; со стрелкой во всех других случаях — Пересечение линий по- тока Используется при пересече- нии двух несвязанных линий потока 4 Объединение линий потока: место объединения на- до сместить Используется при слиянии линий потока, каждая из ко- торых направлена к одному и тому же символу на схеме 93
______Продолжение таблицы А. 1 Фоагметгг схемы Содержание обозначения Правило использования 1 ГГАК JP--C -1 2 -3 -4 -5 Возможные варианты отображения решения: два признака условия решения; три признака условия решения, где р>0 - усло- вие решения; каждый выход из сим- вола должен сопровож- даться соответствующи- ми значениями условий При количестве выходов не более трех признаков условия решения (Да. Нет, =, < >) проставляют над каждой линией вы- ходящего потока или справа от линии потока. При количестве выходов более трех условие пере- хода проставляется в разрыве линии потока ЛОЛ и и и Начало, прерывание и конец алгоритма и про- граммы: Пуск Прерывание Остановка Символы используют в начале схемы алгоритма и программы, в случае ее прерывания и конца. Внутри символа “Терми- натор” можно указать наименование действия или идентификатор про- граммы Линии в схемах должны подходить к символу или слева, или сверху, а выходить или справа, или снизу. Линии должны быть направлены к центру символа. Линии потока должны быть параллельными линиям внешней рамки схе- мы. Направления линии потока сверху вниз и слева направо принимают за ос- новные и, если линия потока не имеет изломов, стрелками можно не обозна- чать. В других случаях направление линии потока обозначать стрелкой обяза- тельно. Если две или больше линии потока объединяются в одну линию, место объединения должно быть смещено (см. табл. 1.1). Следует придерживаться ра- зумной длины соединений и минимального количества длинных линий. Внутри символов и рядом с ними делают записи и обозначения (для уточнения функ- ций, которые они выполняют) так, чтобы их можно было читать слева направо и сверху вниз независимо от направления потока. Например, на рис. А.1 виды 1 и 2 чи таются идентично. 94
t в = с A = B ---z--- B = C —1— A = B Рисунок A. 1 - Примеры записи комментариев Записи внутри символа или рядом с ним должны быть краткими. Сокра- щения слов и аббревиатуры за исключением тех, которые установлены госу- дарственными стандартами, надо расшифровывать в нижней части поля схемы или в документе, к которому' эта схема относится. Если запись не умещается внутри символа или нужны объяснения, то ря- дом с символом (слева или справа) на свободном месте поля листа пишется комментарий, который может относиться также и к группе символов или линий потока. Символы, которые используются в схемах алгоритмов и программ и ото- бражают основные операции процесса обработки данных и программирования, установлены ГОСТ 19.701-90 [12]. Перечень, наименования, обозначения и па- раметры обязательных символов, которые используются наиболее часто, и функции, которые они отображают в алгоритме и программе обработки дан- ных, приведены в табл. А.2. Формы символов, которые рекомендуются стандартом [12], должны слу- жить руководством для фактического использования символов. Нельзя изме- нять углы и прочие параметры, которые влияют на соответствующую форму символов. Символы должны быть, по возможности, одинакового размера. Сим- волы можно вычерчивать в любой ориентации, но горизонтальная ориентация имеет преимущество. 95
Функция Обозначение и па- Таблица А.2 - Обязательные символы и функции, которые ониотображают [ Наименование Процесс раметры Выполнение операции или "1 группы операций, в результате которых изменяется значение- форма подачи или размещения Ь J Решение Выбор направления алгоритма я или программы в зависимости од некоторых сменных условий Подготовка / Ь—► А d Выполнение операции, которые изменяют команды, группы ко- манд или программу Определенный процесс 0,15; ”1 Использование алгоритмов и программ, которые образованы раньше и описаны в отдельно- сти 1 ь » Граница цикла 1 I Символ состоит из двух частей, отображает начало и конец цик- ла. Обе части имеют одинако- вый идентификатор Ручной ввод к—ь-. Ввод данных вручную с помо- щью неавтономных средств с клавиатурой, переключателями, кнопками Данные / / L . / Преобразование данных в фор- му, пригодную для обработки (ввод), носитель данных не оп- ределен Документ 0,5| ь ► 'пФ Ввод-вывод данных, носителем которых является бумага, мик- рофильм, документ для оптиче- ского или магнитного считыва- ния —*1 Карта 1 -г Ввод-вывод данных, носителем которых является карта (перфо- карта, магнитная карта и др.) J ‘ п 7 _1 « ь „ 96
I Ввод - вывод данных, носите- 1 .чем которых является магнит- ная лента, кассета с магнитной лентой, магнитофонная кассета Ввод - вывод данных, носите- лем которых является магнит- ный диск, магнитный барабан, гибкий магнитный диск Ввод-вывод данных, если сред- ство, которое непосредственно подключено к процессу, воссоз- дает данные и разрешает опера- ; тору ЭВМ вносить изменения в | процессе их обработки ' Указание последовательности связей между символами. Сим- вол отображает поток данных или управление________________ Указание последовательности связей между прерванными ли- ниями потока, которые связы- вают символы. Соответствую- щие символы - соединители должны содержать одинаковое уникальное обозначение Начало, конец, прерывание про- цесса обработки данных или выполнения программ Связь между элементами схемы и объяснением
11араметры а и b в табл А.2 могут быть произвольными. При выполнении задачи для сохранности стандартной формы символов рекомендуем выбирать Ь=1:5а ПРИМЕР: Задано“число X. Вычислить функцию знака числа (определить знак числа). 1-1. если х < 0; 0. если х = 0; 1. если х>0. Схема алгоритма вычисления функции знака числа приведена на рис. А.2. Рисунок А.2 - Схема алгоритма вычисления функции знака числа 98
Приложение Б Описание машинных команд 1) Команда A CALL <-adr 11 Команда "абсолютный вызов подпрограммы" вызывает безусловно под- программу, размещенную по указанному адресу. При этом счетчик команд уве- личивается на 2 для получения адреса следующей команды, после чего полу- ченное-16-битовое значение PC помещается в стек (сначала следует младший байт), и содержимое указателя стека также увеличивается на 2. Адрес перехода получается с помощью конкатенации старших бит увеличенного содержимого счетчика команд, битов старшего байта команды и младшего байга команды. ACALL <метка> Время в циклах: 2. Флаги PSW : не влияет ПРИМЕР: ;ДО ВЫПОЛНЕНИЯ ACALL ; (ЗР)=ГПН ;метка МТ1 соответствует адресу 0345Н, ;т. е. (РС)=0345Н ACALL МТ1 ;расположена по адресу 028DH, т. е. ; (PC] =023DH ; ПОСЛЕ ВЫПОЛНЕНИЯ ACALL ; (SP)='JSH, (РС)=0345Н, ;ОЗУ(08]=8ЕН,ОЗУ[ 09 ]=02Н. 2) Команда ADD А, <байт-источник> Эта команда складывает содержимое аккумулятора А с содержимым бай- та-источника, оставляя результат в аккумуляторе. При появлении переносов из разрядов 7 и 3, устанавливаются флаги переносов (С) и (АС\ в противном слу- чае эти флаги сбрасываются. При сложении целых чисел без знака флаг CY указывает на появление переполнения. Флаг переполнения OV устанавливает- ся. если есть перенос из бита 6 и нет переноса из бита 7, или есть перенос из бита 7 и нет из бита б, в противном случае OV сбрасывается. При сложении це- лых чисел со знаком OV указывает на отрицательную величину, полученную при суммировании двух положительных операндов или на положительную сумму для двух отрицательных операндов. Режимы адресации байта-источника: регистровый; косвенно- регистровый; прямой; непосредственный. ADD A,Rn; где п=0-7 Время в циклах: 1. Флаги PSW : С Y AC OV Р ПРИМЕР: ; (А)=СЗН, (R6)=AAH ADD A,F6 ;(A1=6DH, (R6)=AAH ;(AC)=0, (C) = l, (OV)=-1 99
ADD A,@Ri; где i=O,l Время в циклах: 1. Флаги PSW : CY AC OV P ПРИМЕР: ;ь.;=-5н, (31П=4СЕ ADD A, Oil »;(A)=E1H, (ОЗУ (3L’;=4CH ;(C)=C, (AC) = i, (GV) = 9 ADD A,<direct> Время в циклах: 1. Флаги PSW : С Y AC OV P ПРИМЕР: ; (A)=77H, (ОЗУ 190])=FFH ADD ft, ЗОН ;(A)=7 6H, (ОЗУ (9O!J=FFH ; (0=1, (AC)=1, (CV)=C ADD A,<#data> Время в циклах: 1. Флаги PSW: С Y AC OV P ПРИМЕР: ;(A)=09H ADD A,#0D3H ;(A)=DCH ;(C)=G, (AC)=O, (OV)=0 3) Команда ADDC А, <байт-источник> Эта команда одновременно складывает содержимое байта-источника, флаг переноса и содержимое аккумулятора А, оставляя результат в аккумуля- торе. При этом флаги переноса и дополнительного переноса устанавливаются, если есть перенос из бита 7 или бита 3, и сбрасываются в противном случае. При сложении целых чисел без знака флаг переноса указывает на переполне- ние. Флаг переполнения OV устанавливается, если имеется перенос бита 6 и нет переноса из бита 7 или есть перенос из бита 7 и нет - из бита 6, в противном случае OV сбрасывается. При сложении целых чисел со знаком 0V указывает на отрицательную величину, полученную при суммировании двух положитель- ных операндов или на положительную сумму от двух отрицательных операн- дов. Режимы адресации байта-источника: регистровый; косвенно- регистровый: прямой; непосредственный. ADDC A,Rn ; где п=0-7 Время в циклах:!. ФлагиPSW : CY AC OV Р ПРИМЕР: ; (А)=В2Н, (R3)=99H, ; (С) =1 ADDC A,R3 ;(А)=4СН, (йЗ)=9Эл ;(С)=1, (АС)=О, (OV)=1 ADDC A,@Ri; где i=O,l Время в циклах:! Флаги PSW : CY AC OV Р 100
ПРИМЕР: ; (A)=D5H, (R0)=3AH, ; (ОЗУ I ЗА) )=1AH, (C)=l ADDC A,@R0 ; (A)=F0H, (ОЗУ [ 3AJ ) =1AH ;(C)=0, (AC)=1, (OV)=0 ADDC A,<direct> Время в циклах: 1. Флаги PSW : CY AC OV P ПРИМЕР: ;(A)=11H, (ОЗУ[80) )=DFH , (C)l ADDC A, 80H ; (A)=F1H ; (0=0, (AC)=1, (OV)=0 ADDCA,#data Время в циклах: 1. Флаги PSW: С Y AC OV P ПРИМЕР: ; (A)=55H, (C)=0 ADDC A, #55H ; (A) =AAH . ;(C)=0, (AC)=0, (OV)=1 4) Команда AJMP <addrl 1 > Команда передает управление по указанному адресу, который получается при конкатенации пяти старших бит счетчика команд PC (после увеличения его на 2), 7-5 битов кода операции и второго баша команды. Адрес перехода дол- жен находиться внутри одной страницы объемом 2 Кбайт памяти программы, определяемой пятью старшими битами счетчика команд. AJMP <метка> Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (PC)=028FH ;Метке МТ2 соответствует адрес 034АН AJMP МТ2 ;(PC) =03 4АН 5) Команда АЛТ, 'байт назначения^ <байт-источник> Команда выполняет .операцию логического И над битами указанных пе- ременных и помещает результат в байт назначения. Эта операция не влияет на состояние флагов. Два операнда обеспечивают следующие комбинации шести режимов ад- ресации: регистровый; 1) байтом назначения является аккумулятор: косвенно- регистровый; прямой; непосредственный; 2) байтом назначения является пря- мой адрес (direct): прямой аккумуляторный; непосредственный (байт-источник равен константе). ANL A,Rn ; где п=0-7 Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: 101
;(A)=FEH, (R2)=C5H ANL A,R2 = 'R2)=C5H ANL A,<direct> Время в циклах: 1. ФИаги PSW : не влияет ПРИМЕР: ;(А)=АЗН, (PSW)=86H ANL A,PSW ;(А)=82Н, (PSW)=86H ANL A,@Ri, где i=O,l Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(А)=ВСН, (ОЗУ [ 351) =47Н, (R0)=35H ANL A,(sRO ;(А)=04Н, (ОЗУ [35® =4 7Н ANLA,#data Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ; (А)=36Н ANL A,#0DDH ;(А)=14Н ANL (direct) А Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(А)=55Н, (Р2)=ААН ANL Р2,А ; (Р2)=00Н, (А)=55Н ANL <direct>,#data Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (P1)=FFH ANL Р1,#73Н ;(Р1)=73Н Примечание. Если команда ANL применяется для изменения содержимо- го порта, то значение, используемое в качестве данных порта, будет считывать- ся из защелки порта, а не с вывода БИС. 6) Команда ANL С, <бит источник> Команда выполняет операцию логического И над указанными битами. Если бит источник равен нулю, то происходит сброс флага переноса, в против- ном случае флаг переноса не изменяет своего текущего значения. 7" перед опе- рандом в языке ассемблера указывает на то, что в качестве значения использу- ется логическое отрицание адресуемого бита, однако сам бит источника не из- меняется. На другие флаги команда не влияет. Для операнда-источника разре- шена только прямая адресация к битам. 102
ANL C,<bit> Время в циклах 2. Флаги PSW ; CY ПРИМЕР: ; РЦ-. ; = ANL С, Р1.0 ; (С) =0, Р1 [ 0 i =i ANL C,</bit> Время в циклах: 2. Флаги PSW : С Y ПРИМЕР: ; (С)=1, (АС)=О ANL С,/АС ; (0=1, (АС)=О 7) Команда CJNE <байт назначения> <байтп источник>,<смещение> Команда сравнивает значения первых двух операндов и выполняет ветв- ление, если операнды не равны. Адрес перехода (ветвления) вычисляется при помощи сложения значения (со знаком), указанного в последнем байте коман- ды, с содержимым счетчика команд после увеличения его на три. Флаг переноса С устанавливается в "I", если значение целого бита без знака <байта назначения> меньше, чем значение целого без знака <байта ис- точника>, в противном случае перенос сбрасывается (если значения операндов равны, ф,иг переноса сбрасывается). Эта команда не оказывает влияния на опе- ранды. Операнды, стоящие в команде, обеспечивают комбинации четырех режи- мов адресации: 1) байтом назначения является аккумулятор: прямой; непосред- ственный. 2) байтом назначения является любая ячейка ОЗУ с косвенно-регистровой или регистровой адресацией: непосредственный к регистровому; непосредственный к косвенно-регистровому. CJNE A,<direct>,<MeTKa> Время в циклах: 2. Флаги PSW : CY ПРИМЕР: ; (А)=97Н, P2=F0H, (С)=0 CJNE А,Р2,МТЗ МТЗ CLR А ; (А)=97Н, Р2=Е0Н, (С) =1 ;Адрес, соответствующий метке МТЗ вычисляется, ;как (PC) : = (РС) +3-ь (ге!8) CJNE A,#data,<MeTKa> Время в циклах: 2. Флаги PSW: CY ПРИМЕР: ; (A)=FCH, (0=1 CJNE A,#0BFH,MT4 103
MT 4 INC Р ;(A)=FDH, (0=0 ; (PC) (PC) +3+ (relB) CJNE Rn,#data,<MeTKa> ; где n=0-7 Время в циклах: 2. ФлаТи PSW : CY ПРИМЕР: ;(R7)=80H, (C)=0 CJNE R7, #8111,MTS MT5 MOP ;(R7)=80H, (0=1 ;(PC):=(PC)+3+(rel8) CJNE @Ri,#data,<MeTKa>; где i=O,l Время в циклах: 2. Флаги PSW: CY ПРИМЕР: ; (R0)=41H, (0=1, (СЗУ[41))=57H CJNE @R0,#29H,MT6 MT 6 DEC RO ; (ОЗУ (41]) =57H, (0=0 ; (PC) : = (PC)+3+(rsl8) 8) Команда CLR A Команда сбрасывает (обнуляет) содержимое аккумулятора А. На флаги команда не влияет. CLR А Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ; (A.)=6DH, (0=0, (АС)=1 CLR А ; (А)=ООН, (0=0, (АС) =1 9) Команда CLR <bit> Команда сбрасывает указанный бит в нуль. Эта команда работает с фла- гом переноса С или с любым битом с прямой адресацией. CLRC Время в циклах: 1. Флаги PSW: СY ПРИМЕР: ; (0=1 CLR С ; (С) =0 CLR<bit> Время в циклах. 1. Флаги PSW: не влияет ПРИМЕР: ;(Р1)=5ЕН (01011110В) CLR Р1..3 ;(Р1)=56Н (01010110В) 104
10) Команда CPL А Команда инвертирует каждый бит аккумулятора (изменяет на противопо- ложный). Биты, содержащие "1", после этой команды будут содержать "0" и на- оборот. На флаги команда не влияет. CPLA Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(А)=65Н (01100101В) CPL А ;{А)=9АН (10011010В) 11) Команда CPL <bit> Команда инвертирует указанный бит (изменяет на противоположный). Биты, содержатцие ”1", после этой команды будут содержать "О" и наоборот. Команда может работать с флагом переноса или с любым прямо адресуемым битом. На другие флаги команда не влияет. CPL <bit> Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(Р1)=39Н (00111001В) CPL Pl.l CPL Р1.3 ;(Р1)=ЗЗН (00110011В) CPL С Время в циклах: 1. Флаги PSW: CY ПРИМЕР: ; (С)=0, (АС)=1, (OV)=0 CPL С ; (C)=l, (АС)=1, (OV)=0 Примечание. Если эта команда применяется для изменения содержимого на выходе порта, то значение, используемое в качестве данных порта, будет считываться из защелки порта, а не с выводе® БИС. 12) Команда DA А Команда "десятичная коррекция аккумулятора для сложения" упорядочи- вает 8-битовую величину в аккумуляторе после выполненной ранее команды сложения двух переменных (каждая в упакованном двоично-десятичном фор- мате). Для выполнения сложения может использоваться любая из типов команд ADD или ADDC. Если значение битов 3-0 аккумулятора (А) превышает 9 (ХХХХ 1010-ХХХХ 1111) или, если флаг АС равен то к содержимом}' (А) прибавляется 06, получая соответствующую двоично-десятичную цифру в младшем полубайте. Это внутреннее побитовое сложение устанавливает флаг переноса, если перенос из поля младших четырех бит распространяется через все старшие биты, а в противном случае не изменяет флаг переноса. Если после 105
этого флаг переноса равен "1", или если значение четырех старших бит (7-4) превышает 9 (1010 ХХХХ-1111 ХХХХ), значения этих старших бит увеличива- ется на 6. создавая соответствующую двоично-десятичную цифру в старшем полубайте. И снова при этом флаг переноса устанавливается, если перенос по- лучается из старших-битов. но не изменяется в противном случае. Таким обра- зом флаг переноса указывает на то, что сумма двух исходных двоично- десятичных переменных больше, чем 100. Эта команда выполняет десятичное преобразование с помощью сложения 06, 6(\ 66 с содержимым аккумулятора в зависимости от начального состояния аккумулятора и слова состояния про- граммы (PSW). DAA Время в циклах: 1. Флаги PSW: не влияет ПРИМЕРЫ: а) • ;(А)=56Н, (R3)=67H, (0=1 ADDC A,R3 DA А ;(А)=24Н, (R3TO67H, (C) = l б) ; (А)=30Н, (С)=0 ADD А,#59Н DA А ; (А)=29Н, (0=1 13) Команда DEC <байт> Команда производит вычитание "1" из указанного операнда. Начальное значение ООН переходит в FFH. Команда DEC не влияет на флаги (!). Этой ко- мандой допускается четыре режима адресации операнда: регистровый; косвен- но-регистровый; прямой; к аккумулятору. DECA Время в циклах: 1. Флаги PSW. не влияет ПРИМЕР: ;(А)=11Н, (0=1, (АС)=1 DECA ;(А)=10Н, (0=1, (АС)=1 DEC Rn; где п=0-7 Время в циклах: 1 Флаги PSW: не влияет ПРИМЕР: ; (R1)=7FH ; (03У(7Е))=40Н, (O3X[7F] )=00Н DEC gRl DEC R1 DEC gRl ;(R1)=7EH ; (ОЗУ 17F1)=3FH, (ОЗУ 17F]) =FFH 106
DEC <<lirect> Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(SCON)=AOH, (С)=1, (АС) =1 DEC SCON ;(SCON)-9FH, (C)='L, (AC)-l DEC @Ri; где i=0,l Время в циклах: L Флаги PSW: не влияет ПРИМЕР: ; {R1)~7FH ;(ОЗУ[7Г])~40Н, (ОЗУ[7FJ) =00H DEC @R1 DEC R1 DEC @R1 ; (R1)=7EH ; (ОЗУ[7Е] )=3FH, (ОЗУ[7F] ) =FFH Примечание. Если эта команда применяется для изменения содержимого на выходе порта, то значение, используемое в качестве данных порта, будет считываться из защелки порта, а не с выводов БИС. 14) Команда DIFАВ Команда "деление" делит 8-битовое целое без знака из аккумулятора А на 8-битовое целое без знака в регистре В. Аккумулятору присваивается целая часть частного (старшие разряды), а регистру В - остаток. Флаги CY и OV сбра- сываются. Если (А)>(В), то флаг АС не сбрасывается. D1VAB Времявциклах: 4. ФлагиPSW: CY(O) AC(x)F0(-)RSl(-)RS0(-)OV(0)P(-) ПРИМЕР: Пусть аккумулятор содержит число 251 (OFBH или 11111011В), а ре- гистр В - число 18 (12Н или 00010010В). После выполнения команды DIV АВ в аккумуляторе будет число 13, а в В - 17, т. к. 251=(13*18)+17. CY и OV - сброшены. Примечание: Если В содержит 00, то после команды DIV содержимое ак- кумулятора А и регистра В будут не определены. Флаг переноса сбрасывается, а флаг переполнения устанавливается. 15) Команда DJNZ <байт>,<смещение> Команда "декремент и переход, если не равно нулю" выполняет вычита- ние "1" из указанной ячейки и осуществляет ветвление по вычисляемому адре- су, если результат не равен нулю. Начальное значение ООН перейдет в 0FFH. Адрес перехода (ветвления) вычисляется сложением значения смещения (со знаком), указанного в последнем байте команды, с содержимым счетчика ко- манд, увеличенным на длину команды DINZ. На флаги не влияет. Режимы адресации: регистровый; прямой. 107
DJNZ Rn ,<метка> ; где n=0-7 Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; rl=FFH :1Г.1Г'7.К LAB4: CPL Р1.7 DJNZ R2, LAB4 ;R2={07-0С} ;Эта последовательность команд пере- ;ключает Р1.7 восемь раз и приводит к ;появлению четырех импульсов на выводе ;ЕИС, соответствующему биту Р1.7. DJNZ «lirect>,<метка> Время в циклах: 2. Флаги PSW. не влияет ПРИМЕР: ;(ОЗУ(40])=01Н, (ОЗУ[50])=80Н, ;(ОЗУ]60])=25Н DJNZ 40H,LABl ;(ОЗУ]40])=00Н DJNZ 50H,LAB2 ;(ОЗУ[50])=7FH DJNZ 60H,LAB3 ; (ОЗУI 60]) «25Н LABI: CLR A LAB2: DEC R1 Примечание. Если эта команда применяется для изменения содержимого на выходе порта, то значение, используемое в качестве операнда, будет считы- ваться из защелки порта, а не с выводов БИС. 16) Команда INC <байт> Команда производит прибавление "1" к указанному операнду. Начальное значение FFH переходит в ООН. Команда DEC не влияет на флаги (!). Этой ко- мандой допускается четыре режима адресации операнда: регистровый; косвен- но-регистровый; прямой: к аккумулятору. INCA Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(A)=1FH, (АС)—1 INC А г (А) =2ОН, (АС'=1 INC Rn; где п=0-7 Время в циклах: 1. Флаги PSW: не влияет. ПРИМЕР: ; (R4)=FFH, (АС) = 1 INC R4 ; (R4)=00H, (АС) = 1 108
INC <direct> Время в циклах 1. Флаги PSW: не влияет ПРИМЕР: ; (ОЗУ[43])=22Н, (0-1, (АС)=1 INC 43Н ; (03У[43] )=23Н, (С)=1, (АС)=1 INC @Ri; где i=0,l Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ; (R1)=41H ;(ОЗУ[41])=4FH, (АС)=О INC @R1 ; (R1)=41H, (ОЗУ[41I)=50Н, (АС)=О Примечание. Если эта команда применяется для изменения содержимого на выходе порта, то значение, используемое в качестве данных порта, будет считываться из защелки порта, а не с выводов БИС. 17) Команда INC DPTR Команда выполняет инкремент (прибавление "1") содержимого 16- битового указателя данных (DPTR). Прибавление "1" осуществляется к 16 би- там, причем переполнение младшего байта указателя данных (DPI.) из FFH в ООН приводит к инкременту старшего байта указателя данных (DPH). На флаги не влияет. INC DPTR Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(DPH)=12H, (DPL)=FEH INC DPTR INC DPTR INC DPTR ;(DPH)=13H, (DPI.)=01H 18) Команда JB <bit>,<rel8> ---- Команда "переход, если бит установлен" выполняет переход по адресу ветвления, если указанный бит равен "1", в противном случае выполняется сле- дующая команда. Адрес ветвления вычисляется с помощью прибавления отно- сительного смещения со знаком в третьем байте команды к содержимому счет- чика команд после прибавления к нему 3. Проверяемый бит не изменяется, на флаги не влияет. JB <bit>,<метка> Время в циклах. 2. Флаги PSW: не влияет ПРИМЕР: ; (А) =96 (10010110В) JB ACC.2,LAB5 ;Эта команда производит переход на метку LAB5 109
LAB5: INC A 19) Команда JBC hit>, <rcl8> Команда "переход, если бит установлен и сброс этого бита", выполняет ветвление по вычисляемому адресу, если бит равен "1" В противном случае выполняется следующая команда. В любом случае указанный бит сбрасывает- ся. Адрес перехода вычисляется сложением относительного смещения со зна- ком в третьем байте команды и содержимого счетчика команд после прибавле- ния к нему 3. Эта команда на флаги не влияет. JBC (bit) ,<метка> Время в циклах: 2 Флаги PSW: не влияет ПРИМЕР: ; (А)=Т6Н (01110110В) JBC ACC.3,LAB6 ;Переход на LAB6 нет, т. к. (A(3j)=0 JBC ACC.2,LAB' ;(А)=72Н (01110010В) ;Переход на LAB7 Примечание: Если эта команда используется для проверки биг порта, то значение, используемое как операнд, считывается из защелки порта, а не с вы- вода БИС. 20) Команда JC <ге18> Команда "переход, если перенос установлен" выполняет переход по адре- су ветвления, если флаг переноса равен "1", в противном случае выполняется следующая команда. Адрес ветвления вычисляется с помощью прибавления относительного смещения со знаком во втором байте команды к содержимому счетчика команд после прибавления к нему 2. На флаги не влияет. JC <метка> Время в циклах: 2. Флаги PSW; не влияет ПРИМЕР: ; (с; =о JC LAB8 ;Нет перехода на метку LAB8 CPL С ;(С):=1 LABS: JC LABS’ ;переход на метку LAB3 21) Команда JMP @А +DPTR Команда "косвенный переход" складывает 8-битовое содержимое акку- мулятора без знака с 16-битовым указателем данных (DPTR) и загружает полу- ченный результат в счетчик команд. 16-битовое сложение выполняется по мо- дулю 2 в шестнадцатой степени, перенос из младшего байта распространяется на старший. Содержимое аккумулятора и указателя данных не изменяется. Ко- манда на флаги не влияет НО
JMP @A+DPTR Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(РС)—034ЕН, (AJ--86H, (DPTR)=0329H JMP 6A+DPTR ;(₽C)=03AFH, (А)=86Н, (DPTR)=0329H 22) Команда JNB <ЫГ>,<метка> Команда "переход, если биг не установлен" выполняет переход по адресу ветвления, если указанный бит равен "О", в противном случае выполняется сле- дующая команда. Адрес ветвления вычисляется с помощью прибавления отно- сительного смещения со знаком в третьем байте команды к содержимому счет- чика команд после прибавления к нему 3. Проверяемый биг не изменяется, на флаги не влияет. J NB <bit>, <метка> Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(Р2)=САН (11001010В) ;(А)=56Н (01010110В) JNB P1.3,LAB10 ;Нет перехода на метку LAB10 JNB АСС.З,1ЛВ10 ;Переход на метку LAB11 23) Команда JNC <ге18> Команда "переход, если перенос не установлен" выполняет переход по адресу ветвления, если флаг переноса равен "О", в противном случае выполня- ется следующая команда. Адрес ветвления вычисляется с помощью прибавле- ния относительного смещения со знаком во втором байте команды к содержи- мому счетчика команд после прибавления к нему 2. На флаги не влияет. JNC <метка> Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (С)=1 JC LAB12 CPL С LAB12: JC LAB13 ;Нет перехода на метку LAB12 ; (С) :=0 ;переход на метку LAB13 24) Команда JNZ <ге18> Команда "переход, если содержимое аккумулятора не равно нулю" вы- полняет переход по адресу ветвления, если содержимое аккумулятора не равно нулю, в противном случае выполняется следующая команда. Адрес ветвления вычисляется с помощью прибавления относительного смещения со знаком во втором байте команды к содержимому счетчика команд после прибавления к нему 2. На флаги не влияет. Содержимое аккумулятора не изменяется. 111
JNZ <метка> Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (А)=ООН JNC LAB14 /Нет перехода на метку LAB14 INC А * . LAB14: JNZ LAB15 ;переход на метку LAB15 25) Команда JZ <ге18> Команда "переход, если содержимое аккумулятора равно нулю" выполня- ет переход по адресу ветвления, если содержимое аккумулятора равно нулю, в противном случае выполняется следующая команда. Адрес ветвления вычисля- ется с помощью прибавления относительного смещения со знаком во втором байте команды к содержимому счетчика команд после прибавления к нему 2. На флаги не влияет. Содержимое аккумулятора нс изменяется. JZ <метка> Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (А)=01Н JZ LAB16 /Нет перехода на метку LAB16 DEC А LAB16: JZ -LAB17 ;переход на метку LAB17 26) Команда LCALL <addrl6> Команда "длинный вызов" вызывает подпрограмму, находящуюся по ука- занному адресу. По команде LCALL к счетчику команд PC прибавляется 3 для получения адреса следующей команды и после этого полученный 16-битовый ре- зультат помещается в стек (сначала младший, затем старший байты), а содержи- мое указателя стека (SP) увеличивается на 2. Затем старший и младший байты счетчика команд загружаются соответственно вторым и третьим байтами коман- ды. Выполнение программы продолжается командой, находящейся по получен- ному адресу. Подпрограмма может начинаться в любом месте адресного про- странства памяти программ объемом до 64 Кбайг Эта команда на флаги не влия- ет. LCALL <метка> Время в циклах: 2. Флаги PSW. нс влияет ПРИМЕР: /ДО ВЫПОЛНЕНИЯ LCALL ; (SP)=07H /метка PRN соответствует адресу 1234Н, LCALL PRN /расположена по адресу 0126Н, т. е. ; (SP)=09H, (РС)=1234Н, ;ОЗУ [08]=26Н, ОЗУ[0Э J-01Н. 112
27) Команда LJMP Команда "длинный вызов" вызывает подпрограмму, находящуюся по ука- занному адресу. Затем старший и младший байты счетчика команд загружают- ся соответственно вторым и третьим байтами команды. Выполнение програм- мы продолжается командой, находящейся по полученному адресу. Адрес пере- хода может находиться в любом месте адресного пространства памяти про- грамм объемом до 64 Кбайт. Эта команда на флаги не влияет. LJMP <метка> Время в щи [ах 2. Флаги PSW: не влияет 28) Команда MOV <байт назначений ,<байт источника> Команда "переслать переменную-байт” пересылает байт, указанный во вто- ром операнде в ячейку, указанную в первом операнде. Содержимое байга источ- ника не меняется. Эта команда на флаги и другие регистры не влияет. Команда допускает 15 комбинаций адресации байга источника и байта назначения. MOV A,Rn ; где п=0-7 Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ; (A)=FAH, (R4)=93H MOV A,R4 ;(А)=93Н, (R4)=93H MOV A,<dirert> Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ; (А)=93Н, (RO)=40H, (ОЗУ[40])=10Н MOV А,40Н ;(А)=10Н, (R0)=40H, (ОЗУ[40] )=10Н MOV A,@Ri; где i=0,l Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ; (А)=10Н, (R0)=41H, (ОЗУ[41])-ОС АН MOV A,@R0 ; (А)=-САН, (R0).=40H, (ОЗУ[41] )=0CAH MOV A,#data Время в циклах: 1. Флаги PSW: не влияет J. .. ПРИМЕР: ;(А)=С9Н (11001001В) MOV А,#37Н ;(А)=37Н (00110111В) MOV Rn,A ; где п=0-7 Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ; (А)=38Н, (R0)-42H MOV R0,А ; (А)=38Н, (R0)=38H 113
MOV Rn,<direct> ; где n=0-7 Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(R0]=39H, :Р2]=Е2Н MOV R0,P2 ;tR0)=F2H MOV Rn,#data ; где n=0-7 Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ; (R01-F5H MOV R0,#49H ;(R0)=49H MOV <direct>,A Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ; (А)=4ВН, (PO)=FFH MOV Р0,А ; (А)=4ВН, (R0) = 4BH MOV <<lirect>,Rn ; где n=0-7 Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(PSW)=C2H, (R7)=57H MOV PSW,R7 ;(PSW)=57H, (R7)=57H MOV <direct>,<direct> Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(ОЗУ[45])=ЗЗН, (ОЗУ,48])=DEH MOV 48Н,45Н ; (ОЗУ [45])=ЗЗН, (03У[4В])=ЗЗН MOV <direct>,@Ri; где i=0,l Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(R1)=49H, (ОЗУ149] )=ЕЗН MOV 51H,eRl ; (ОЗУ [ 51.1) =ЕЗН, (03У[49])=ЕЗН MOV <direct>,#data Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (ОЗУ[5Г1 )=9ВН MOV 5FH,#07H ; (ОЗУ [ 5F]) =07Н MOV @Ri,A ; где i=0,l Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(ОЗУ148])=75Н, (A)=BDH, (R1)=48H MOV @R1,A ; (ОЗУ! 48! )=BDH 114
MOV @Ri,<direct>; где 1=0,1 Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(ОЗУ[511)=ЕЗН, (R0)=51H, (Р0)=АСН MOV @RO,p0 ;(ОЗУ[51()=АСН MOV @Ri,#data; где 1=0,1 Время в циклах: 1. Флаги PSW. не влияет ПРИМЕР: ; (ОЗУ[1Е])=67Н, (R1)=7EH MOV @R1,#9AH ;(ОЗУ[7Е])=А9Н, (R1)=7EH 29) Команда MOV <бит назначения>,<6ит источника> Команда "переслать биг данных" копирует битовую переменную, указан- ную во втором байте, в разряд, который указан в первом операнде. Одним из операндов должен быть флаг переноса С, а другим - любой бит, к которому возможна прямая адресация. MOV C,<bit> Время в циклах: 1. Флаги PSW: CY AC FO RSI RSO OV Р ПРИМЕР: ; (С)=0, (P3)=D5H (11010101В) MOV С,РЗ.О ; (С):=1 MOV <hit>,C Время в циклах: 2. Флаги PSW: CY AC FO RSI RSO OV Р ПРИМЕР. ; (0=1, (Р0)=20Н (00100000В) MOV РО.1,0 MOV Р0.2,С MOV Р0.3,С 1(0=1, (Р0)=2ЕН (00101110В) 30) Команда MOV DPTR,#datal6 Команда "загрузить указатель данных 16-битовой константой" загружает указатель данных DPTR 16-битовой константой, указанной во втором и третьем байтах команды. Второй байт команды загружается в старший байт указателя данных (DPH), а третий байт - в младший байт указателя данных (DPL). Эта команда на флаги не влияет и является единственной командой, которая одно- временно загружает 16 бит данных. MOV DPTR,#<datal6> Время в циклах: 2. Флаги PSW. не влияет ПРИМЕР: ;(DPTR)=01FDH MOV DPTR, #1234Н 1 (DPTR) =123411, (DPH)=12H, (DPL)=34H 115
31) Команда MOVCA,@A+(<R16>), где <R16>- 16-разрядный регистр. Команда "переслать байт из памяти программ" загружает аккумулятор байтом кода или константой из памяти npoipaMM. Адрес считываемого байта вычисляется как сумма 8-битового исходного содержимого аккумулятора без знака и содержимого 16-битового регистра В качестве 16-битового регистра может быть: 1) указатель данных DPTR; 2) счетчик команд PC. В случае, когда используется PC, он увеличивается до адреса следующей команды перед тем, как его содержимое складывается с содержимым аккумуля- тора. 16-битовое сложение выполняется так, что перенос из младших восьми бит может распространяться через старшие биты. Эта команда на флаги не влияет. MOVC A,@A+DPTR Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(А)=1ВН, (DPTR)=1020H ; (ПЗУ[103В] ) 4 8Н MOVC A,@A+DPTR ;(А)=48Н, (DPTR)=1020H MOVCA,@A+PC Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (A)=FAH, (РС)=0289Н ; (ПЗУ [0384 J ) = 9ВН MOVC A,e.A+DPTR ; (А)=9ВН, (РС)=0282Н 32) Команда ЛУО<байт приемника>,<байт источника> Команда "переслать во внешнюю память (из внешней памяти) данных" пересылает данные между аккумулятором и байтом внешней памяти данных. Имеется два типа команд, которые отличаются тем, что обеспечивают 8 или 16- битовый косвенный адрес к внешнему ОЗУ данных. В первом случае содержимое R0 или R1 в текущем банке регистров обес- печивает 8-битовый адрес, который мультиплексируется с данными порта Р0. Для расширения дешифрации ввода-вывода или адресации небольшого массива ОЗУ достаточно 8 бит адресации Если применяются ОЗУ немного больше, чем 256 байт, то для фиксации старших битов адреса можно использовать любые другие выходы портов, которые переключаются командой MOVX. Во втором случае при выполнении команды MOVX указатель данных DPTR генерирует 16-битовый адрес. Порт Р2 выводит старшие 8 бит адреса (DPH), а порт Р0 мультиплексирует младшие 8 бит адреса (DPL) с данными Эта форма является эффективной при доступе к большим массивам данных (до 64 Кбайт), так как для установки портов вывода не требуется дополнительных команд. 116
MOVX A,Ri ; где1=0,1 Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: . • - ;(А)=32Н, (R0)=83H, ячейка внешнего ОЗУ по ;адресу 83Н содержит В6Н MOVX A,@R0 ; (А)- ВбН, (R0)=83H MOVX A,@DPTR Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(А)=5СН, (DPTR)=1АВЕН, ячейка внешнего ОЗУ по ;адресу РАВЕН содержит 7 2Н MOVX-A, @DRTR ;(А)=72Н, (DPTR)=2ABEH MOVX(®Ri,A ;r*i=O,l Время в циклах: 2. Флаги PSW' не влияет ПРИМЕР: ;(А)=95Н, (R1)=FDH, ячейка внешнего ОЗУ по ;адресу FDH содержит ООН MOVX @R1,A ; (А)-95Н, (R1)=FDH, ячейка внешнего ОЗУ по ;адресу FDH содержит 95Н MOVX(aDPTR,A Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(А)=97Н, (DPTR)-1FFFH, ячейка внешнего ОЗУ по ;адресу 1FFFH содержит ООН MOVX @DPTR,A ;(А)=97Н, ячейка внешнего ОЗУ по ;адресу 1FFFH содержит 97Н 33) Команда MULAB Команда умножает 8-битовые целые числа без знака из аккумулятора и регистра В. Старший байт произведения помещается в регистр В, а младший - в А. Если результат произведения больше FFH, то устанавливается флаг пере- полнения OV, в противном случае он сбрасывается. Флаг переноса всегда сбра- сывается. MU. АВ Время в циклах: 4. Флаги PSW CY(O) АС(-) F0(-) RSI(-) RSO(-) OV(x) P(-) ПРИМЕР: a) MUL AB ; (A)=50H (50H=80), (C)=l, ; (B)=A0H (AOH—160), (OV)=0 ; (A) -00H, (C)=0, (B)=32H, (OV)=1 6) MUL AB ;(A)=2AH, (C)=l, ; (B)=06H, (OV)-l ; (A)=D8H, (C)=0, (B)=00H, (OV) =0 117
34) Команда NOP Команда выполняет холостой ход и не влияет на регистры и флаги, кроме как на счетчик команд (PC) NOP Время в циклах: 1 Флаги PSW: не влияет ПРИМЕР: в примере не нуждается 35) Команда ORL 'байт назначения^ <байт источника> Команда "логическое ИЛИ для переменных-байтов" выполняет операцию логического ИЛИ над битами указанных переменных, записывая результат в байт назначения. Не влияет на состояние флагов, допускает шесть комбинаций режимов адресации: 1) байтом назначения является аккумулятор: регистровый; косвенно-регистровый; прямой, непосредственный; 2) байтом назначения явля- ется прямой адрес (direct): к аккумулятору; к константе. ORL A,Rn ; где п=0-7 Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ; (А)=15Н, (R5)=6CH CRL A,R5 ; (A)=7DH, (PS)-6СН ORL A,<direct> Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(А)“84Н, (PSW)=C2H ORL A, PSW ; (А)=СбН, (PSW)=C2H ORL A,@Ri ; где i=O,l Время в циклах: 1. Флаги PS W: не влияет ПРИМЕР: ;(А)=52Н, (R0)=6DH, (ОЗУ[6D])=4 ЭН ORL A,@R0 ;(А)=5ВН, (ОЗУ| 6D] )=4 9Н ORLA,#<data> Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ' ; (A)=F0H ORL А,#0АН ;(A)=FAH ORL (direct),A Время в циклах. 1. Флаги PSW: не влияет ПРИМЕР: ; (А)=.34Н, (1Р)=23Н ORL IP,А ; (А)=34Н, (1Р)=37Н 118
ORL (direct),#<data> Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (Р1)=ООН ORL Р1,#0С4Н ;(Р1)=С4Н (11000100В) Примечание: Если команда используется для работы с портом, величина, используемая в качестве исходных данных порта, считывается из защелки пор- та, а не с выводов БИС. 36) Команда ORL С, <6итп источника > Команда "логическое ИЛИ для переменных-битов" устанавливает флаг переноса С, если булева величина равна логической "1”, в противном случае устанавливает флаг С в ноль. Косая дробь перед операндом в языке ассемблера указывает на то, что в качестве операнда используется логическое отрицание значения адресуемого бита, но сам бит источника не изменяется. Эта команда на другие флаги не влияет. ORL C,<bit> Время в циклах: 2. Флаги PSW: CY ПРИМЕР ; (0=0, (PD-53H (01010011В) ORL С,Р1.4 ; (0=1, (Р1)=53Н (01010011В) ORL C,/<bit> Время в циклах: 2. Флаги PSW: CY ПРИМЕР: ;(С)=0, (ОЗУ[25])=39Н (00111001В) ORL С,/2А ; (С)=1, (ОЗУ[251)’-39Н (00111001В) 37) Команда POP <direet> Команда "чтение из стека" считывает содержимое ячейки, которая адре- суется с помощью указателя стека, в прямо адресуемую ячейку ОЗУ, при этом указатель стека уменьшается на 1. Эта команда не воздействует на флаги и часто используется для чтения из стека промежуточных данных. POP <direct> Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (SP)=32H, (DPH) =0111, (DPL) =ABH, ;(ОЗУ[32))=12H, (03У[31])=56H, (ОЗУ[30])=20H POP DPH POP DPL ;(SP)=30H, (DPH)=12H, (DPL)=56H, ;(ОЗУ(32])=12H, (ОЗУ(31))=56H 119
POP ; (SP) =20H, (0371 3C' j 2 OH 38) Команда PUSH <direct> Команда "запись в стек" увеличивает указатель стека на 1 и после этого содержимое указанной прямо адресуемой переменной копируется в ячейку внутреннего ОЗУ. адресуемого с помощью указателя стека. На флаги команда не влияет и используется для записи промежуточных данных в стек. PUSH<direct> Время в циклах: 2. Флаги PSW . не влияет ПРИМЕР: i(SP) = 09H, (DPTR)=1279H PUSH DPL ; PUSH DPH ; (SP)=0BH, (DPTR)=1279H ; (ОЗУ[ОА]}=79Н, (ОЗУ[ОВ))=12Н 39) Команда RET Команда "возврат из подпрограммы" последовательно вьпружаег стар- ший и младший байты счетчика команд из стека, уменьшая указатель стека на 2. Выполнение основной команды продолжается по адресу команды, следую- щей за ACALL или LCALL. На флаги эта команда не влияет. RET Время в циклах: 2. Флаги PSW не влияет ПРИМЕР: ;(SP)=0DH, (ОЗУ[ОС] )=ЭЗН, (ОЗУ[0D)) =02Н RET ;(SP)=0BH, (РС) =0293Н 40) Команда RETI Команда "возврат из прерывания" вьпружаег старший и младший байты счетчика команд из стека и устанавливает "логику прерываний", разрешая при- ем других прерываний с уровнем приоритета, равным уровню приоритета толь- ко что обработанного прерывания. Указатель стека уменьшается на 2. Слово состояния программы (PSW) не восстанавливается автоматически. Выполнение основной программы продолжается с команды, следующей за командой, на ко- торой произошел переход к обнаружению запроса на прерывание. Если при выполнении команды RETI обнаружено прерывание с таким же или меньшим уровнем приоритета, то одна команда основной программы успевает выпол- ниться до обработки такого прерывания. RETI Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ;(SP)=0BH, (ОЗУ[0А) )=2АН, (ОЗУ(0В])=03Н, ;(PC)=YYYYH, где Y=0-FH RETI ;(SP)=09H, (PC)=032RH 120
41) Команда RL А Команда "сдвиг содержимого аккумулятора влево", сдвигает восемь бит аккумулятора на один бит влево, бит 7 записывается на место бита 0. На флаги не влияет. RLA Время в циклах: 1. Флаги PSW: пе влияет ПРИМЕР: ; (A)=D5H (11010101В), (С)=0 RL А ;(А)=АВН (10101011В), (0=0 42) Команда RLC А Команда "сдвиг содержимого аккумулятора влево через флаг переноса", сдвигает восемь бит аккумулятора и флаг переноса на один бит влево. Бит 7 за- писывается в флаг переноса, содержимое флага переноса помещается на место бита 0 аккумулятора. На другие флаги не влияет. RLC А Время в циклах: 1. Флаги PSW: CY ПРИМЕР: ; (А)»56Н (01010110В), (С) = 1 RLC А ;(A)=ADH (10101101В), (С)=0 43) Команда RR А Команда "сдвиг содержимого аккумулятора вправо", сдвигает восемь бит аккумулятора на один бит вправо, бит 7 записывается на место бита 0. На флаги не влияет. RRA Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(A)=D6H (11010110В), (С)=1 RR А ; (А) = 6ВН (01101011В), (0=1 44) Команда RRC А Команда "сдвиг содержимого аккумулятора вправо через флаг переноса*, сдвигает восемь бит аккумулятора и флаг переноса на один бит вправо. Бит 0 записывается во флаг переноса, содержимое флага переноса помещается на ме- сто бита 7 аккумулятора. На другие флаги не влияет. RRCA Время в циклах: 1. Флаги PSW: CY ПРИМЕР: ;(А)=95Н (10010101В), (0=0 RRC А ;(А)=4АН (01001010В), (С) =1 121
45) КомандаSETB <бит> Команда "установить бит" устанавливает указанный бит в "1". Адресует- ся: к фла1у переноса (С). к биту с прямой адресацией. SETB С Время в циклах: 1. Флаги PSW : СY ПРИМЕР ; (С)=0 SETB С ; (С)=1 SETB (bit) Время в циклах: 1. Флаги PSW не влияет ПРИМЕР: ; (Р2)=38Н (00111000В) SETB Р2.0 ; SETB Р2.7 ;(Р2)=В9Н (10111001В) 46) Команда SJMP <метка> Команда "короткий переход" выполняет безусловное ветвление в про- грамме по указанному адресу. Адрес ветвления вычисляется сложением сме- щения со знаком во втором байте команды с содержимым счетчика команд по- сле прибавления к нему 2. Таким образом, адрес перехода должен находиться в диапазоне от 128 байт, предшествующих команде, до 127 байт, следующих за ней. SJMP <метка> Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (РС)=0418Н, ;метка МЕТ1 соответствует адресу 039АН SJMP МЕТ1 ;(РС)=039АН, где (ге18)=80Н=—128 DEC SJMP МЕТ2 ;(PC)=041АН, где метка МЕТ2 ; соответствует адресу 041АН ; (rel8)=7DH=+125 DEC 47) Команда SUB В А, <байт источника > Команда "вычитание с заёмом" вычитает указанную переменную вместе с флагом переноса из содержимого аккумулятора, засылая результат в аккумуля- тор. Эта команда устанавливает флаг переноса (заёма), если при вычитании для бита 7 необходим заем, в противном случае флаг переноса сбрасывается. Если флаг переноса установлен перед выполнением этой команды, то это указывает на то, что заем необходим при вычитании с увеличенной точностью на преды- дущем шаге, поэтому флаг переноса вычитается из содержимого аккумулятора вместе с операндом источника. (АС) устанавливается, если заем необходим для бита 3 и сбрасывается в противном случае Флаг переполнения (OV) устанавли- 122
вается, если заем необходим для бита 6, но его нет для бита 7, или есть для бита 7, но нет для бита 6. При вычитании целых чисел со знаком (OV) указывает на отрицательное число, которое получается при вычитании отрицательной величины из положи- тельной, или положительное число, которое получается при вычитании поло- жительного числа из отрицательного. -----Операнд источника допускает 4 режима адресации: _ “гистровый, косвен- но-регистровый; прямой; непосредственный (к константе). SUBBA.Rn ;гден=0-7 Время в циклах: 1. Флаги PSW: С Y AC OV Р ПРИМЕР: ; (А)=С9Н, (R2)=54H, (0=1 SUBB A,R2 ;(А)=74Н, (R2)=54H, (0=0 ; (АС)=0, (OV)=1 SUBB A,<direct> Времяв циклах: 1. ФлагиPSW CY AC OV Р ПРИМЕР: ; (А)=97Н, (В)=25Н, (0=0 SUBB А, В ; (А)=72Н, (В)=25Н, (0=0 ;(АО=0, (OV)=1 SUBB A,@Ri; где i=O,l Время в циклах: 1. Флаги PSW: С Y AC OV Р ПРИМЕР: ; (А)=4 9Н, (R0)=33H, (С)=1, (03У[33] )=68Н SUBB А, №0 ; (А)=ЕОН, (0=1 ;(АО=0, (OV)=0 SUBBA,#data Время в циклах: 1. Флаги PSW: CY AC OV Р ПРИМЕР: Г(А)=ВЕН, (0=0, SUBB A,#3FH ; (A)=7FH, (0=0 ; (АО=1, (OV)=1 48) Команда SWAP А Команда "обмен тетрадами внутри аккумулятора" осуществляет обмен между младшими четырьмя и старшими четырьмя битами аккумулятора. Эта команда может рассматриваться так же, как комавда четырехбитового цикли- ческого сдвига. На флаги не влияет. SWAP А Время в циклах: 1. Флаги PSW не влияет ПРИМЕР: 123
SWAP A ; (A}=D7H (11C1"111F; ;(Ai=7DH (OlllilOlB) 49) Команда XCH А, --байт > Команда "обмен содержимого аккумулятора с переменной-байтом" осу- ществляет обмен содержимого аккумулятора с содержимым источника, указан- ным в команде. Операнд источника может использовать следующие режимы адресации: регистровый, косвенно-регистровый: прямой. XCHA.Rn ; гдеп=0-7 Время в циклах: 1 Флаги PSW : не влияет ПРИМЕР; ;(А)=ЗСН, (R4)=1SH XCH A,R4 ;(А)=15Н, (R4)=3CH XCH A,<direct> Время в циклах: 1. Флаги PSW : не влияет ПРИМЕР: ;(A)=FEH, (P3)~DAH XCH А,Р 3 ; (A)=DAH, (R4)=FEH XCH A,@Ri, где i=0,l Время в циклах. 1. Флаги PSW : не влияет ПРИМЕР: ;(R1)=39H, (ОЗУ[ 39] )=44Н, (А)=ВСН XCH A,@R1 ;(А)=44Н, (03У[39] )=ВСН 50) Команда XCHD A, @Ri, где i =0,1 Команда "обмен тетрадой" выполняет обмен младшей тетрады аккумуля- тора с содержимым младшей тетрады ячейки внутреннего ОЗУ, косвенная ад- ресация к которой производится с помощью указанного регистра. На старшие биты и флаги команда не влияет. XCHD A/aRi; где 1=0,1 Время в циклах: 1. Флаги PS W: не влияет ПРИМЕР: ;(R0)=55H, (А.)=89Н, (ОЗУ[55])=А2Н XCHD A,6R0 ; (A)=t<2H, (ОЗУ(55])=А9Н 51) Команда ARL <байт нтиачения>,<байт источника'-? Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ для переменных байтов" выполняет операцию ИСКЛЮЧАЮЩЕЕ ИЛИ над битами указанных перемен- ных, записывая результат в байт назначения На флаги эта команда не влияет Режимы адресации: 1) байтом назначения является аккумулятор; регистровый; 124
косвеннофегистровый; прямой; непосредственный; 2) байтом назначения явля- ется прямой адрес (direct): к аккумулятору; к константе. XRLA.Rn ; гдеп=0-7 Время в циклах: 1 Флаги PSW: не влияет ПРИМЕР: ;(А)“€ЗН, (R6) =ААИ XRL A, R6 ; (А)=69Н,_ (R6)=AAH XRL A,<direct> Время в циклах: 1. Флаги PS W : не влияет ПРИМЕР: ;(A)=0FH, (Р1)=А6Н XRL А,Р1 ; (А)=А9Н, (Р1)=А6Н XRL A,@Ri; где i=O,l Время в циклах: 1. Флаги PS W: не влияет ПРИМЕР: ; (А)=55Н, (R1)=77H, (ОЗУ[77])=5АН XRL A,@R1 ;(А)=0ЕН, (ОЗУ[77])=5АН XRLA,#data Время в циклах: 1. Флаги PSW: не влияет ПРИМЕР: ;(А)=СЗН, (R1)=77H, (ОЗУ[77]) = САН XRL A, «F5H ;(А)=36Н XRL<direct>,A Время в циклах: 1. Флаги PSW : не влияет ПРИМЕР: ; (А)=31Н, (Р1)=82Н XRL Р1,А ; (А)=31Н, (Р1)=БЗН XRL <direct>,#data Время в циклах: 2. Флаги PSW: не влияет ПРИМЕР: ; (1Р)=65Н XRL IP, #65Н ; (1Р)=ООН Примечание. Если эта команда используется для работы с портами, то значение, используемое в качестве операнда, считывается из защелки порта, а не с выводов БИС. 125
Приложение В Словарь терминов и сокращений Ассемблер - программа для преобразования текста прикладной програм- мы, содержащей математические обеспечения команд ЭВМ и операндов, в ма- шинные коды Алгоритм - упорядоченный набор действий для решения задач с конеч- ным числом операций, приводящий к детерминирующему ответу. Арифметико-логическое устройство (АЛУ) - основное устройство мик- ропроцессора для выполнения арифметических и логических операций. Байт - наименьшая адресуемая единица информации - восемь двоичных разрядов. Бит - двоичная цифра 0 или 1, или двоичный разряд. Бод - единица скорости передачи по каналам связи двоичной информа- ции последовательным кодом; 1 бод равен одному двоичному разряду, переда- ваемому в секунду. Буфер - схема, обеспечивающая прохождение данных между устройст- вами и шиной данных, а также электрическую изоляцию между отдельными частями системы или согласование их импедансов (полных электрических со- противлений). Вектор прерываний - 3-разрядный двоичный код, используемый цен- тральным процессором для формирования начального адреса одной из восьми возможных подпрограмм обслуживания запроса на прерывание. Время доступа - время, затрачиваемое на обращение к памяти и передачу в микропроцессор одного байта информации. Выборка - машинный цикл, в -течение которого выполняется обращение к памяти и передача в микропроцессор байта, хранимого в ячейке памяти. Двоичная система счисления - система счисления с основанием 2, ис- пользующая только две цифры - 0 и 1. Двоично-десятичное кодирование - способ представления десятичных чисел, в котором каждая десятичная цифра представлена ее двоичным эквива- лентом. Дисплей - устройство отображения визуальной информации на базе элек- тронно-лучевой трубки (экрана телевизора). Дополнительный код - представление отрицательных чисел дополнением до двух Получается из обратного кода прибавлением единицы в младшем дво- ичном разряде. Инициализация - установка всех регистров, флагов и тп. в начальное (исходное) состояние. Интегральная схема (ИС) - изделие микроэлектроники, выполняющее ка- кую-либо функцию обработки сигналов, которые электрически связаны с выво- дами корпуса микросхемы. По степени интеграции ИС делятся на малые инте- гральные схемы - МИС (до 100 элементов на пластине), средние - СИС (до 1 000 элементов) и большие - БИС (свыше 1 000 элементов). 126
Интерпретатор - программа, преобразующая текст прикладной задачи, написанной на языке высокого уровня, в машинные коды ЭВМ путем последо- вательного чтения конструкций языка, их анализа и немедленного исполнения. Интерфейс - совокупность технических средств и правил для взаимодей- ствия устройств вычислительной техники. Карта памяти - схема распределения памяти системы. Кило — в обычном употреблении означает тысячу, однако в вычислитель- ной технике часто используется для обозначения (1Кбайт = 1024 байт) Код операции - комбинация двоичных знаков, указывающая на опреде- ленную машинную операцию. Команда - набор двоичных знаков, воспринимаемый микропроцессором при выполнении определенной операции. Обычная команда состоит либо из кода операции, либо из кода операции плюс данные, либо из кода операции плюс адрес данных. Компилятор - программа преобразования текстов прикладных программ, написанных на языке высокого уровня, в программы - на Ассемблере или в машинных кодах. Магистраль - совокупность шин, служащих для обмена информацией между компонентами системы. Микроассемблер - разновидность Ассемблера, позволяющего обрабаты- вать микроинструкции Машинный цикл - временной интервал, в течение которого микропро- цессор осуществляет одно обращение к памяти или портам. Машинный такт - временной интервал, в течение которого микропроцес- сор выполняет элементарное действие, связанное с адресацией памяти или пор- та, проверкой их готовности к обмену данными, чтением или записью кода то- манды или операнда, выполнением команды и; tp. Микропроцессор (МП) - программно-управляемое устройство, осуществ- ляющее процесс обработки цифровой информации и управления им, построен- ное, как правило, на одной или нескольких БИС. Микропроцессорная система (МПС) - совокупность микропроцессорных средств, используемых для реализации процесса преобразования информации под программным управлением. Микропроцессорный комплект БИС (МК БИС) - совокупность микро- процессорных и других интегральных схем, совместимых по архитектуре, кон- структивному исполнению и электрическим параметрам, Что обеспечивает воз- можность их совместного использования. МикроЭВМ - ЭВМ, состоящая из МП, полупроводниковой памяти, средств связи с периферийными устройствами и, при необходимости, пульта управления и источника питания, объединенных общей конструкцией. Мнемокод - слово или последовательность букв, заменяющая полное слово или фразу, удобную для запоминания. 127
Модем - устройство для приема и передачи последовательных данных через акустическое устройство, необходимое для связи с телефонной линией, поскольку электрическое соединение с телефонной сетью запрещено. Модуль памяти - одна из нескольких микросхем, образующих функцио- нальную единицу памяти для хранения машинных слов. Монитор - программа управления работой ЭВМ путем приема директив, вводимых оператором с помощью клавиатуры терминала, их распознавания и выполнения. Мультиплексная передача — система передачи информации от нескольких устройств по одному каналу. Набор команд - состав команд для конкретного микропроцессора. Обратный код - представление отрицательных чисел дополнением до единицы. Получается из прямого кода инвертированием значения каждого дво- ичного разряда. Объектная программа - программа на языке машины, получаемая, как правило, в результате трансляции исходной программы. Объектный код - команды программы, представленные на машинном языке. Операнд - данные, над которыми выполняется математическая или логи- ческая операция. Оперативное запоминающее устройство (ОЗУ) - запоминающее устрой- ство ЭВМ, обеспечивающее возможность быстрого изменения хранимой ин- формации и служащее для хранения результатов промежуточных вычислений, часто изменяемых данных и программ работы ЭВМ. Операционная система (ОС) - программа, предназначенная для организации процесса обработки информации и управления аппаратурными ресурсами ЭВМ. Отладчик программ - программа для проверки и тестирования приклад- ных программ. Порт - функциональное устройство для организации ввода или вывода данных из (во) внешних устройств (внешние устройства). Постоянное запоминающее устройство (ПЗУ) - запоминающее устройст- во с неизменяемым содержанием. Прикладная (целевая) программа - программа работы микропроцессорно- го устройства, реализующая какой-либо алгоритм обработки информации и размещаемая обычно в ПЗУ. Программатор ПЗУ - устройство для занесения информации в микросхе- мы ПЗУ. Программное обеспечение - упорядоченный набор программ, предназна- ченных для разработки других программ, обработки информационных масси- вов, редактирования текстовых документов и т.д. Прямой доступ к памяти (ПДП) - способ прямого (непосредственного) доступа к памяти, при котором осуществляется взаимный обмен данными меж- ду внешними устройствами и ОЗУ без участ ия микропроцессора. Разделение времени - режим работы ЭВМ, при котором центральный процессор в течение небольших интервалов времени поочередно выполняет не- сколько прикладных программ. 128
Реальный масштаб времени - режим работы ЭВМ, обеспечивающий не- медленную реакцию на запросы внешних устройств и обработку поступающей от них информации. Регистр — ячейка памяти микропроцессора, обычно содержащая одно слово. Регистр состояния - регистр, используемый для хранения информации об определенных условиях, связанных с данными аккумулятора (называется также флаговым регистром). Редактор - программа, позволяющая вводить с клавиатуры терминала произвольные тексты, записывать их во внешнюю память и корректировать ра- нее набранные тексты. Слово - совокупность двоичных разрядов, воспринимаемая при обработ- ке как единое целое и помещаемая для хранения в одну ячейку памяти. Статическая память — ОЗУ, не нуждающееся в непрерывной регенерации, пока включено электропитание, более дорогостоящее по сравнению с динами- ческим ОЗУ. Стек - область памяти, адресуемая с использованием регистра - указате- ля стека. Обращение к стеку производится в соответствии с принципом "по- следний поступивший обслуживается первым". Сумматор с ускоренным переносом - суммирующая схема АЛУ, форми- рующая сигналы переноса сразу для всех двоичных разрядов. Счетчик команд - регистр, содержащий адрес очередной части програм- мы, подлежащей выполнению. Терминал - устройство ввода, например, клавиатура; либо устройство вывода, например, принтер или дисплей; либо и то, и другое вместе. Транслятор - программа, преобразующая программу прикладной задачи из одного вида в другой. Триггер - логический элемент, который может находиться в двух состоя- ниях; используется для хранения двоичных цифр. Тристабильный выход - выход с тремя состояниями: 0, 1 и состоянием высокого импеданса. Указатель стека — регистр, содержимое которого указывает на адрес ячейки, находящейся на дне свободного пространства стека. Файд - форматированный блок данных, рассматриваемый как единица хранения информации. Флаг - триггер, который может устанавливаться или сбрасываться по ре- зультатам протрамм для указания некоторых специфических условий. Шина - совокупность электрических линий, сгруппированных по функ- циональному признаку и предназначенных для передачи информации между компонентами системы. Шинный формирователь - дополнительная микросхема, подключенная к шине данных, выполняющая функции усилителя мощности. Эмулятор - совокупность аппаратных и программных средств, имити- рующих работу^ ЭВМ. 129
СОДЕРЖАНИЕ ОБЩИЕ ПОЛОЖЕНИЯ.................................3 1 АРХИТЕКТУРА И ФУНКЦИОНИРОВАНИЕ МИКРОЭВМ........ 5 2 ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В МИКРОПРОЦЕССОРНЫХ СРЕДСТВАХ. СИСТЕМЫ СЧИСЛЕНИЯ......................... 9 3 ДВОИЧНАЯ АРИФМЕТИКА............................ 18 4 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВСТРОЕННЫХ СИСТЕМ УПРАВЛЕНИЯ НА БАЗЕ ОДНОКРИСТАЛЬНЫХ МП.................22 5 ОРГАНИЗАЦИЯ ИНТЕРФЕЙСА В МИКРОЭВМ................41 6 ВСТРОЕННЫЕ МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ НА ОСНОВЕ ОДНОКРИСТАЛЬНЫХ МИКРОЭВМ....................48 7 ОБРАБОТКА СИ1 НАЛОВ НА ОСНОВЕ MCS-51..........70 IГЕРЕ ЧЕНЬ ССЫЛОК 9 j Приложение А Указания по выполнению схем алгоритмов.92 Приложение Б Описание машинных команд...............99 Приложение В Словарь терминов и сокращений.........126 130
Навчальне видання ОБЧИСЛЮВАЛЬН! ТАМПСРОПРОЦЕСОРЫ ЗАСОБИ В ЕЛЕКТРОННИХ АПАРАТАХ. Навчальний noci Они к для студенте ycix форм навчання спещальностей: 7.091001,7.091002,7.091003,7.091004 виндах навчальнихзакладв. ЛИСЕ!IKOB Микола Олександрович Вдаповщальний випусковий В М. Свйенко Редактор О.Г. Троценко Комп’ютерна верстка О.Г. Стопченко
План 20Q£p. поз. 39 Пщп. до друку 26.12.2001 Формат 60x84 № 1/16 Умов.друк.арк 7,7 Облж. вид. арк. 6,8 Тираж 80 прим. Зам.№1-21 Ц1на догов1рна.________________________________________________________ ХНУРЕ, 61166 Харюв, проспект Лешна, 14 Надруковано в учбово-виробничому виданпичо-полпраф1чному центр! ХНУРЕ 61166 Харюв, проспект Jlenina, 14