ТОП 10:

Система команд микроконтроллера 1830ВЕ51



Система команд МК51 содержит 111 базовых команд, которые по функциональному признаку можно подразделить на следующие пять групп:

- команды передачи данных;

- арифметические команды;

- логические команды с байтовыми переменными;

- команды битового процессора;

- команды ветвления программ и передачи управления.

Формат команд - одно-, двух- и трехбайтовый, причем большинство команд (94) имеют формат один или два байта. Первый байт команды любого типа и формата всегда содержит код операции, второй и третий байты содержат либо адреса операндов, либо непосредственные операнды.

Операнды могут быть четырех типов: биты, тетрады (4 разряда), байты и 16-битные слова. Время выполнения команд составляет 1, 2 или 4 машинных цикла. При тактовой частоте 12 МГц длительность машинного цикла составляет 1 мкс, при этом 64 команды исполняются за 1 мкс, 45 команд - за 2 мкс и 2 команды (умножение и деление) - за 4 мкс.

В МК51 поддерживает следующие способы адресации:

1. Прямая адресация (Direct Addressing). Операнд определяется 8-битным адресом в команде. Эта адресация используется только для внутренней памяти данных и регистров специальных функций;

2. Косвенная адресация (Indirect Addressing). В этом случае команда адресует регистр, в котором содержится адрес операнда. Данный вид адресации может применяться при обращении как к внутреннему, так и внешнему ОЗУ. Для указания 8-битных адресов могут использоваться регистры R0 и R1 выбранного банка памяти или указатель стека SP. Для 16-битной адресации используется только регистр DPTR.

3. Регистровая адресация (Register Instruction). Данная адресация применяется для доступа к регистрам R0…R7 выбранного банка. Адреса регистров содержатся в байте кода операции и представляют собой трехбитовое поле, определяющее номер регистра. Выбор одного из четырех регистровых банков осуществляется программированием битов селектора банка (RS1, RS0) в PSW;

4. Непосредственная адресация (Immediate constants). Операнд содержится непосредственно в поле команды вслед за кодом операции и может занимать один или два байта (data8, data16).

5. Индексная адресация (Indexed Addressing). Индексная адресация используется при обращении к памяти программ и только при чтении. В этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (DPTR или PC) указывает базовый адрес требуемой таблицы, а аккумулятор указывает на точку входа в нее. Адрес элемента таблицы находится сложением базы с индексом (содержимым аккумулятора).

6. Другой тип индексной адресации применяется в командах “перехода по выбору”. При этом адрес перехода вычисляется как сумма указателя базы и аккумулятора.

7. Неявная адресация (Register-Specific Instructions). Некоторые команды используют индивидуальные регистры (например, операции с аккумулятором, DPTR), при этом данные регистры не имеют адреса, указывающего на них; это заложено в коде операции.

В табл. 1.15 приведены обозначения и символы, используемые в командах.

Таблица 1.15

Обозначение, символ Назначение
А Аккумулятор
Rn (n = 0... 7) Регистр общего назначения в выбранном банке памяти
direct Прямо адресуемый 8-ми битовый внутренний адрес ячейки данных, который может быть ячейкой внутреннего ОЗУ (0…127) или SFR (128…255)
@Ri(i= 0, 1) Регистр общего назначения в выбранном банке регистров, используемый в качестве регистра косвенного адреса
#data 8 8-ми битовый непосредственный операнд
#data 16 16-ти битовый непосредственный операнд
data H Старшие биты (15…8) непосредственных 16-ти битовых данных
data L Младшие биты (7…0) непосредственных 16-ти битовых данных
addr 11 11-ти битовый адрес назначения
addr 16 16-ти битовый адрес назначения
addr L Младшие биты адреса назначения
disp 8 8-ми битовый байт смещения со знаком
bit Бит с прямой адресацией, находящийся во внутреннем ОЗУ или SFR
/bit Инверсия прямо адресуемого бита
rel Относительный адрес перехода
(X) Содержимое элемента Х
((X)) Содержимое по адресу, хранящемся в элементе Х
(X) [M] Разряд М элемента Х
(X) [M1…M2] Группа разрядов М1…М2 элемента Х

