На бирже курсовых и дипломных проектов можно найти образцы готовых работ или получить помощь в написании уникальных курсовых работ, дипломов, лабораторных работ, контрольных работ, диссертаций, рефератов. Так же вы мажете самостоятельно повысить уникальность своей работы для прохождения проверки на плагиат всего за несколько минут.

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


реферат Состав семейства MCS-51

Информация:

Тип работы: реферат. Добавлен: 13.08.2012. Сдан: 2011. Страниц: 34. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Состав семейства MCS-51 

В настоящее  время среди всех 8-разрядных микроконтроллеров - семейство MCS-51 является несомненным  чемпионом по количеству разновидностей и количеству компаний, выпускающих  его модификации. Оно получило свое название от первого представителя этого семейства - микроконтроллера 8051, выпущенного в 1980 году на базе технологии n-МОП. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке. С точки зрения технологии микроконтроллер 8051 являлся для своего времени очень сложным изделием - в кристалле было использовано 128 тыс. транзисторов, что в 4 раза превышало количество транзисторов в 16-разрядном микропроцессоре 8086. 

Важную роль в достижении такой высокой популярности семейства 8051 сыграла открытая политика фирмы Intel, родоначальницы архитектуры, направленная на широкое распространение  лицензий на ядро 8051 среди большого количества ведущих полупроводниковых  компаний мира. 

В результате на сегодняшний день существует более 200 модификаций микроконтроллеров  семейства 8051, выпускаемых почти 20-ю  компаниями. Эти модификации включают в себя кристаллы с широчайшим спектром периферии: от простых 20-выводных устройств с одним таймером и 1К программной памяти до сложнейших 100-выводных кристаллов с 10-разрядными АЦП, массивами таймеров-счетчиков, аппаратными 16-разрядными умножителями и 64К программной памяти на кристалле. Каждый год появляются все новые варианты представителей этого семейства. Основными направлениями развития являются: увеличение быстродействия (повышение тактовой частоты и переработка архитектуры), снижение напряжения питания и потребления, увеличение объема ОЗУ и FLASH памяти на кристалле с возможностью внутрисхемного программирования, введение в состав периферии микроконтроллера сложных устройств типа системы управления приводами, CAN и USB интерфейсов и т.п. 

Микросхемы для  этого семейства производятся целым  рядом фирм различных стран мира таких как Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems и ряд других. Микроконтроллеры семейства MCS 51 выпускают и российские заводы. Производство микроконтроллера 8051 осуществлялось в Киеве, Воронеже (1816ВЕ31/51, 1830ВЕ31/51), Минске (1834ВЕ31) и Новосибирске (1850ВЕ31). В качестве примера, в таблице 1 приведены названия нескольких микросхем, производимых зарубежными фирмами, в таблице 2 приведены микросхемы российского производства. 

Таблица 1. Микросхемы, производимые зарубежными фирмамиМикроконтроллер ОЗУ ПЗУ EEPROM SPI Таймеры PCA PCA1 АЦП
AT89C1051 128 байт 1К байт - - 2 - - комп
AT89C2051 128 байт 2К байт - - 2 - - комп
I8051 128 байт 4К байт - - 2 - - -
I8031 128 байт - - - 2 - - -
I8Х52 256 байт 8К байт - - 3 - - -
AT89c52 256 байт 8К байт - - 3 - - -
AT89с8252 256 байт 8К байт 2K байт + 3 - - -
AT89c55 256 байт 20К байт - - 3 - - -
I8Х54 256 байт 16К байт - - 3 - - -
I8Х58 256 байт 32К байт - - 3 - - -
I8Х51FA 128 байт 8К байт - - 4 + - -
I8Х51FB 256 байт 16К байт - - 4 + - -
I8Х51FC 256 байт 32К байт - - 4 + - -
I8Х51GB 256 байт 8К байт - + 5 + + + 
 

Примечание: вместо символа 'X' в названии микроконтроллера должны стоять символы:
0 - n-МОП без  ПЗУ
3 - n-МОП с ПЗУ
7 - n-МОП с РПЗУ
0с - КМОП без  ПЗУ
3с - КМОП с ПЗУ
7с - КМОП с  РПЗУ
9с - КМОП с  FLASH 

Таблица 2. Микросхемы российского производстваМикроконтроллер ОЗУ ПЗУ ППЗУ Таймер 2 PCA PCA1 АЦП
КР1816ВЕ51 128 байт 4К байт - - - - -
КР1816ВЕ751 128 байт - 4К байт - - - -
КР1816ВЕ31 128 байт - - - - - -
КР1830ВЕ51 128 байт 4К байт - - - - -
КР1830ВЕ751 128 байт - 4К байт - - - -
КР1830ВЕ 31 128 байт - - - - - - 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Архитектура микроконтроллеров MCS-51 

Архитектура семейства MCS-51 в значительной мере предопределяется ее назначением - построение компактных и дешевых цифровых устройств. Все функции микроЭВМ реализуются с помощью единственной микросхемы. В состав семейства MCS-51 входит целый ряд микросхем от самых простых микроконтроллеров до достаточно сложных. Микроконтроллеры семейства MCS-51 позволяют выполнять как задачи управления различными устройствами, так и реализовывать отдельные узлы аналоговой схемы. Все микросхемы этого семейства работают с одной и той же системой команд, большинство из них выполняется в одинаковых корпусах с совпадающей цоколевкой (нумерация ножек для корпуса). Это позволяет использовать для разработанного устройства микросхемы разных фирм - производителей (таких как Intel, Dallas, Atmel, Philips и т.д.) без переделки принципиальной схемы устройства и программы. 


Рис 1. Структурная  схема контроллера К1830ВЕ751 

Структурная схема  контроллера представлена на рис.1. и состоит из следующих основных функциональных узлов: блока управления, арифметико-логического устройства, блока таймеров/счетчиков, блока  последовательного интерфейса и прерываний, программного счетчика, памяти данных и памяти программ. Двусторонний обмен осуществляется с помощью внутренней 8-разрядной магистрали данных. Рассмотрим подробнее назначение каждого блока. По такой схеме построены практически все представители семейства MCS-51. Различные микросхемы этого семейства различаются только регистрами специального назначения (в том числе и количеством портов). Система команд всех контроллеров семейства MCS-51 содержит 111 базовых команд с форматом 1, 2 или 3 байта и не изменяется при переходе от одной микросхемы к другой. Это обеспечивает прекрасную переносимость программ с одной микросхемы на другую. 

