Однокристальные микроконтроллеры семейства MCS-51
Лабораторная работа № 3
Команды передачи данных
1. Цель работы
Изучить и практически исследовать работу команд передачи данных однокристальных микроконтроллеров семейства MCS-51 (МК51) на персональном компьютере.
2.Основные теоретические сведения
Команды передачи данных можно по выполняемым функциям разделить на команды пересылки и обмена. Пересылка предполагает передачу данных в направлении от источника к приемнику, при этом источник не изменяет своего значения. Обмен предполагает одновременную передачу данных в двух направлениях. В результате операции обмена изменяются значения обоих операндов, участвующих в операции. В качестве источников и приемников данных в командах передачи используются аккумулятор, регистры общего назначения, ячейки памяти данных, регистры специальных функций.
Ниже приводится краткое описание команд передачи данных микроконтроллеров семейства МК51. Используются мнемокоды языка Ассемблера для МК51, а операции, выполняемые командами, описываются с использованием следующих символов и обозначений:
Rn - регистр общего назначения (РОН), n = 0…7;
Ri - регистра косвенного адреса, i = 0, 1;
# - префикс непосредственных данных;
@ - префикс косвенной адресации;
#d - 8-битное число (непосредственные данные);
#d16 - 16-битное число (непосредственные данные);
(X) - содержимое регистра или с именем X;
((X)) - содержимое ячейки памяти, адресуемое содержимым X;
ß - оператор присваивания (замещения).
Команды пересылки:
MOV A, Rn ; (A) ß (Rn) - Пересылка в аккумулятор из регистра (n = 0…7)
MOV A, ad ; (A) ß (ad) - Пересылка в аккумулятор прямоадресуемого байта
MOV A, @Ri ; (A) ß ((Ri)) – Пересылка в аккумулятор байта из ПД (i = 0, 1)
MOV A, #d ; (A) ß #d - Пересылка (загрузка) в аккумулятор константы
MOV Rn, A ; (Rn) ß (A) - Пересылка в регистр из аккумулятора
MOV Rn, ad ; (Rn) ß (ad) - Пересылка в регистр прямоадресуемого байта
MOV Rn, #d ; (Rn) ß #d - Пересылка (загрузка) в регистр константы
MOV ad, A ; (ad) ß (A) - Пересылка по прямому адресу аккумулятора
MOV ad, Rn ; (ad) ß (Rn) - Пересылка по прямому адресу регистра
MOV add, ads ; (add) ß (ads) - Пересылка прямоадресуемого байта по прямому адресу
MOV ad, @Ri ; (ad) ß ((Ri)) - Пересылка байта из ПД по прямому адресу
MOV ad, #d ; (ad) ß #d - Пересылка по прямому адресу константы
MOV @Ri, A ; ((Ri)) ß (A) - Пересылка в ПД аккумулятора
MOV @Ri, ad ; ((Ri)) ß (ad) - Пересылка в ПД прямоадресуемого байта
MOV @Ri, #d ; ((Ri)) ß #d - Пересылка в ПД константы
MOV DPTR, #d16 ; (DPTR) ß #d16 - Загрузка указателя данных
MOVC A, @A+DPTR ; (A) ß ((A) + (DPTR)) - Пересылка в аккумулятор байта
; из памяти программ
MOVC A, @A+PC ; (PC) ß (PC)+1, (A) ß ((A)+ (PC)) - Пересылка в аккумулятор
; байта из памяти программ
MOVX A, @Ri ; (A) ß ((Ri)) - Пересылка в аккумулятор байта из внешней ПД
MOVX A, @DPTR ; (A) ß ((DPTR)) - Пересылка в аккумулятор байта из внешней ПД
MOVX @Ri, A ; ((Ri)) ß (A) - Пересылка во внешнюю ПД из аккумулятора
MOVX @DPTR, A ; ((DPTR)) ß (A) - Пересылка во внешнюю ПД из аккумулятора
PUSH ad ; (SP) ß (SP)+1, ((SP)) ß (ad) - Загрузка в стек
POP ad ; (ad) ß ((SP)), (SP) ß(SP) – 1 - Извлечение из стека
Команды обмена:
XCH A, Rn ; (A) ß> (Rn) - Обмен аккумулятора с регистром
XCH A, ad ; (A) ß> (ad) - Обмен аккумулятора с прямоадресуемым байтом
XCH A, @Ri ; (A) ß> ((Ri)) - Обмен аккумулятора с байтом из ПД
XCHD A, @Ri - Обмен младшей тетрады аккумулятора с младшей тетрадой
; байта из ПД
Характерным для команд передачи данных являются то, что они не влияют на флаги МК, за исключением команд пересылки в регистр состояния PSW и в аккумулятор (может измениться флаг паритета P).
Команды передачи данных могут иметь однобайтный, двухбайтный и трехбайтный форматы, т.е. занимать в памяти программ соответственно 1, 2 или 3 ячейки. В командах могут использоваться следующие способы адресации:
1) непосредственная;
2) регистровая;
3) прямая;
4) косвенная.
Рассмотрим методы адресации на примере пересылки данных в аккумулятор.
При непосредственной адресации команда имеет длину 2 байта. В 1-м байте размещается код операции. Затем следует 1 байт данных (непосредственный операнд). Эти данные не могут быть изменены в ходе выполнения программы, так как они расположены непосредственно в памяти программ, т.е. в ПЗУ. Если приемником данных является аккумулятор или какой-либо другой регистр, то часто такую операцию часто называют загрузкой регистра. Условное обозначение операнда в мнемонике команды - #d.
MOV A, #64H ; Загрузить в аккумулятор число 64H
MOV A, #0AAH ; Загрузить в аккумулятор число AAH
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.