МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение образования «Гомельский государственный
университет им. П. О. Сухого»
Кафедра «Промышленная электроника»
Лабораторная работа № 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) на персональном компьютере.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.