Блок управления и синхронизации 

Блок управления и синхронизации (Timing and Control) предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков ОЭВМ во всех допустимых режимах ее работы.В состав блока управления входят:
устройство формирования временных интервалов,
логика ввода-вывода,
регистр команд,
регистр управления потреблением электроэнергии,
дешифратор команд, логика управления ЭВМ. 

Устройство формирования временных интервалов предназначено  для формирования и выдачи внутренних синхросигналов фаз, тактов и циклов. Количество машинных циклов определяет продолжительность выполнения команд. Практически все команды ОЭВМ выполняются за один или два машинных цикла, кроме команд умножения и деления, продолжительность выполнения которых составляет четыре машинных цикла. Обозначим частоту задающего генератора через Fг. Тогда длительность машинного цикла равна 12/Fг или составляет 12 периодов сигнала задающего генератора. Логика ввода - вывода предназначена для приема и выдачи сигналов, обеспечивающих обмен информации с внешними устройствами через порты ввода вывода Р0-Р3. 

Регистр команд предназначен для записи и хранения 8-ми разрядного кода операции выполняемой  команды. Код операции, с помощью  дешифратора команд и логики управления ЭВМ, преобразуется в микропрограмму выполнения команды. 

Регистр управления потреблением (PCON) позволяет останавливать работу микроконтроллера для уменьшения потребления электроэнергии и уменьшения уровня помех от микроконтроллера. Еще большего уменьшения потребления электроэнергии и уменьшения помех можно добиться, остановив задающий генератор микроконтроллера. Этого можно достичь при помощи переключения бит регистра управления потреблением PCON. Для варианта изготовления по технологии n-МОП (серия 1816 или иностранных микросхем, в названии которых в середине отсутствует буква 'c') регистр управления потреблением PCON содержит только один бит, управляющий скоростью передачи последовательного порта SMOD, а биты управления потреблением электроэнергией отсутствуют. 

Арифметико-логическое устройство (ALU) представляет собой параллельное восьмиразрядное устройство, обеспечивающее выполнение арифметических и логических операций. АЛУ состоит из:
регистров аккумулятора, регистров временного хранения TMP1 и TMP2,
ПЗУ констант,
сумматора,
дополнительного регистра (регистра В),
аккумулятора (ACC),
регистра состояния  программ (PSW). 

Регистр аккумулятор  и регистры временного хранения - восьмиразрядные  регистры, предназначенные для приема и хранения операндов на время  выполнения операций над ними. Эти  регистры программно не доступны. 

ПЗУ констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении  данных, кода маски при битовых  операциях и кода констант. 

Параллельный  восьмиразрядный сумматор представляет собой схему комбинационного  типа с последовательным переносом, предназначенную для выполнения арифметических операций сложения, вычитания и логических операций сложения, умножения, неравнозначности и тождественности. 

Регистр B - восьмиразрядный  регистр, используемый во время операций умножения и деления. Для других инструкций он может рассматриваться как дополнительный сверхоперативный регистр. 

Аккумулятор - восьмиразрядный  регистр, предназначенный для приема и хранения результата, полученного  при выполнении арифметико-логических операций или операций сдвига 

Блок последовательного  интерфейса и прерываний (ПИП) предназначен для организации ввода - вывода последовательных потоков информации и организации  системы прерывания программ. В состав блока входят:
буфер ПИП,
логика управления,
регистр управления,
буфер передатчика,
буфер приемника,
приемопередатчик  последовательного порта,
регистр приоритетов  прерываний,
регистр разрешения прерываний,
логика обработки  флагов прерываний и схема выработки  вектора. 

Счетчик команд (Program Counter) предназначен для формирования текущего 16-разрядного адреса внутренней памяти программ и 8/16-разрядного адреса внешней памяти программ. В состав счетчика команд входят 16-разрядные буфер РС, регистр РС и схема инкремента (увеличения содержимого на 1). 

Память данных (RAM) предназначена для временного хранения информации, используемой в процессе выполнения программы. 

Порты P0, P1, P2, P3 являются квазидвунаправленными портами  ввода - вывода и предназначены для  обеспечения обмена информацией  ОЭВМ с внешними устройствами, образуя 32 линии ввода- вывода. 

Регистр состояния  программы (PSW) предназначен для хранения информации о состоянии АЛУ при  выполнении программы. 

Память программ (EPROM) предназначена для хранения программ и представляет собой постоянное запоминающее устройство (ПЗУ). В разных микросхемах применяются масочные, стираемые ультрафиолетовым излучением или FLASH ПЗУ. 

Регистр указателя  данных (DPTR) предназначен для хранения 16 - разрядного адреса внешней памяти данных или памяти программ. 

Указатель стека (SP) представляет собой восьмиразрядный регистр, предназначенный для организации особой области памяти данных (стека), в которой можно временно сохранить любую ячейку памяти. 

Система команд микроконтроллеров MCS-51 

Система команд микроконтроллера предоставляет большие возможности обработки данных, обеспечивает реализацию логических, арифметических операций, а также управление в режиме реального времени. 

В этой системе  команд реализована побитная, потетрадная (4 бита), побайтовая (8 бит) и 16-разрядная  обработка данных. Микросхемы семейства MCS-51 - это 8-разрядные микропроцессоры, а это означает, что ПЗУ, ОЗУ, регистры специального назначения, АЛУ и внешние шины имеют байтовую организацию. Двухбайтовые данные используются только регистром-указателем (DPTR) и счетчиком команд (PC). 

В машинном коде команда занимает один, два или  три байта в зависимости от типа адресации. 

Команды выполняются  за один, два или четыре (умножение  и деление) машинных цикла. 

Запись команд в машинных кодах для человека неудобна, кроме того, разные машинные команды выполняют одинаковые действия только над разными ячейками памяти. Поэтому для записи команд микропроцессоров была придумана система мнемонических обозначений. Для записи команды микропроцессора сначала ставится мнемоническое обозначение, затем указывается ячейка памяти – приёмник результата выполнения операции и наконец источник данных для выполнения операции. Например, в команде
E535        MOV A, 35h 

