
- •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. Множественное ветвление программы:
I. Инкремент и декремент.
Декрементировать содержимое ячеек резидентной памяти данных (РПД) по адресам 10-20
MOV R0,#10 ; Загрузка в R0 начального адреса
9
MOV R3, #20-10+1 ; Загрузка в R3 числа ячеек
L: DEC @R0 ; Декремент ячейки РПД
INC R0 ; Продвижение указателя адреса
DJNZ R3,L ; Декремент R3 и повтор, пока R3 не равно нулю
II. Сложение и вычитание.
Команды ADDC и SUBB учитывают предыдущее состояние флажка переноса (заема), что позволяет производить вычисления с двойной точностью путем повторения операции над последующими старшими байтами операнда. Если входными данными для операции является строка целых чисел без знака, то флажок переноса установится после завершения операции при переполнении (для ADDC) или при исчезновении значащих разрядов (для SUBB). Для отрицательных данных, представленных дополнительным кодом, старший разряд старшего байта исходных данных содержит знак строки, поэтому флажок переполнения (OV) будет указывать на переполнение или исчезновение значащих разрядов.
Рассмотрим выполнение программы, суммирующей два двоичных многобайтных числа. Оба слагаемых располагаются в резидентной памяти данных (РПД), начиная с младшего байта. При сложении чисел без знака на переполнение укажет флаг С, а в случае сложения чисел со знаком – флаг OV.
N EQU 10 ; Формат операндов в байтах
ORG 20H
NUM1 DS N ; Память для первого числа
NUM2 DS N ; Память для второго числа
ORG 0C100H ; Установка программного счетчика на адрес 0C100h
MOV R0,#NUM1 ;Запись в R0 начального адреса первого числа
MOV R1,#NUM2 ;В R1 – начальный адрес второго числа
MOV R2,#N ;В R2 – формат операндов в байтах
CLR C ;Сброс переноса
L1: MOV A,@R0 ;Загрузка в аккумулятор текущего байта первого слагаемого
ADDC A,@R1 ;Сложение байт с учетом переноса
MOV @R0,A ;Размещение байта результата
INC R0 ;Продвижение указателей
INC R1
DJNZ R2,L1 ;Цикл, если не все байты просуммированы
END
2. Программа складывает многобайтные BCD-числа, расположенные в резидентной памяти данных (РПД). Регистры R0 и R1 указывают начальные адреса слагаемых. Слагаемые расположены в РПД, начиная с младших байтов. Формат слагаемых одинаков и задается в R2 числом байтов. Результат сложения помещается на место первого слагаемого:
10
MOV TMOD, #0100000B;настройка счетчика 1
MOV TH1, #0 ;сброс счетчика импульсов
WAIT0: JB P3.4, WAIT0 ;ожидание включения счёта
SETB TCON.6 ;пуск счетчика 1
WAIT1: JNB P3.4, WAIT1 ;ожидание выключения счёта
CLR TCON.6 ;останов счетчика 1
MOV A, TH1 ;(аккумулятор) число импульсов
EXIT: ... ;выход из процедуры
Ожидание заданного кода на входах порта, например 0Аh на входах порта 1:
MOV A,#0AH ; Загрузка
WAIT: CJNE A,P1,WAIT ; Ожидание прихода кода
2. Формирование импульсных сигналов
Импульс можно получить последовательной выдачей сигналов включить и отключить с промежуточным вызовом подпрограммы временной задержки:
PULS: ;выдача импульса в линию 4 порта 3
ON: ANL P3, #11101111B ;включение
CALL DELAY ;временная задержка
OFF: ORL P3, #00010000B ;отключение
...
Генерация меандра. В этом случае можно воспользоваться процедурой выдачи импульса PULS и подпрограммой задержки, равной половине периода сигнала DLYX:
MEANDR:
XCOR: CPL P3.4
ACALL DLYX
SJMP XCOR
Бесконечный периодический сигнал формируется в линии 4 порта 3. На остальных линиях сигналы остаются неизменными.