- •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. Множественное ветвление программы:
Подпрограмма обслуживания 8-и разрядного семисегментного индикатора.
Подпрограмма работает от прерывания таймера 0 и выводит на индикатор содержимое ячеек РПД по адресам 31h-38h. Ячейка 39h используется подпрограммой
ORG 030H
MAS DS 9
NUMB DS 1
ORG 0C00BH
JMP TIMERENT
ORG 0C100H
MOV NUMB,#8
ORL TMOD,#00000010B ;Установка режим 2 таймера 0
MOV TL0,#0 ; Загрузка таймера
MOV TH0,#0
SETB TR0 ; Старт Т/С0
SETB IE.1 ; Разрешение прерывания от Т/С0
SETB EA ; Разрешение прерываний
JMP $
TIMERENT: PUSH ACC ; Запоминание в стеке необх. регистров
PUSH 0
PUSH DPH
PUSH DPL
PUSH PSW
MOV DPTR,#8000H
MOV A,#0
MOVX @DPTR,A ; Гашение сегментов
DEC P1
DJNZ NUMB,NEXT
MOV NUMB,#8
MOV P1,#0F7H
NEXT: MOV A,#MAS ; Вычисление адреса символа
ADD A,NUMB
MOV R0,A
MOV A,@R0
MOVX @DPTR,A ; Вывод следующего знакоместа
POP PSW
POP DPL
POP DPH
POP 0
POP ACC
RETI
END
32
Задания.
Создать файл с программой на языке ассемблер :
ORG 0С100H
MOV A,#21H
INC A
ADDC A,#11H
MOV B,#5
MUL AB
END
Запустить транслятор и проверить программу на наличие ошибок.
Выполнить пошаговую трассировку и убедиться в ее работоспособности.
После выполнения программы в регистре А должно быть число FFh, в В – 00h.
Контрольные вопросы
1. Какими типами информационных объектов может оперировать АЛУ ИК51.
2. Дать описание формата слова состояния программы (PSW).
3. Охарактеризовать флаги PSW.
4. Какую емкость имеют резидентные ПЗУ и ОЗУ микроконтроллера МК51.
5. Для каких целей используется аккумулятор при работе контроллера.
6. Дать общую характеристику регистров специальных функций МК51.
7. Охарактеризуйте основные этапы программирования и отладки программного обеспечения для МК51.
Лабораторная работа №2. Команды пересылки данных. Практическая часть.
I. Простые примеры использования программ передачи данных.
1. Записать в резидентную память данных (РПД) в ячейки с адресами 41H и 42H число 1С3АH:
MOV R0, #41H ; Загрузка в R0 указателя РПД
MOV @R0, #1CH ; Запись в РПД числа 1СН
INC R0 ; Продвижение указателя адреса РПД
MOV @R0, #3AH ; Запись в РПД числа 3AH
5
2. Передать содержимое буфера УАПП в РПД по косвенному адресу из R0:
MOV @R0,SBUF ; Передача принятого по последовательному каналу байта в РПД
3. Загрузить в указатель данных начальный адрес 7F00H массива данных, расположенного в внешней памяти данных (ВПД) :
MOV DPTR,#7F00H ; Загрузка начального значения указателя данных
4. Загрузить управляющее слово в регистр управления таймером:
MOV TCON,#00000101B
5. Обмен данными:
XCH A,R0 ;Обмен аккумулятора с регистром
XCHD A,@R0 ;Обмен младшей тетрады аккумулятора с младшей тетрадой байта РПД
6. Cбросить все флаги пользователя (область РПД с адресами 20H-2FH):
MOV R0,#20H ; Задание начального адреса области флагов
MOV R1,#0FH ; Счетчик (длина области флагов)
L: MOV @R0,#0 ; Сброс одного байта (8 флагов)
INC R0 ; Переход к следующему байту
DJNZ R1,L ; Цикл
II. Обращение к памяти программ.
1. Часто необходимо иметь в памяти программ таблицы готовых решений. Для возможности работы с такими таблицами, хранящимися в резидентной памяти программ (РПП) и внешней памяти программ (ВПП), имеются специальные команды обращения к памяти – MOVC. Поясним использование этих команд на следующем примере. Требуется составить подпрограмму вычисления синуса угла Х ( 00<X<890 с дискретностью 10). Наиболее быстрое вычисление функции можно получить путем выборки готового значения синуса из таблицы. Такая таблица для диапазона 00 - 890 займет 90 байтов с погрешностью 0,4%. Исходным параметром для подпрограммы служит значение угла Х, находящееся в аккумуляторе:
; Вычисления Sin(x) по таблице
; Вход: В (А) – X в пределах от 0 до 89 градусов
; Выход: (А) – дробная часть значения синуса
SINX: INC A ; Инкремент аккумулятора
MOVC A,@A+PC ; Загрузка значения синуса из таблицы
RET ; Возврат
; Таблица значений синуса
SINUS: DB 0 ; SIN(0)=0
DB 00000100B ; SIN(1)=0.017
DB 00001001B ; SIN(2)=0.035
…
6