символы MOV обозначают операцию копирования, второй операнд 35 определяет, что данные необходимо взять из 35 ячейки памяти, а первый операнд A определяет, что результат необходимо поместить в регистр – аккумулятор. При этом старое значение регистра – аккумулятора будет стёрто. Слева приведена машинная команда микроконтроллера в шестнадцатеричной записи, соответствующая мнемонической записи команды. 

Мнемоническое обозначение команды отделяется от операндов одним или несколькими  символами пробела или табуляции, а операнды отделяются друг от друга  запятыми. 

Если операция требует для выполнения двух источников и одного приёмника результата операции (например, команда сложения ADD или вычитания SUBB), то первый операнд является одновременно и источником и приёмником результата операции. Например, в команде
2535        ADD A, 35h 

символы ADD обозначают операцию сложения двух чисел, данные будут взяты из 35 ячейки памяти и аккумулятора а результат будет помещён в аккумулятор вместо старого значения этого регистра. 

В таблице 1 приведены  инструкции, влияющие на установку  флагов микроконтроллера. 

Таблица 1
Мнемоника 
Флаги 
Мнемоника 
Флаги 


OV 
AC 

OV 
AC 

ADD 



CLR C 
0     

ADDC 



CPL C 
+     

SUBB 



ANL C, bit 
+     

MUL 

+   
ANL C, /bit       

DIV 

+   
ORL C, bit 
+     

DA 
+     
ORL C, /bit 
+     

RRC 
+     
MOV C, bit 
+     

RLC 
+     
CJNE 
+     

SETB C 
1             
 

Систему команд микроконтроллера условно можно  разбить на пять групп:
арифметические  команды
логические команды  с байтовыми переменными
команды передачи данных
команды битового процессора
команды ветвления  программ и передачи управления
Арифметические  команды 

В наборе команд микроконтроллера имеются следующие  арифметические операции:
сложение ADD,
сложение с  учетом флага переноса ADDC,
вычитание с  заемом SUBB,
инкрементирование (увеличение на 1) INC,
декрементирование (уменьшение на 1) DEC,
десятичная коррекция DA,
умножение MUL
деление DIV. 

Действия производятся над целыми числами без знака. 

При операции умножения  содержимое аккумулятора A умножается на содержимое регистра B, и результат размещается следующим образом: младший байт в регистре B, старший - в регистре А. 

В случае выполнения операции деления целое от деления  помещается в аккумулятор A, остаток - в регистр В.
Логические команды  с байтовыми переменными. 

Система команд рассматриваемого микроконтроллера позволяет реализовать логические операции
И ( ANL),
ИЛИ ( ORL),
ИСКЛЮЧАЮЩЕЕ ИЛИ ( XRL). 

Логические операции выполняются над аккумулятором  или непосредственно над портами  ввода/вывода. 

Существуют логические операции, которые выполняются только на аккумуляторе:
сброс всех восьми разрядов A ( CLR A);
инвертирование  всех восьми разрядов A ( CPL A );
циклический сдвиг  влево и вправо без учета флага  переноса ( RR A; RL A);
циклический сдвиг  влево и вправо с учетом флага переноса ( RRC A; RLC A);
обмен местами  старшей и младшей тетрад внутри аккумулятора ( SWAP A).
Команды пересылки  данных. 

Как было рассмотрено  ранее, арифметические и логические команды могут быть выполнены  только над содержимым регистра аккумулятора, поэтому исключительно важное значение в системе команд приобретают команды пересылки данных. С помощью этих команд можно скопировать содержимое любой ячейки памяти в регистр-аккумулятор или наоборот скопировать содержимое аккумулятора в любую ячейку памяти. Так как в микроконтроллере присутствует три независимых области памяти, то для обращения к ним введены различные команды:
копирование данных во внутреннем ОЗУ: MOV;
обмен данными  аккумулятора с внутренним ОЗУ: XCH, XCHD
копирование из внешней памяти данных: MOVX
копирование данных из памяти программ: MOVC 

Примеры использования  команд пересылки данных: 

Любая ячейка 256- байтового блока внутреннего  ОЗУ данных может быть выбрана  с использованием косвенно-регистровой  адресации через регистры указатели R0 и R1 (выбранного банка рабочих регистров):
MOV A, @R0             ;Скопировать число из ячейки  памяти с адресом, хранящемся  в R0, в аккумулятор
MOV @R1, A             ;Скопировать число из аккумулятора, в ячейку памяти с адресом,  хранящемся в R1 

Команды пересылки с прямой адресацией между ячейками памяти позволяют заносить содержимое порта в ячейку внутреннего ОЗУ или обмениваться содержимым ячеек внутреннего ОЗУ между собой без использования аккумулятора:
MOV 15, 25            ;Скопировать содержимое 25-й ячейки  в 15-ю ячейку 

Таблицы символов (кодов), записанные в ПЗУ программы  могут быть скопированы в аккумулятор  с помощью команд передачи данных с косвенной адресацией:
MOVC A, @A+DPTR         ;Скопировать символ в аккумулятор 

Ячейка адресного  пространства 64 Кбайт внешнего ОЗУ также может быть выбрана с использованием косвенно-регистровой адресации через регистр указатель данных DPTR:
MOVX A, @DPTR          ;Скопировать число из внешней  ячейки памяти с адресом, ;хранящемся  в DPTR, в аккумулятор 

Содержимое аккумулятора может быть обменено с содержимым рабочих регистров выбранного банка:
XCH A, R0. 

Кроме того, любой  бит с прямой адресацией может  быть скопирован в бит переноса и  наоборот:
MOV C, AdrBit
Битовые команды. 

Каждый бит  из битового пространства внутренней памяти может быть установлен в 1, сброшен в 0, или инвертирован:
установить бит (записать логическую единицу) SETB;
сбросить бит (записать логический ноль) CLR;
проинвертировать  значение бита (изменить на прямо противоположное) CPL;
бит может быть записан во флаг переноса или считан из флага переноса MOV. 

Могут быть реализованы  переходы:
если бит установлен (содержит логическую 1) JB;
если бит не установлен (содержит логический 0) JNB;
переход, если бит  установлен со сбросом этого бита после выполнения команды (запись в этот бит 0) JBC; 

Между любым  битом из битового пространства внутренней памяти и флагом переноса могут быть произведены логические операции "И" или "ИЛИ".
И ( ANL),
ИЛИ ( ORL),
Команды ветвления  и передачи управления. 

