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

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

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

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

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

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

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

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

«Команды передачи управления»

Выполнил студент гр. ПМ-41

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

Гомель 2011

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

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

Решения задач для самостоятельной работы

      Задача1. Разработайте программу, которая сбрасывает все флаги пользователя (область памяти данных с адресами 20H – 2FH)

Блок-схема алгоритма:

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

NACH:   EQU 20H       ; Начальный адрес флагов

NUM:     EQU 8            ; Количество ячеек памяти данных

BEGIN:  MOV  R0,#NACH     ; Загрузить указатель адреса ячеек ПД

MOV  R7,#NUM       ; Загрузить счетчик ячеек

NULL:   MOV  @R0,#00H      ; Очистка текущей ячейки ПД

INC  R0                      ; Адрес следующей ячейки

DJNZ  R7,NULL       ; Декремент счетчика и цикл обнуления,если (R7)≠0

JMP $                         ; Выход (зацикливание программы)

END                           ; Конец текста программы

    . Нужно записать единицы в ячейки внешней памяти данных, начиная с адреса 0000H по 001FH. Для адресации  ячеек используйте регистр DPTR.

Блок-схема алгоритма:

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

NACH: EQU 0000H                         ; Начальный адрес

NUM:  EQU 20H                           ; Количество ячеек внешней памяти данных

BEGIN:  MOV DPTR,#NACH   ; Загрузить указатель адреса ячеек ВПД

MOV  R7,#NUM          ; Загрузить счетчик ячеек

MOV  A,#01H             ; Загрузить единицу в аккумулятор

ONE:      MOVX  @DPTR,A      ; Занесение в ячейку ВПД единицы

INC  DPTR                   ; Адрес следующей ячейки

DJNZ  R7,ONE             ; Декремент счетчика и возврат у метке ,если (R7)≠0

JMP  $                           ; Выход (зацикливание программы)

END                              ;  Конец текста программы

  Задача 3. Необходимо запомнить во внешней памяти данных содержимое регистров банка 0. Начальный адрес памяти  10H. Для адресации ячеек внешней памяти используйте регистры R0 или R1. Для организации цикла следует перейти из банка 0 в другой банк.

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

NUM: EQU 8                      ;Задание числа регистров

BEGIN: CLR RS1                   ;Переход к

SETB RS0                 ;банку 1

MOV R0,#00H          ;Занесение адреса банка 0

MOV R7,#NUM       ;Активизация счетчика

MOV R1,#10H          ;Занесение адреса ВПД

CIK:       MOV A,@R0            ;Занесение в аккумулятор данных из регистра банка 0      

MOVX @R1,A         ;Перемещение данных из аккумулятора в ВПД

INC R0                      ;Инкремент адреса банка 0

INC R1                      ;Инкремент адреса ВПД

DJNZ R7,CIK            ;Декремент и возврат если R7≠0

JMP $                         ;Зацикиливание программы

END                           ;Конец программы

Блок-схема  алгоритма:

        Задача 4  Микроконтроллер ожидает поступления заданного кода, например, 55H на входы порта P1. При его появлении программа устанавливает флаг  F0 и затем зацикливается.

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

MOV B,#55H             ;Занесение в регистр В кода ожидаемого МК

CIKL:  MOV A,P1                 ;Занесение в аккумулятор числа из порта Р1

CJNE A,B,CIKL        ;Сравнение аккумулятора и  В, переход если А≠В

SETB F0                    ; Установка флага F0  

JMP $                         ; Зацикливание программы

END                           ; Конец программы

Блок-схема алгоритма:

   Задача 5. Разработайте программу подсчета количества нулей в произвольной ячейке памяти данных.

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

COUNT:  MOV   R7, #8          ; Загрузить счетчик разрядов байта

MOV   R1, #0           ; Очистить счетчик единиц

MOV   A, 30Н            ; Пересылка исходного байта в аккумулятор

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

SHIFT:    RRC    A                   ; Сдвиг аккумулятора вправо через перенос

JC     NEXT               ; Обойти инкремент счетчика нулей, если C = 1

INC     R1                  ; Инкремент счетчика нулей

NEXT:    DJNZ   R7, SHIFT    ; Переход на проверку следующего разряда байта

JMP     $                    ; Выход (зацикливание программы)

END                          ; Конец текста программы

       Задача 6.  Разработайте программу нахождения минимального числа в массиве памяти данных с адресами от 50H по 60H.

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

BASE:       EQU        50H                    ; Начальный адрес массива

NUM:       EQU        16                       ; Количество ячеек

MIN:            MOV    R0, #BASE         ; Регистр R0 – указатель адреса

MOV    R7, #NUM           ; Регистр R7 – счетчик ячеек

NEWMIN:   MOV  A, @R0                ; Загрузить новый минимум

NEXT:         DJNZ  R7, AGAIN          ; Проверка окончания

JMP    $                            ; Конец программы (зацикливание)

AGAIN:      INC    R0                          ; Адрес следующей ячейки

MOV  B, A                        ; Запоминание аккумулятора

CLR   C                      

SUBB  A, @R0                 ; Сравнение с минимумом

JNC   NEWMIN                ; Переход, если меньше

MOV  A, B                       ; Восстановление аккумулятора

JMP  NEXT                      ; Переход к следующему элементу

END                                  ; Конец текста программы

Блок-схема алгоритма:

Задача 7. Переработайте программу COMPARE из п.3.2.5 таким образом, чтобы для сравнения введенных байт использовалась команда вычитания.

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

COMPARE:  MOV   A, P1                ; Ввод из порта P1 в аккумулятор

MOV   B, P2                 ; Ввод из порта P2 в регистр B

CLR C                          ;Очищаем флаг С

SUBB   A, B                 ;Вычитаем  (A)ß(B)

JNZ CHECK                ; Если (A) = (B)

SETB   F0                     ; Установить флаг  F0

JMP     L1

CHECK:       CLR     F0                     ; Сбросить флаг  F0

JC      LESS                  ; Переход, если C=1, т.е. (A) < (B)

; Если  (A) > (B)

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

JMP   L2

; Если  (A) < (B)

LESS:           MOV  P0, B                 ; Вывод в порт P0

L2:                JMP   $                        ; Зацикливание программы

L1:                JMP   $                         

END                             ; Конец текста программы

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

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

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