Однокристальные микроконтроллеры семейства MCS-51. Команды передачи данных. Пересылка в аккумулятор прямоадресуемого байта

Страницы работы

Содержание работы

                         Однокристальные микроконтроллеры семейства 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

Похожие материалы

Информация о работе