Команды ветвления позволяют реализовывать условные операторы и операторы циклов. В микроконтроллерах семейства MCS-51 доступны следующие команды:
безусловный переход: LJMP, AJMP, SJMP
Вызов и возврат  из подпрограммы: LCALL, ACALL, RET, RETI
проверка содержимого  аккумулятора: JZ, JNZ, CJNE, JMP
проверка флага  переноса С: JC, JNC
проверка содержимого  любого бита в битовом пространстве: JB, JNB, JBC 

Команды 16-разрядных  безусловных переходов и вызовов  подпрограмм позволяют осуществить  переход в любую точку адресного  пространства памяти программ объемом до 64 Кбайт. Примеры команд:
LJMP Metka            ;Переход к команде, расположенной  по адресу обозначенному меткой  ‘Metka’
LCALL Podprogramma    ;Вызов подпрограммы по адресу, обозначенному меткой ‘Podprogramma’ 

Команды 11-разрядных переходов и вызовов подпрограмм позволяют сократить объем программы, но при этом обеспечивают переходы только внутри программного модуля 2 Кбайт. Эти команды принципиально могут приводить к необнаруживаемым транслятором ошибкам, когда программный модуль размещается на двух соседних 2 Кбайтовых сегментах памяти.
AJMP Metka            ;Переход к команде, расположенной  по адресу обозначенному меткой  ‘Metka’
ACALL Podprogramma    ;Вызов подпрограммы по адресу, обозначенному меткой ‘Podprogramma’ 

В системе команд имеются команды условных и безусловных переходов относительно начального адреса следующей команды в пределах от (РС)-127 до (РС)+127. Примеры команд:
SJMP Metka                   ;Переход к команде, расположенной  по адресу обозначенному меткой ‘Metka’
JB P3.5, TstNxtUsl           ;Если на 6 выводе порта P3 нулевой  потенциал,
  ACALL Podprogramma            ;то вызвать подпрограмму, обозначенную  меткой ‘Podprogramma’
CJNE A, #5, TstNxtUsl        ;Если в аккумуляторе содержится  число 5,
  ACALL Podprogramma            ;то вызвать подпрограмму, обозначенную меткой ‘Podprogramma’ 

Команды проверки содержимого аккумулятора и флага  переноса C могут быть использованы для реализации проверки различных  условий. При этом содержимое не изменяется, то есть если требуется произвести несколько проверок одной и той же переменной, то повторно заносить значение этой переменной в аккумулятор не нужно. Например:
  MOV A, 34            ;Если в переменной, хранящейся  в ячейке внутренней памяти 34
  JNB ACC_7, TstEQ5    ;число меньше нуля,
    CALL Podprogramma    ;то вызвать подпрограмму, обозначенную  меткой ‘Podprogramma’
TstEQ5 ;------------------------------------------------------------------------------------------------------
  CJNE A,#5,TstLT5     ;Если в переменной, хранящейся в ячейке внутренней памяти 34 занесено число 5,
    CALL Podpr5          ;то вызвать подпрограмму, обозначенную  меткой ‘Podpr5’
TstLT5 ;------------------------------------------------------------------------------------------------------
  JNС TstGE5           ;Если в переменной, хранящейся  в ячейке внутренней памяти 34 занесено число, меньшее 5,
    CALL PodprLT5        ;то вызвать подпрограмму, обозначенную  меткой ‘PodprLT5’
TstGE5 ;---------------------------------------------------------------------------------
  JC TstNxtUsl         ;Если в переменной, хранящейся  в ячейке внутренней памяти 34 занесено число, большее или  равное 5,
    CALL PodprGE5        ;то вызвать подпрограмму, обозначенную  меткой ‘PodprGE5’
TstGT5 ;------------------------------------------------------------------------------------------------------
  CJNE A,#6,$+3        ;Если в переменной, хранящейся  в ячейке внутренней памяти 34
  JC TstNxtUsl         ;занесено число, большее 5,
    CALL PodprGT5        ;то вызвать подпрограмму, обозначенную меткой ‘PodprGT5’
;---------------------------------------------------------------------------------
  JNC TstNxtUsl        ;Если в переменной, хранящейся  в ячейке внутренней памяти 34 занесено число, меньшее или  равное 5,
    CALL PodprLE5        ;то вызвать подпрограмму, обозначенную меткой ‘PodprLE5’ 

Как видно из приведённых примеров, команды переходов  этого микроконтроллера позволяет  реализовать намного более эффективные  по количеству команд программы по сравнению с другими процессорами, такими как, например MCS-48. 

Косвенный переход JMP @A+DPTR в системе команд микроконтроллеров  семейства MCS-51 обеспечивает ветвление  программы по содержимому аккумулятора А. Это позволяет реализовывать  операцию перехода по заданному коду, эквивалентную оператору case в языке программирования pascal, но намного быстрее (за два машинных цикла). Использование в этой команде указателя данных DPTR позволяет размещать таблицу переходов в любом месте памяти программ. Пример реализации команды выбора варианта:
BeginOpCase: ;Начало  команды выбора вариантов------------------------------------------------------
  MOV DPTR, #JMP_TBL ;Задать  начальный адрес таблицы переходов
  MOV A, 33          ;В этой ячейке хранится переменная, по которой необходимо осуществить переход на обслуживающую программу 

  CLR C              ;Осуществить арифметический сдвиг  аккумулятора вправо
  RLC A              ;(умножить на 2) т.к. команды переходов  занимают два байта 

  JMP @A+DPTR        ;Перейти к выполнению заданного в 33 ячейке кода
 
JMP_TBL:    ;начало таблицы переходов по  содержимому переменной в ячейке  памяти 33-----------------
     JMP Case0       ;Перейти к  выполнению кода по числу 0
     JMP Case1       ;Перейти к  выполнению кода по числу 1
     JMP EndCase     ;Это число в ячейке 33 в список разрешённых не входит
     JMP EndCase     ;Это число в  ячейке 33 в список разрешённых  не входит
     JMP Case4       ;Перейти к  выполнению кода по числу 4
EndCase:;------------------------------------------------------------------------------------------
Способы адресации  операндов. 

При определении  способа адресации операндов  в команде необходимо учитывать, что адресация для каждого  операнда команды своя. В общем  случае адресация источника и  приёмника могут не совпадать. 

