Логические команды, применяемые для однокристальных микроконтроллеров семейства MCS-51 (МК51) на персональном компьютере

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

Фрагмент текста работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

Учреждение образования «Гомельский государственный

университет им. П. О. Сухого»

Кафедра   «Промышленная электроника»

Лабораторная работа № 5 по дисциплине: «МПТ»

«Логические команды»

Выполнил студент                

Принял преподаватель

Лабораторная работа №5

Цель работы:     Изучить и практически исследовать работу логических команд однокристальных микроконтроллеров семейства MCS-51 (МК51) на персональном компьютере.

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

В МК51 имеются следующие команды логических операций:

ANL  A, Rn   ; (A) ß (A) Ù (Rn)    - Логическое И аккумулятора и регистра

ANL  A, ad    ; (A) ß (A) Ù (ad)    - Логическое И аккумулятора и прямоадресуемого байта

ANL  A, @Ri  ; (A) ß (A) Ù ((Ri)) - Логическое И аккумулятора и байта из ПД

ANL  A, #d     ; (A) ß (A) Ù #d       - Логическое И аккумулятора и константы

ANL  ad, A     ; (ad) ß (ad) Ù (A)    - Логическое И прямоадресуемого байта и аккумулятора

ANL  ad, #d    ;  (ad) ß (ad) Ù #d    -  Логическое И прямоадресуемого байта и константы

ORL  A, Rn    ; (A) ß (A) Ú (Rn)   - Логическое ИЛИ аккумулятора и регистра

ORL  A, ad     ; (A) ß (A) Ú (ad)    - Логическое ИЛИ аккумулятора и прямоадресуемого байта

ORL  A, @Ri ; (A) ß (A) Ú (Ri))   - Логическое ИЛИ аккумулятора и байта из ПД

ORL  A, #d    ; (A) ß (A) Ú #d       - Логическое ИЛИ аккумулятора и константы

ORL  ad, A    ; (ad) ß (ad) Ú (A)    -  Логическое ИЛИ прямоадресуемого байта  аккумулятора

ORL  ad, #d   ; (ad) ß (ad) Ú #d       -  Логическое ИЛИ прямоадресуемого байта константы

XRL  A, Rn   ; (A) ß (A) " (Rn)   -  Исключающее ИЛИ аккумулятора и регистра

XRL  A, @Ri ; (A) ß (A) " ((Ri))  - Исключающее ИЛИ аккумулятора и байта из ПД

XRL  A, #d    ; (A) ß (A)  " #d     - Исключающее ИЛИ аккумулятора и константы

XRL  ad, A    ; (ad) ß (ad) "(A)   - Исключающее ИЛИ прямоадресуемого байта и аккумулятора

XRL  ad, #d   ; (ad) ß (ad) " #d    - Исключающее ИЛИ прямоадресуемого байта и константы

CPL  A           ; (A) ß (/A)             - Инверсия аккумулятора

CLR  A          ;  (A) ß 0                 - Сброс (очистка) аккумулятора

SWAP  A       ;                                 - Обмен местами тетрад в аккумуляторе

Ход работы

1. Заносим в память программ симулятора программу, выполняющую маскирование (сброс, обнуление, очистку) 7-го разряда числа, находящегося в регистре R4.

Текст программы:

MOV  A, R4    ; Пересылка (A) ß (R4)

ANL   A, #01111111B ; Лог. умножение аккумулятора и маски 01111111B=7FH       

MOV  R4, A     ; Пересылка  (R4) ß (A)

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

Выполняем программу в пошаговом режиме, предварительно записав в регистр R4 исходные данные в соответствии с табл. 1

Таблица 1

Исходные значения

Результат

Получено практически

Получено теоретически

FFH

01111111B=7FH

01111111B

0AH

00001010B=0AH

00001010B

2. Записываем в память симулятора программу, выполняющую установку в 1 разрядов младшей тетрады байта, находящегося в регистре R5.

Текст программы:

MOV  A, R5        ; Пересылка  (A) ß (R5)

ORL   A, #00001111B  ; Лог. сложение с маской 00001111B = 0FH

MOV  R5, A        ; Пересылка  (R5) ß (A)

NOP

Выполняем программу в пошаговом режиме, предварительно записав в регистр R5 исходные данные в соответствии с табл.2

Таблица  2

Исходные значения

Результат

Получено практически

Получено теоретически

F0H

11111111B=FFH

11111111B=FFH

AAH

10101111B=AFH

10101111B=AFH

3. Записываем в память симулятора программу, инвертирующую младшую тетраду байта, находящегося в регистре R6.

Текст программы:

MOV  A, R6         ; Пересылка  (A) ß (R6)

XRL   A, #00001111B  ; Искл. ИЛИ с маской 00001111B = 0FH

MOV  R6, A         ; Пересылка  (R6) ß (A)

NOP

Выполняем программу в пошаговом режиме, предварительно записав в регистр R6 исходные данные в соответствии с табл. 3

Таблица 3

Исходные значения

Результат

Получено практически

Получено теоретически

FFH

11110000B=F0H

11110000B=F0H

0FH

00000000B=00H

00000000B=00H

4.      Заносим в память симулятора следующую программу:

RL  A           ; Умножение на 2

RL  A           ; Умножение на 2

MOV  P1, A  ; Вывод в порт P1

NOP

Программа выполняет умножение содержимого аккумулятора на 4 и выводит результат в порт P1.

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

Таблица 4

Исходное значение

Результат

HEX-код

Двоичный код

HEX-код

Двоичный  код

10

0001 0000

40

0100 0000

20

0010 0000

80

1000 0000

40

0100 0000

01

0000 0001

5.     Заносим в память симулятора следующую программу:

MOV  B, #0                ; Очистить регистр B

CLR    C                     ; Сбросить флаг C

RLC    A                     ; Сдвиг влево объединенного

XCH   A, B                 ; 16-разрядного результата

RLC    A                     ; в регистровой паре (B)(A)

XCH   A, B

RLC    A

XCH   A, B

RLC    A

XCH   A, B

NOP

Программа производит умножение содержимого аккумулятора на 4. Умножение на 2 заменяется сдвигом влево через перенос аккумулятора и расширителя B. Выполняем программу умножения в пошаговом режиме и заполняем табл

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

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