
- •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. Множественное ветвление программы:
Контрольные вопросы.
В чем заключается отличие команд JB и JNB ?
В чем состоит отличие команд JMP и AJMP ?
В чем состоит отличие команд JC и JNC ?
Какие команды перехода влияют на флаги?
Какая команда проверяет флаг Z на равенство "0"?
Какие команды взаимодействуют с флагом Z?
Какие действия выполняет команда CJNE ?
Какие действия выполняет команда DJNZ ? Можно ли командой перехода изменить флаг Z?
Существует ли разница между командами ACALL и LCALL ?
Каково значение над стеком, если Вы находитесь в подпрограмме?
Какие команды взаимодействуют с флагом С ?
12. Какие виды переходов в МК51 вы знаете в зависимости от разрядности указываемого в команде адреса перехода или вызова. В чем отличия этих видов переходов и вызовов.
13. По каким условиям возможно организовать ветвящиеся вычислительные процессы в МК51.
14. В чем отличие команд возврата из подпрограмм RET и RETI.
15. Какие процессы и источники могут вызвать ситуации прерываний в МК51.
16. Какие условия могут вызвать блокировку прерывания и его необслуживание.
17. Каков порядок опроса флагов прерываний (приоритет обслуживания) установлен по умолчанию в МК51. Каким образом можно изменить эти приоритеты.
Лабораторная работа №6 изучение системы прерываний Практическая часть.
1. Сохранение состояния центрального процессора во время прерываний
При распознавании запроса прерывания управление программой переходит к соответствующей сервисной подпрограмме путем выполнения центральным процессором команды длинного вызова (LCALL). Адрес программы охраняется в стеке. После завершения сервисной подпрограммы инструкция RETI возвращает процессор в основную программу в точку прерывания. Программа обработки прерывания не должна изменять значения переменных, используемых в основной программе, для возможности продолжения правильной работы последней. Инструкции PUSH и POP обеспечивают сохранение регистров в стеке.
LOC EQU $ ; Запоминание счетчика адреса
ORG 0C003H ; Начальный адрес подпрограммы прерывания
LJMP SERV
22
2. Ввести в аккумулятор данные из порта 2 и выделить требуемые биты по маске, находящейся в R0:
MOV A,P2 ; Ввод из порта 2
ANL A,R0 ; Маскирование
3.Выполнить логический сдвиг влево двухбайтного слова, расположенного в (R2) (A):
SHIF: RLC A ; Сдвиг младшего байта
XCH A,R2 ; Обмен аккумулятора и расширителя
RLC A ; Сдвиг старшего байта
XCH A,R2 ; Обмен
4. Выполнить арифметический сдвиг двухбайтного слова (R2) (A) вправо:
SHIF: SETB C ; Установка флага переноса
XCH A,R2 ; Обмен байтами
B A.7,NO ; Если R2.7 не равно 1, то сброс
CLR C ; флага переноса
NO: RRCA ; Сдвиг флага переноса в расширитель
XCH A,R2 ; Обмен
RRC A ; Сдвиг младшего байта
5. Умножить аккумулятор на число 2 в степени Х, где Х – число не более 8, хранящееся в R2. Умножение на 2 заменяется арифметическим сдвигом влево аккумулятора и расширителя R1:
MOV R1,#0 ; Сброс R1
CLR C ; Сброс флага переноса
L: RLC A ; Арифметический сдвиг влево объединенного
XCH A,R1 ; 16-битного результата в
RLC A ; регистровой паре (R1)(A)
XCH A,R1
DJNZ R2,L
6. Определить четность числа единиц в аккумуляторе :
CLR F0 ; Сброс F0
MOV R7,#9 ; Число повторов
L: RRC A ; Пересылка бита А.0 в перенос
JNC N ; Пропустить, если бит равен 0
CPL F0 ; Подсчет паритета
N: DJNZ R7,L
После выполнения программы аккумулятор сохранит свое значение, флаг F0 будет установлен, если число единиц в аккумуляторе было нечетно. Флаг F0 входит в состав PSW и в данном примере специфицирован пользователем для выполнения функций флага паритета.
15