Неявная адресация  При неявной адресации регистр  источник или регистр приёмник подразумевается  в самом коде операции. Например:
03      RR A      ;Сдвинуть содержимое  аккумулятора вправо
D4      DA A      ;Произвести десятичную  коррекцию результата суммирования
E8      MOV A, R0 ;В первом операнде использована  неявная адресация, а во втором - регистровая 

Регистровая адресация  используется для обращения к  восьми рабочим регистрам выбранного банка рабочих регистров, а также  для обращения к регистрам  А, В, АВ (сдвоенному регистру), DPTR, и к флагу переноса С. Номер регистра записывается в трех младших битах команды. Например:
F8      MOV R5, A ;в первом операнде использована  регистровая адресация, а во  втором - неявная 

Прямая байтовая адресация используется для обращения к ячейкам внутренней памяти (ОЗУ) данных (адреса 0:127) и к регистрам специального назначения (адреса 128:256). Адрес ячейки памяти помещается во второй байт команды. Например:
E520    MOV A, 20h ;во втором операнде использована  прямая байтовая адресация, а в первом – неявная
8D15    MOV 15h,R6 ;в первом операнде использована  прямая байтовая адресация, а  во втором – регистровая 

Прямая битовая  адресация используется для обращения  к отдельно адресуемым 128 битам, расположенным  в ячейках с адресами 20Н-2FH, и к отдельно адресуемым битам регистров специального назначения. Например:
D220    SETB 20h ;использована прямая битовая  адресация
C215    CLR  15h ;использована прямая битовая  адресация 

Косвенно-регистровая  адресация используется для обращения к ячейкам внутреннего ОЗУ данных. В качестве регистров-указателей адреса используются регистры R0, R1 выбранного банка регистров. Например:
E6    MOV A,@R0 ;В первом операнде использована  неявная адресация, а во втором - косвенно-регистровая
F7    MOV @R1,A ;В первом операнде использована косвенно-регистровая адресация, а во втором - неявная 

Косвенно - регистровая  адресация используется также для  обращения к внешней памяти данных. В этом случае с помощью регистров- указателей R0 и R1 (рабочего банка рабочих регистров) выбирается ячейка из блока 256 байт внешней памяти данных. Номер блока предварительно задается содержимым порта Р2. Например:
E2    MOVX A,@R0 ;В первом операнде использована  неявная адресация, а во втором - косвенно-регистровая
F3    MOVX @R1,A ;В первом операнде использована косвенно-регистровая адресация, а во втором - неявная 

Если в качестве регистра - указателя используется 16 - разрядный указатель данных (DPTR), то можно выбрать любую ячейку внешней памяти данных объемом до 64 Кбайт. (В некоторых моделях микроконтроллеров семейства MSC-51 таким образом можно обращаться к внутренней памяти данных объемом более 256 байт).
E0    MOVX A,DPTR;В  первом операнде использована  неявная адресация, а во втором - косвенно-регистровая
F0    MOVX DPTR,A;В первом операнде использована косвенно-регистровая адресация, а во втором - неявная 

Косвенно-регистровая  адресация по сумме базового и  индексного регистра (содержимое аккумулятора А) упрощает просмотр таблиц, записанных в памяти программ. Любой байт из таблицы может быть выбран по адресу, определяемому суммой содержимого DPTR или РС и содержимого А, например:
83    MOV A, @A+PC ;В первом операнде использована  неявная адресация, а во втором - косвенно-регистровая
93    MOV A, @A+DPTR ;В первом операнде использована неявная адресация, а во втором - косвенно-регистровая. 

Непосредственная  адресация позволяет выбрать  из адресного пространства памяти программ константы, явно указанные в команде, например:
7414    MOV A, #14h      ;В первом операнде  использована неявная адресация, а во втором - непосредственная
902048  MOV DPTR, #2048h ;В первом операнде использована  неявная адресация, а во втором  – непосредственная 

Описание  машинных команд 

ACALL <addr 11> - абсолютный  вызов подпрограммы. 

Описание: вызывает подпрограмму, размещенную по указанному адресу <addr 11>. Команда увеличивает содержимое счетчика команд на 2 и затем помещает полученный результат в стек (младший байт первым). После это содержимое указателя стека SP увеличивается на 2. Т.к. в команде используется 11-разрядный адрес, полученный соединением пяти старших бит счетчика команд и второго байта команды, то подпрограмма должна начинаться в пределах той же 2K-байтной страницы. Команда не воздействует на флаги. 

Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
(SP) = (SP) + 1
((SP)) = (PC7-0)
(SP) = (SP) + 1
((SP)) = (PC15-8)
(PC10-0) = адрес  подпрограммы (метки)
Машинный код:
a10 a9 a8  1  0  0  0  1
a7  a6 a5 a4 a3 a2 a1 a0 

Пример:
адрес   команда   исходный текст
1000    7111      ACALL 311h 

Действие команды:
до команды    после команды
PC=1000       PC=0311
*SP=35        *SP=1002 

ADD A, <байт-источник> - сложение. 

Описание: складывает содержимое аккумулятора А с содержимым байта- источника. Результат операции помещается в аккумулятор. Флаг переноса C устанавливается при переносе из 7го разряда. Флаг вспомогательного переноса AC устанавливается при переносе из 3го разряда. При сложении знаковых чисел флаг переполнения OV устанавливается при превышении максимального положительного числа или при получении числа меньшего минимально возможного. 

Для команды  сложения разрешены следующие режимы адресации: 

1) Первый операнд  - неявная, второй операнд - регистровая; 

Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = (A) + (Rn) , n=0,1,2,3,4,5,6,7
Машинный код:
0 0 1 0 1 r r r 

Пример:
адрес   команда   исходный текст
0000    2F        ADD A, R7 

Действие команды:
до команды    после команды
PC=0000       PC=0001
A=35          A=7A
R7=46         R7=46
C=0           C=0 

2) Первый операнд  - неявная, второй операнд - косвенно-регистровая; 

Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = (A) + ((Ri)) , i=0,1
Машинный код:
0 0 1 0 0 1 1 i 

Пример:
адрес   команда   исходный текст
0010    26        ADD A, @R0 

Действие команды:
до команды    после команды
PC=0010       PC=0011
R0=15         R0=15
A=95          A=16
*15=81       *15=81
C=0           C=1 

3) Первый операнд  - неявная, второй операнд - прямая; 

