- •Movx @dptr,a ; Вывод следующего знакоместа
- •Контрольные вопросы.
- •Лабораторная работа №10 вВод информации с Клавиатуры
- •Контрольные вопросы.
- •Лабораторная работа №9 организация Динамической индикации Практическая часть.
- •Порядок выполнения работы
- •Задания.
- •Подпрограмма обслуживания 8-и разрядного семисегментного индикатора.
- •Задания.
- •Контрольные вопросы
- •Лабораторная работа №2. Команды пересылки данных. Практическая часть.
- •Формирование временной задержки на основе таймера.
- •3. Считывание текущего состояния таймера без нарушения процесса синхронизации.
- •4. Измерение длительности сигнала.
- •Задание 2
- •1. Инициализация Таймера 1 для автозагрузки с частотой 32х2400 Гц.
- •III. Работа с внешней памятью данных (впд).
- •1. Запомнить в впд содержимое регистров банка 0.
- •IV.Операции со стеком.
- •Индивидуальное задание на лабораторную работу
- •6. Ввод данных с тумблеров, подключенных к линиям 3 и 4 порта 1 и выдача их на светодиоды, подключенные к линиям 4 и 5 порта 3.
- •7. Воспроизведение звука через динамик, подключенный к p3.5.
- •Задание 1
- •5. Передача символьной строки через последовательный порт.
- •Задания 2
- •Контрольные вопросы.
- •Лабораторная работа №3. Арифметические команды Практическая часть.
- •I. Инкремент и декремент.
- •II. Сложение и вычитание.
- •2. Формирование импульсных сигналов
- •3. Измерение длительности импульса
- •Устранение дребезга контактов
- •3. Программа вычитает строку, указанную регистром r1, из строки, указанной регистром r0, с точностью, указанной регистром r2. После выполнения операции проверяется переполнение результата.
- •III. Умножение и деление.
- •Задания 1.
- •1. Ввод информации с датчиков
- •Задания 1.
- •Задания 2
- •Контрольные вопросы.
- •Лабораторная работа №4 логические команды. Команды сдвига и работы с битами Практическая часть.
- •1. Маскирование при вводе.
- •Контрольные вопросы.
- •Лабораторная работа №6 изучение системы прерываний Практическая часть.
- •1. Сохранение состояния центрального процессора во время прерываний
- •Вычислить булеву функцию трех переменных :
- •Задания 1.
- •Задания 2.
- •Задания 1.
- •Индивидуальные задания 2
- •6. Последовательная передача параметров
- •Задания 3.
- •Контрольные вопросы.
- •Лабораторная работа №5 команды передачи управления. Практическая часть.
- •Временная задержка малой длительности.
- •Временная задержка большой длительности.
- •3. Временная задержка длительностью 1с:
- •4. Передать управление одной из восьми программ rout0 - rout7 при появлении нулевого уровня на соответствующем входе порта 0. Наивысшим приоритетом обладает вход р1.0:
- •5. Множественное ветвление программы:
Временная задержка большой длительности.
Задержка большой длительности может быть реализована методом вложенных циклов. Числа Х и Y выбираются из соотношения Т = 2 + 1 + Х(1 + 2Y + 2) + 2, где Т - реализуемый временной интервал в микросекундах. Максимальный временной интервал, реализуемый таким способом, при Х = Y = 255 составляет 130.82 мс, т.е. приблизительно 0.13 с.
В качестве примера рассмотрим подпрограмму, реализующую временную задержку 100 мс:
DELAY: MOV R1, #195 ;загрузка X
LOOPEX: MOV R2, #254 ;загрузка
YLOOPIN: DJNZ R2, LOOPIN ;декремент R2 и внутренний цикл,
;если (R2)0
18
DJNZ R1, LOOPEX ;декремент R1 и внешний цикл,
;если (R1)0
MOV R3, #174 ;точная подстройка
LOOPAD: DJNZ R3, LOOPAD ;временной задержки
NOP ;задержки
RET
Здесь два вложенных цикла реализуют временную задержку длительностью 5 + 195(3 + 2*254) = 99 650 мкс, а дополнительный цикл LOOPAD и команда NOP реализует задержку 350 мкс и тем самым обеспечивает точную настройку временного интервала.
3. Временная задержка длительностью 1с:
ONESEC: MOV R3,#10 ; Загрузка в R3 числа вызовов подпрограммы DELAY
LOOP: CALL DELAY ; Задержка 100 мс
DJNZ R3,LOOP ; и цикл, если R3 не равно 0
4. Передать управление одной из восьми программ rout0 - rout7 при появлении нулевого уровня на соответствующем входе порта 0. Наивысшим приоритетом обладает вход р1.0:
ORL P1,#0FFH ; Настройка порта 1 на ввод
L: MOV A,P1 ; Ввод данных из порта 1
CPL A ; Инверсия аккумулятора
JZ L ; Ожидание появления первого нуля
JB A.0,ROUT0 ; Переход к ROUT0, если Р1.0=0
JB A.1,ROUT1 ; …
JB A.2,ROUT2 ; …
JB A.3,ROUT3 ; …
JB A.4,ROUT4 ; …
JB A.5,ROUT5 ; …
JB A.6,ROUT6 ; …
JB A.7,ROUT7 ; Переход к ROUT0, если Р1.7=7
Переход осуществляется группой команд JB. Приоритеты входов порта 1 определяются очередностью проверки.
5. Множественное ветвление программы:
Допустим, что результатом работы некоторой программы является число Х ( в пределах от 0 до 15). Необходимо организовать передачу управления 16 различным программам с именами ROUT0 – ROUTF в зависимости от вычисления значения Х:
ORG 0C100H ; Задание начального адреса программы
MOV DPTR,#TABLE
ANL A,#0FH ; Сброс старшей тетрады А во избежание ошибки перехода
JMP @A+DPTR ; Обращение к таблице векторов переходов
19
