
- •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. Множественное ветвление программы:
Задания 1.
Составить программу для вычисления выражения 2n с использованием прерывания. Для выполнения операции умножения использовать операцию логического сдвига.
Составить программу для вычисления выражения факториала n! без использования рекурсии.
Составить программу для вычисления выражения Xn с использованием прерывания и команды MUL.
Составить программу для вычисления выражения 2X2 + 4Х + 1 с использованием прерывания и команды MUL.
Составить программу для вычисления выражения 3X + 4Y + 2 с использованием программного прерывания и команды MUL.
Составить программу, выводящую значения, сохраненные в стеке при вызове программы обработки прерывания.
Написать программу, которая записывает в регистры А и R0 начальный адрес своего местоположения в памяти.
Программу суммирования элементов массива (20 элементов) ,лежащих в диапазоне от MIN до MAX.
Программу поиска заданной цепочки символов в текстовом массиве.Признак завершения-код 1Аh.
Программу суммирования элементов массива 20 байт, которая завершается также при переполнении.
Программу, которая переставляет наоборот буквы в словах заданой строки в ASCII формате.
Найти моду (наиболее часто встречающееся значение) в массиве 20 целых чисел со знаком.
Контрольные вопросы.
Какие источники прерываний имеются в i8051 ?
Какие действия выполняет процессор при возникновении прерывания ?
Опишите регистры, используемые при обслуживании прерывания.
Каковы условия возникновения прерывания ?
ЛАБОРАТОРНАЯ РАБОТА №7
ОРГАНИЗАЦИЯ ВВОДА-ВЫВОДА
Практическая часть.
1. Ввод информации с датчиков
Ожидание статического сигнала. Например, при подключении датчика к линии бита 4 порта 1 программа ожидания замыкания контакта будет иметь вид:
WAIT0: JNB P1.4, WAIT0 ;ожидание размыкания контакта датчика
Другим частным случаем является процедура ожидания размыкания контакта, которая может быть реализована следующим образом:
25
NAME InterruptTest
PUBLIC START
PROG SEGMENT CODE
RSEG PROG
jmp START ; переход к основной программе
ORG 03H
jmp sInt0 ; вектор прерывания INT0
ORG OBH
jmp sIntT0 ; вектор прерывания по
; переполнению таймера T0
ORG 30H ; основная программа
START: mov IE,#10000011b ; разблокирование всех прерываний (бит IE.7),
; разрешение прерываний T0 ; (бит IE.1) и INT0 (бит IE.0)
setb TCON.0 ; установка типа прерывания INT0
; по срезу сигнала на входе P3.2
setb TCON.4 ; пуск таймера T0
LOOP: inc A ; инкремент аккумулятора
jnz LOOP ; переход, если не нуль
ORG 60H ; процедуры обслуживания прерываний
sInt0: push PSW ; сохранение в стеке регистров
push ACC
push B
push DPL
push DPH
inc R5
; ….
pop DPH ; восстановление регистров
pop DPL
pop B
pop ACC
pop PSW
reti ; возврат из обработки INT0
IntT0: push PSW ; сохранение в стеке регистров
push ACC
push B
push DPL
push DPH
mov 20H,R5
; ….
pop DPH
pop DPL
pop B
pop ACC
pop PSW ; восстановление регистров
reti ; возврат из обработки T0
END
24
3. Команда деления может быть также использована для отделения подполей данного в аккумуляторе.
Например, выполняя деление упакованного двоично-десятичного данного на 16 можно отделить два полубайта, старшие разряды в аккумуляторе, а младшие (остаток) - в регистре В. Каждое данное выровнено вправо и, следовательно, может обрабатываться отдельно.
В приведенном примере два упакованных двоично-десятичных числа хранятся в аккумуляторе, выполняется отделение каждого числа, затем вычисляется их произведение и возвращается в упакованном двоично-десятичном формате в аккумулятор.
; DISBCD Выполняет распаковку двух упакованных двоично-
; десятичных чисел, полученных в аккумуляторе, и возвращает их
; произведение в аккумулятор также в двоично-десятичном
; упакованном формате
BEG: MOV B,#10H ; Исходное значение делится
DIV АВ ; на 16. В регистрах А и В хранятся выделенные цифры
; (каждая выровнена вправо)
MUL АВ ; Регистр А содержит произведение в двоичном формате
; (0-99(десятичное)=0-63Н)
MOV В,#10 ; Произведение делится
DIV АВ ; на 10. Регистр А содержит цифру десятков,
; В содержит остаток
SWAP А ; Цифры в упакованном
ORL А,В ; формате
RET