Количество байт: 2
Количество циклов: 1
Действие команды:
(PC) = (PC) + 2
(A) = (A) + (direct)
Машинный код:
0 0 1 0 0 1 0 1
d d d d d d d d 

Пример:
адрес   команда   исходный текст
0012    2564      ADD A, 100 

Действие команды:
до команды    после команды
PC=0012       PC=0014
A=95          A=96
*100=01       *100=81
C=1           C=0 

4) Первый операнд  - неявная, второй операнд - непосредственная. 

Пример: ADD A, #38h 

Количество байт: 2
Количество циклов: 1
Действие команды:
(PC) = (PC) + 2
(A) = (A) + (date 8)
Машинный код:
0 0 1 0 0 1 0 0
i i i i i i i i 

Пример:
адрес   команда   исходный текст
0014    2564      ADD A, #38h 

Действие команды:
до команды    после команды
PC=0014       PC=0016
A=95          A=CD
C=1           C=0 

ADDC A, <байт-источник> - сложение с учетом переноса. 

Описание: складывает содержимое аккумулятора А с содержимым байта-источника, к получившемуся  результату прибавляется значение флага  переноса. Результат операции помещается в аккумулятор. Флаг переноса C устанавливается  при переносе из 7го разряда. Флаг вспомогательного переноса AC устанавливается при переносе из 3го разряда. При сложении знаковых чисел флаг переполнения OV устанавливается при превышении максимального положительного числа или при получении числа меньшего минимально возможного. Для команды сложения разрешены следующие режимы адресации байта - источника:
регистровая; 

Пример: ADDC A, R3 

Количество байт: 1 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 1 

(A) = (A) + (C) + (Rn) , n=0, : ,7 

Машинный код: 0 0 1 1 1 r r r
косвенно-регистровая; 

Пример: ADDC A, @R0 

Количество байт: 1 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 1 

(A) = (A) + (C) + ((Ri)) , i=0,1 

Машинный код: 0 0 1 1 0 1 1 i
прямая; 

Пример: ADDC A, 30h 

Количество байт: 2 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 2 

(A) = (A) + (C) + (direct) 

Машинный код: 

0 0 1 1 0 1 0 1 

d d d d d d d d
непосредственная. 

Пример: ADDC A, #100 

Количество байт: 2 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 2 

(A) = (A) + (C) + (date 8) 

Машинный код: 

0 0 1 1 0 1 0 0 

i i i i i i i i 

AJMP <addr 11> - абсолютный  переход в пределах 2K-байтной  страницы. 

Описание: передает управление команде, размещенной по указанному адресу <addr 11>. Команда  увеличивает содержимое счетчика команд на 2 и затем заменяет младший байт счетчика команд на содержимое второго байта команды. Три младших бита старшего байта заменяются тремя старшими битами первого байта команды. Т.к. в команде используется 11- разрядный адрес, то адрес перехода должен начинаться в пределах той же 2K-байтной страницы памяти программ. 

Пример: AJMP 1024 

Количество байт: 2 

Количество циклов: 2 

Действие команды: 

(PC) = (PC) + 2 

(PC10-0) = адрес  метки 

Машинный код: 

a10 a9 a8 0 0 0 0 1 

a7 a6 a5 a4 a3 a2 a1 a0 

ANL <байт приемник>,<байт  источник> - команда "логическое  И" для байтовых переменных. 

Описание: выполняет  операцию побитового "логического  И" над указанными переменными и помещает результат в байт приемник. Команда не воздействует на флаги. 

Для команды ANL с  аккумулятором в качестве байта  назначения разрешены следующие  режимы адресации байта - источника:
регистровая; 

Пример: ANL A, R3 

Количество байт: 1 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 1 

(A) = (A) & (Rn) , n=0,1,2,3,4,5,6,7 

Машинный код: 0 1 0 1 1 r r r
косвенно-регистровая; 

Пример: ANL A, @R0 

Количество байт: 1 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 1 

(A) = (A) & ((Ri)) , i=0,1 

Машинный код: 0 1 0 1 0 1 1 i
прямая; 

Пример: ANL A, 30h 

Количество байт: 2 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 2 

(A) = (A) & (direct) 

Машинный код: 

0 1 0 1 0 1 0 1 

d d d d d d d d
непосредственная. 

Пример: ANL A, #100 

Количество байт: 2 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 2 

(A) = (A) & (date 8) 

Машинный код: 

0 1 0 1 0 1 0 0 

i i i i i i i i 

Для команды ANL с  произвольным адресом ячейки внутренней памяти данных в качестве байта назначения разрешены следующие режимы адресации  байта - источника:
прямая; 

Пример: ANL 30h,A 

Количество байт: 2 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 2 

(direct) = (A) & (direct) 

Машинный код: 

0 1 0 1 0 0 1 0 

d d d d d d d d
непосредственная. 

Пример: ANL direct, #100 

Количество байт: 3 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 3 

(direct) = (A) & (date 8) 

Машинный код: 

0 1 0 1 0 0 1 1 

d d d d d d d d 

i i i i i i i i 

Примечание: при  выполнении команды ANL над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы! 

ANL C,<бит источника> - "логическое И" битовой переменной и флага переноса C. 

Описание: Если бит источника равен 0, то происходит сброс флага переноса, в противном  случае флаг переноса не изменяет текущего значения. На остальные флаги команда  не воздействует.
прямая; 

Пример: ANL С, 20h 

Количество байт: 2 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 2 

(C) = (C) & (bit) 

Машинный код: 

0 1 0 1 0 0 1 0 

b b b b b b b b 

Знак '/' перед  операндом в языке ассемблера указывает на то, что в качестве значения используется логическое отрицание адресуемого бита, при этом сам бит источника не изменяется. 

CJNE <байт назначения>,<байт  источника>,<смещение> - сравнение  и переход, если не равно. 

Описание: сравнивает значения первых двух операндов и  выполняет переход, если операнды не равны. Если значение байта назначения без учета знака меньше байта источника без учета знака, то флаг переноса C устанавливается в '1', иначе сбрасывается в '0'. Ни один из операндов после выполнения команды не изменяется. Новое значение программного счетчика при переходе вычисляется суммирование содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде. 

Первые два  операнда допускают четыре вида адресации:
байт назначения - аккумулятор
прямая; 

Пример: CJNE A, 30h, 15; direct=30h, rel=15 

Количество байт: 3 

Количество циклов: 2 

Действие команды: 

(PC) = (PC) + 3 