Команды пересылки данных

В группу команд пересылки данных входит 28 команд, краткое описание которых, а также их количество байт и время выполнения приведено в табл. 1.16.

Таблица 1.16. Команды пересылки данных

Мнемоника команды Код операции Количество байтов в команде Время выполнения команды, циклы Выполняемые действия
MOV A, Rn 11101rrr 1 1 (A) (Rn)
MOV A, ad 11100101 2 1 (A) (ad)
MOV A, @Ri 1110011i 1 1 (A) ((Ri))
MOV A, #d 01110100 2 1 (A) #d
MOV Rn, A 11111rrr 1 1 (Rn) (A)
MOV Rn, ad 10101rrr 2 2 (Rn) (ad)
MOV Rn, #d 01111rrr 2 1 (Rn) #d
MOV ad, A 11110101 2 1 (ad) (A)
MOV ad, Rn 10001rrr 2 2 (ad) (Rn)
MOV add, ads 10000101 3 2 (add) (ads)
MOV ad, @Ri 1000011i 2 2 (ad) ((Ri))
MOV ad, #d 01110101 3 2 (ad) #d
MOV @Ri, A 1111011i 1 1 ((Ri)) (A)
MOV @Ri, ad 0110011i 2 2 ((Ri)) (ad)
MOV @Ri, #d 0111011i 2 1 ((Ri)) #d
MOV DPTR, #d16 10010000 3 2 (DPTR) #d16
MOVC A, @A+DPTR 10010011 1 2 (А) ((A) +(DPTR))
MOVC A, @A+PC 10000011 1 2 (PC) (PC)+1, (A) ((A)+(PC))
MOVX A, @Ri 1110001i 1 2 (A) ((Ri))
MOVX A,@DPTR 11100000 1 2 (A) ((DPTR))
MOVX @Ri, A 1111001i 1 2 ((Ri)) (A)
MOVX @DPTR,A 11110000 1 2 ((DPTR)) (A)
PUSH ad 11000000 2 2 (SP) (SP) + 1, ((SP)) (ad)
POP ad 11010000 2 2 (ad) (SP), (SP) (SP) - 1
XCH A, Rn 11001rrr 1 1 (A) ↔ (Rn)
XCH A, ad 11000101 2 1 (A) ↔ (ad)
XCH A, @Ri 1100011i 1 1 (A) ↔ ((Ri))
XCHD A, @Ri 1101011i 1 1 (A0…3) ↔((Ri)0…3)

По команде MOV выполняется пересылка данных из второго операнда в первый. Эта команда не имеет доступа ни к внешней памяти данных, ни к памяти программ. Для этих целей предназначены команды MOVX и MOVC соответственно. Первая из них обеспечивает чтение/запись байт из внешней памяти данных, вторая – чтение байт из памяти программ.

По команде XCH выполняется обмен байтами между аккумулятором и ячейкой РПД, а по команде XCHD – обмен младшими тетрадами (битами 0…3).

Команды PUSH и РОР предназначены соответственно для записи данных в стек и их чтения из стека. Размер стека ограничен лишь размером резидентной памяти данных. В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.

Группа команд пересылок МК51 имеет следующую особенность – в ней нет специальных команд для работы со специальными регистрами: PSW, таймером, портами ввода-вывода. Доступ к ним, как и к другим регистрам специальных функций, осуществляется заданием соответствующего прямого адреса, т.е. это команды обычных пересылок, в которых вместо адреса можно ставить название соответствующего регистра. Например, чтение данных из порта Р1 в аккумулятор может быть выполнено командой MOV A, P1.

Кроме того, следует отметить, что в МК51 аккумулятор имеет два различных имени в зависимости от способа адресации: А – при неявной адресации (например, MOV A, R0) и АСС – при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.







Последнее изменение этой страницы: 2016-12-30; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.229.118.253 (0.005 с.)