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

MOV  R2, #22H ; Загрузить в регистр R2 число 22H

MOV  A, R2       ; Переслать содержимое регистра R2 в аккумулятор

NOP                    ; Пустая команда

     Примечание.  Команда NOP используется для визуального разделения отдельных программ при проверке их работы.

Исследуйте работу программы в пошаговом режиме. Наблюдайте за изменением содержимого регистров, а также флагами МК. 

3.2. Исследование команд пересылки с прямой адресацией

Запишите в память симулятора коды следующих команд:

MOV  30H, #11H     ; Переслать в ячейку ПД с адресом 30H число 11H

MOV  A, 30H           ; Переслать в аккумулятор содержимое ячейки ПД с адресом 30H

MOV  R1, 30H         ; Переслать в регистр R1 содержимое ячейки с адресом 30H

MOV  P0, A             ; Переслать в порт P0 содержимое аккумулятора

MOV  P0, #55H       ; Переслать (вывести) в порт P0 число 55H

MOV  A, P0             ; Переслать в аккумулятор данные из порта P0

NOP

Исследуйте работу программы в пошаговом режиме. Наблюдайте за изменением содержимого регистров, ячеек памяти, порта P0, а также флагами МК.

3.3. Исследование команд пересылки с косвенной адресацией

Запишите в память симулятора коды следующих команд:

MOV  R0, #30H      ; Загрузить в регистр R0 адрес ячейки ПД

MOV  @R0, #22H  ; Переслать в ячейку ПД число 22H

MOV  A, @R0        ; Переслать в аккумулятор содержимое ячейки ПД

MOV  A, #55H       ; Загрузить в аккумулятор число 55H

MOV  @R0, A        ; Переслать содержимое аккумулятора в ячейку ПД

NOP

Исследуйте работу программы в пошаговом режиме. Наблюдайте за изменением содержимого регистров, ячейки памяти, а также флагами МК.

3.4. Команды пересылки с использованием регистра DPTR

В микроконтроллерах семейства МК51 имеется 16-разрядный регистр-указатель данных DPTR, который используется при выполнении некоторых команд. Загрузить в него 16-разрядные данные можно командой:

MOV  DPTR, #d16.

Эта команда с непосредственной адресацией имеет трехбайтный формат: 1-й байт – код операции, 2-й и 3-й байты – 16-разрядные данные.

Регистр DPTR может также использоваться в качестве двух  8-разрядных регистров общего назначения с именами DPH (старший байт) и DPL (младший байт). Эти регистры являются регистрами специальных функций с адресами 83H и 82H соответственно.

Запишите в память симулятора коды команд:

MOV  DPTR, #2211H  ; Загрузить в регистр DPTR число 2211H

MOV  R1, DPL             ; Переслать в R1 содержимое DPL

MOV  R2, DPH            ; Переслать в R2 содержимое DPH

MOV  A, #0                  ; Обнулить аккумулятор

MOV  DPH, A              ; Переслать аккумулятор в регистр DPH

MOV  DPL, A              ; Переслать аккумулятор в регистр DPL

MOV  DPL, #33H        ; Загрузить в DPL число 33H

MOV  DPH, #44H       ; Загрузить в DPH число 44H

NOP

Выполните программу в пошаговом режиме работы. Наблюдайте за изменением содержимого регистров, а также флагами МК.

3.5. Исследование команд пересылки, использующих внешнюю память данных

Для работы с внешней памятью данных (ВПД) в МК51 имеются команды MOVX с использованием косвенной адресации. Возможны 2 варианта задания адреса ячеек ВПД:

1)  если адреса ячеек находятся в диапазоне 00H…FFH (т.е. их количество не превышает 256), то для их адресации используются регистры R0 или R1 текущего банка, а для пересылки данных применяются команды:

MOVX  @Ri, A   ; Пересылка аккумулятора в ячейку ВПД (запись в ВПД)

MOVX  A, @Ri   ; Пересылка в аккумулятор из ячейки ВПД (чтение из ВПД);

2)  если адреса ячеек находятся в диапазоне 0000H…FFFFH (адресное пространство 64К), то для адресации используется регистр DPTR, а для пересылки данных команды:

MOVX  @DPTR, A  ; Пересылка аккумулятора в ячейку ВПД (запись в ВПД)

MOVX  A, @DPTR  ; Пересылка в аккумулятор из ячейки ВПД (чтение из ВПД).

3.6.1. Запишите в память симулятора текст программы:

MOV    R0, @10H         ; Адрес ячейки ВПД

MOV    A, R3                 ; Пересылка содержимого R3 в аккумулятор

MOVX  @R0, A            ; Запись в ВПД

MOV    R1, #18H           ; Адрес ячейки ВПД

MOVX  A, @R1            ; Чтение из ВПД

MOV    R6, A                 ; Пересылка содержимого аккумулятора в R6

NOP