IF (A) < > (direct) THEN 

(PC) = (PC) + rel 

IF (A) < (direct) THEN 

(C) = 1 

ELSE 

(C) = 0 

Машинный код: 

1 0 1 1 0 1 0 1 

d d d d d d d d 

R e l A d r e s
непосредственная. 

Пример: CJNE A, #100, -78; data=100, rel=-78 

Количество байт: 3 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 3 

IF (A) < > data THEN 

(PC) = (PC) + rel 

IF (A) < data THEN 

(C) = 1 

ELSE 

(C) = 0 

Машинный код: 

1 0 1 1 0 1 0 0 

i i i i i i i i 

R e l A d r e s
байт назначения - ячейка ОЗУ с косвенно-регистровой или регистровой адресацией
непосредственная  к регистровой 

Пример: CJNE R5, #100, 78; Rn=R5 data=100, rel=78 

Количество байт: 3 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 3 

IF (Rn) < > data THEN 

(PC) = (PC) + rel 

IF (Rn) < data THEN 

(C) = 1 

ELSE 

(C) = 0 

Машинный код: 

1 0 1 1 1 r r r 

i i i i i i i i 

R e l A d r e s
непосредственная  к косвенно - регистровой 

Пример: CJNE @R0, #100, 78; Ri=R0 data=100, rel=78 

Количество байт: 3 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 3 

IF ((Ri)) < > data, i=0,1 THEN 

(PC) = (PC) + rel 

IF ((Ri)) < data, i=0,1 THEN 

(C) = 1 

ELSE 

(C) = 0 

Машинный код: 

1 0 1 1 0 1 1 i 

i i i i i i i i 

R e l A d r e s 

CLR A - сброс аккумулятора 

Описание: сбрасывает (записывает '0' во все биты аккумулятора). Команда не изменяет содержимое флагов. 

Пример: CLR A      ;Записывает в аккумулятор число 00h 

Количество байт: 1 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 1 

(A) = 0 

Машинный код: 

1 1 1 0 0 1 0 0 

CLR <bit> - сбрасывает  указанный бит в нуль. 

Описание: сбрасывает (записывает '0') в указанный во втором байте команды бит. Команда не изменяет содержимое флагов. 

Пример: CLR C ;Записывает во флаг переноса '0' 

Количество байт: 1 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 1 

(C) = 0 

Машинный код: 

1 1 0 0 0 0 1 1
прямая битовая  адресация; 

Пример: CLR P1.2       ;Записывает во второй бит порта 1 '0' 

Количество байт: 2 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 2 

(bit) = 0 

Машинный код: 

1 1 0 0 0 0 1 0 

b b b b b b b b 

CPL A - каждый бит  аккумулятора инвертируется. 

Описание: каждый бит аккумулятора инвертируется, т.е. если в каком-либо из восьми бит аккумулятора записана '1', то в этот бит записывается '0' и наоборот. 

Пример: CPL A 

Количество байт: 1 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 1 

(A) = not(A) 

Машинный код: 1 1 1 1 0 1 0 0 

CPL <bit> - инвертируется  указанный бит. 

Описание: бит  адрес, которого указан во втором байте  команды инвертируется, т.е. если бит содержит '1', то в этот бит записывается '0' и наоборот.
прямая битовая  адресация; 

Пример: CPL 27 

Количество байт: 2 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 1 

(bit) = not(bit) 

Машинный код: 

1 0 1 1 0 0 1 0 

b b b b b b b b 

CPL C - инвертируется флаг переноса 'C'. 

Описание: флаг переноса 'C' инвертируется, т.е. если флаг переноса 'C' содержит '1', то в него записывается '0' и наоборот. 

Пример: CPL C 

Количество байт: 1 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 1 

(C) = not(C) 

Машинный код: 1 0 1 1 0 0 1 1 

DA A - десятичная  коррекция аккумулятора при сложении  двоично-десятичных чисел. 

Описание: команда  десятичной коррекции позволяет  вести сложение чисел, представленных в упакованном двоично-десятичном коде. Команда применяется после инструкций ADD или ADDC. Инструкции (команды) ADD или ADDC позволяют суммировать сразу две тетрады, расположенные в одном байте. 

Если биты аккумулятора с 0 по 3 содержат число большее 9 (xxxx1010:xxxx1111) или флаг вспомогательного переноса AC содержит '1', то к аккумулятору прибавляется число 6 для того, чтобы получить правильную двоично-десятичную цифру в младшей тетраде. 

Если старшие  биты аккумулятора (с 4 по 7) содержат число  большее 9 (1010xxxx :1111xxxx) или флаг переноса C содержит '1', то к аккумулятору прибавляется число 60h для того, чтобы получить правильную двоично-десятичную цифру в старшей тетраде. 

Если в результате операции DA A возникнет перенос, то флаг переноса C будет установлен в 1. Единичный  флаг переноса после операции DA A означает, что результат суммирования больше 100 и этим можно воспользоваться для суммирования многоразрядных двоично-десятичных чисел. Команда десятичной коррекции не воздействует на флаг переполнения OV. 

Примечание: команда DA A не может преобразовать двоичное число из аккумулятора в двоично-десятичный вид или правильно скорректировать двоично-десятичное вычитание. 

Пример: DA A 

Количество байт: 1 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 1 

IF [[(A3-0) > 9] or [(AC) = 1]] THEN 

(A3-0) = (A3-0) + 6 

AND 

IF [[(A7-4) > 9] or [(C) = 1]] THEN 

(A7-4) = (A7-4) + 6 

Машинный код: 

1 1 0 1 0 1 0 0 

DEC <байт> - производит  вычитание 1 из указанного операнда. 

Описание: ячейка памяти адрес, которой указан во втором байте команды уменьшается на 1. Если первоначально в ячейке было записано значение 00h, то в нее заносится значение 0FFh. Команда не воздействует на флаги. 

Примечание: при  выполнении команды DEC над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы! 

Для команды DEC разрешены  следующие режимы адресации байта - источника:
непосредственная. 

Пример: DEC A 

Количество байт: 1 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 1 

(A) = (A) - 1 

Машинный код: 

0 0 0 1 0 1 0 0
регистровая; 

Пример: DEC R3 

Количество байт: 1 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 1 

(Rn) = (Rn) - 1, n=0,1,2,3,4,5,6,7 

Машинный код: 

