Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_11.doc
Скачиваний:
5
Добавлен:
27.09.2019
Размер:
82.94 Кб
Скачать

3. Порядок выполнения работы

3.1. Исследование команд условного перехода

3.1.1. Команды перехода по содержимому аккумулятора

Это команды

JZ label - переход на метку label, если содержимое аккумулятора равно нулю,

JNZ label - переход на метку label, если содержимое аккумулятора не равно нулю.

Задание. Создайте файл в Вашей папке с именем wait_0.asm. Запишите в него программу, которая постоянно вводит байт из порта P1 и выводит его в порт P0 до тех пор, пока он не будет равным нулю

READ: MOV A, P1

MOV P0, A

JNZ READ ; Повторять, пока (A)  0

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

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

Получите файлы wait_0.obj и wait_0.hex. Исследуйте работу программы с помощью симулятора AVSIM51 в пошаговом режиме, сделав несколько циклов. Затем занесите в порт P1 нули и вновь выполните программу в пошаговом режиме. Сделайте выводы о работе программы.

3.1.2. Команды сравнения и перехода, если не равно

Из четырех возможных вариантов этой команды мы пока рассмотрим следующий

CJNE A, #d, label - сравнение содержимого аккумулятора с константой и переход,

если не равно

Задание. Создайте в Вашей папке файл с именем wait_77.asm и запишите в него программу, которая постоянно вводит байт из порта P1 и выводит его в порт P0, пока он не станет равным значению 77H

READ: MOV A, P1

MOV P0, A

CJNE A, #77H, READ ; Повторять, пока (A)  0

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

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

Получите файлы wait_77.obj и wait_77.hex. Исследуйте работу программы с помощью симулятора AVSIM51 в пошаговом режиме, сделав несколько циклов. Затем занесите в порт P1 число 77H и вновь выполните программу в пошаговом режиме. Сделайте выводы о работе программы.

3.1.3. Команды проверки битов

Это команды

JB bit, label - переход, если бит равен единице

JNB bit, label - переход, если бит равен нулю.

Задание. Создайте в Вашей папке файл с именем wait_p23.asm и занесите в него текст программы, которая постоянно вводит байт из порта P1 в аккумулятор и выводит его в порт P0 до тех пор, пока 3-й разряд порта P2 будет равен единице. Если же в этом разряде будет нуль, то цикл ввода-вывода прекращается.

READ: MOV A, P1

MOV P0, A

JB P2.3, READ ; Повторять, если P2.3 = 1

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

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

Получите файлы wait_p23.obj и wait_p23.hex. Исследуйте работу программы с помощью симулятора AVSIM51 в пошаговом режиме, сделав несколько циклов. Затем занесите в 3-й разряд порта P2 нуль и вновь выполните программу в пошаговом режиме. Сделайте выводы о работе программы.

3.1.4. Команды декремента и перехода, если не нуль

Это команды

DJNZ Rn, label - декремент регистра и переход, если его содержимое не равно нулю

DJNZ ad, label - декремент прямоадресуемого байта и переход, если его содержимое

не равно нулю

Рассмотрим программу, которая выводит в порт P0 числа от 80H до 00H.

Задание 1. Создайте файл с именем out_1.asm и занесите в него текст программы

MOV P0, #80H

OUT: DJNZ P0, OUT ; Декремент P0 и цикл, если (P0)  0

JMP $

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

Получите файлы out_1.obj и out_1.hex. Исследуйте работу программы с помощью симулятора в автоматическом режиме, установив низкую скорость работы (LOW) с помощью клавиши F5. Напомним, что для запуска автоматического режима необходимо нажать клавишу F1. Остановить работу программы в автоматическом режиме можно повторным нажатием на клавишу F1. Каково будет содержимое порта P0 при выходе из программы

Задание 2. Создайте файл с именем out_2.asm и занесите в него текст программы

MOV R7, #80H

OUT: MOV P0, R7

DJNZ R7, OUT ; Декремент R7 и цикл, если (R7)  0

END

Получите файлы out_2.obj и out_2.hex. Исследуйте работу программы с помощью симулятора в автоматическом режиме, установив низкую скорость работы (LOW) с помощью клавиши F5. Каково будет содержимое порта P0 при выходе из программы Как можно исправить ошибку в работе программы Модернизируйте программу, находящуюся в файле out_2.asm. Исследуйте ее работу и убедитесь в правильности выполнения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]