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

Автор работы: Пользователь скрыл имя, 11 Апреля 2011 в 12:22, реферат

Краткое описание

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

Содержимое работы - 1 файл

MSC51.doc

— 589.00 Кб (Скачать файл)

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

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

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

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 ;------------------------------------------------------------------------------------------------------

Информация о работе Состав семейства MCS-51