0 0 0 1 1 r r r
косвенно-регистровая; 

Пример: DEC @R0 

Количество байт: 1 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 1 

((Ri)) = ((Ri)) - 1, i=0,1 

Машинный код: 

0 0 0 1 0 1 1 i
прямая; 

Пример: DEC 30h 

Количество байт: 2 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 2 

(direct) = (direct) - 1 

Машинный код: 

0 0 0 1 0 1 0 1 

d d d d d d d d 

DIV AB - деление. 

Описание: делит 8-битовое беззнаковое целое число  из аккумулятора А на 8-битовое целое  без знака в регистре В. В аккумулятор A заносится целая часть результата деления, а в регистр В - остаток. Флаги переноса C и переполнения OV будут очищены (записан '0'). Если в регистре B перед операцией деления содержится '0', то в аккумуляторы A и B будут занесены неопределенные значения, а флаг переполнения будет установлен (записана '1'). 

Количество байт: 1 

Количество циклов: 4 

Действие команды: (PC) = (PC) + 1 

(A) = (A) div (B) 

(A) = (A) mod (B) 

Машинный код: 

0 1 0 0 0 1 0 0 

DJNZ <байт>,<смещение> - вычитание 1 из указанной ячейки  и переход, если результат не  равен 0. 

Описание: вычитание 1 из указанной во втором байте команды ячейки памяти и переход к вычисляемому по третьему байту команды адресу, если результат вычитания не равен 0. Если первоначально в ячейке памяти содержится '0', то в результате выполнения операции туда будет записано число '0FFH'. Команда не воздействует на флаги. Новое значение программного счетчика при переходе вычисляется суммирование содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде. 

Примечание: при  выполнении команды DJNZ над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы! 

Для команды DJNZ разрешены следующие режимы адресации  байта - источника:
регистровая; 

Пример: DJNZ R3 ,LABEL1; 

Количество байт: 2 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 2 

(Rn) = (Rn) - 1, n=0,1,2,3,4,5,6,7 

IF (Rn) < > 0, THEN n=0,1,2,3,4,5,6,7 

(PC) = (PC) + rel 

Машинный код: 

1 1 0 1 1 r r r 

R e l A d r e s
прямая; 

Пример: DJNZ 30h,LABEL1; 

Количество байт: 3 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 3 

(direct) = (direct) - 1 

IF (direct) < > 0 THEN 

(PC) = (PC) + rel 

Машинный код: 

1 1 0 1 0 1 0 1 

d d d d d d d d 

R e l A d r e s 
 
 

Устройство  параллельных портов микроконтроллеров MCS-51 

Порты P0, P1, P2, P3 являются квазидвунаправленными портами  ввода- вывода и предназначены для обеспечения обмена информацией микроконтроллера с внешними устройствами, образуя 32 линии ввода- вывода. Каждый из портов содержит восьмиразрядный регистр, имеющий байтовую и битовую адресацию для установки (запись '1') или сброса (запись '0') разрядов этого регистра с помощью программного обеспечения. Выходы этих регистров соединены с внешними ножками микросхемы. Упрощенная схема одного разряда порта показана на рис. 1 


Рис. 1. Упрощенная схема одного бита порта. 

      Один  разряд регистра - защелки порта представляет собой D-триггер. Данные с внутренней шины микроконтроллера записываются в регистр-защелку по сигналу "запись в защелку". Выход "Q" D-триггера подключается к внутренней шине (считывается) по сигналу "чтение защелки". Значение сигнала непосредственно с внешнего вывода порта считывается по сигналу "чтение вывода". Некоторые команды чтения порта используют сигнал "чтение защелки ", другие "чтение выода". Чтение внешних ножек микросхемы осуществляется командами:
MOV A, P3      ;Скопировать состояние ножек порта P3 в аккумулятор
JB P3.4, Metka ;Если  на 4 ножке порта P3 логическая  ‘1’, то перейти на метку 

Чтение регистра - защелки осуществляется командами  чтение - модификация - запись. Например:
CPL P3.1    ;Проинвертировать сигнал на первой ножке порта P3
ORL P2,#56h ;Установить  единичный сигнал на ножках 1,2,4 и 6 порта P2
ANL P3,#03h ;Установить  нулевой сигнал на ножках 0 и  1 порта P3 
 

Порты микросхемы служат для управления внешними устройствами, подключенными к микроконтроллеру. Схема подключения простейших внешних устройств приведена на рисунке 2. Этот рисунок иллюстрирует особенности подключения индикаторов к параллельным портам микроконтроллера MCS-51. 

 

Рисунок 2. Схема  подключения светодиодных индикаторов  к параллельному порту. 

Присутствие в  схеме мощного транзистора позволяет  подключать к выводам порта светодиодные индикаторы непосредственно без  усилителя мощности. Однако при этом необходимо следить за максимальной допустимой мощностью, рассеиваемой на микросхеме и напряжением, подаваемом на светодиод. Эквивалентная схема, на которой показан путь протекания выходного тока порта приведена на рисунке 3. Как видно из этой схемы именно этот ток используется для зажигания светодиода. 

 
 

Рисунок 2. Эквивалентная  схема подключения светодиодного индикатора к параллельному порту. 

Для умощнения  выводов порта можно применить  транзисторный ключ, показанный на рисунке 2. Обратите внимание, что база транзистора подключена непосредственно  к выводу порта. Это стало возможным  только благодаря использованию в схеме порта генератора тока в верхнем плече выходного каскада (Схему подключения устройств к портам с TTL выходами можно посмотреть здесь). Если выходного тока достаточно для открывания транзисторного ключа, то резистор R2 не используется. Этот резистор подключается для увеличения базового тока транзисторного ключа. На максимальное значение тока через этот резистор накладываются те же ограничения, что и для непосредственного подключения светодиодного индикатора к выводам порта. 

Микроконтроллеры предназначены для управления внешними устройствами, однако управлять напряжением на выходе параллельного порта микроконтроллера можно только при помощи программы, записанной в память программ. Какие напряжения необходимо подавать на выходы микросхемы зависят от схемы подключения индикатора. В приведённой на рисунке 2 схеме, для зажигания светодиода VD1, в шестой вывод порта P0 необходимо записать логический 0. Для зажигания светодиода VD2 необходимо в седьмой разряд порта P2 записать логическую единицу, а для его гашения – логический ноль.
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.