- •Министерство образования украины
- •«Однокристальный микроконтроллер i8051»
- •Практическая часть
- •Лабораторная работа №1 изучение программных и аппаратных средств разработки и отладки систем на базе i8051 Практическая часть.
- •Порядок выполнения работы
- •Name sample
- •Задания.
- •Лабораторная работа №2.
- •III. Работа с внешней памятью данных (впд).
- •1. Запомнить в впд содержимое регистров банка 0.
- •IV.Операции со стеком.
- •Индивидуальное задание на лабораторную работу
- •Задания 2
- •Контрольные вопросы.
- •Лабораторная работа №3.
- •Задания 1.
- •Задания 2
- •Контрольные вопросы.
- •Лабораторная работа №4
- •X equ p1.2
- •V equ p1.1
- •Задания 1.
- •Задания 2.
- •Задания 3.
- •Контрольные вопросы.
- •Лабораторная работа №5 команды передачи управления. Практическая часть.
- •3. Временная задержка длительностью 1с:
- •4. Передать управление одной из восьми программ rout0 - rout7 при появлении нулевого уровня на соответствующем входе порта 0. Наивысшим приоритетом обладает вход р1.0:
- •5. Множественное ветвление программы:
- •6. Последовательная передача параметров
- •Задания 1.
- •Индивидуальные задания 2
- •Контрольные вопросы.
- •Лабораторная работа №6 изучение системы прерываний Практическая часть.
- •1. Сохранение состояния центрального процессора во время прерываний
- •End Задания 1.
- •Контрольные вопросы.
- •Устранение дребезга контактов
- •2. Формирование импульсных сигналов
- •Xcor: cpl p3.4
- •3. Измерение длительности импульса
- •5. Передача символьной строки через последовательный порт.
- •6. Ввод данных с тумблеров, подключенных к линиям 3 и 4 порта 1 и выдача их на светодиоды, подключенные к линиям 4 и 5 порта 3.
- •7. Воспроизведение звука через динамик, подключенный к p3.5.
- •Задание 1
- •Задание 2
- •Контрольные вопросы.
- •3. Считывание текущего состояния таймера без нарушения процесса синхронизации.
- •4. Измерение длительности сигнала.
- •Задания.
- •Контрольные вопросы.
- •Лабораторная работа №9 организация Динамической индикации Практическая часть.
- •Задания.
- •Контрольные вопросы.
- •Лабораторная работа №10 вВод информации с Клавиатуры
- •Mov numb,#8
- •Movx @dptr,a ; Вывод следующего знакоместа
- •Задания.
- •Контрольные вопросы.
Задания.
Создать файл с программой на языке ассемблер :
ORG 0С100H
MOV A,#21H
INC A
ADD 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
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
…
…
…
DB 11111111B ; SIN(89)=0.999
Примечательно, что данная программа обходится без использования указателя данных DPTR. Инкремент А перед обращением к таблице необходим из-за наличия однобайтной команды возврата, расположенной между командой MOVC и началом таблицы значений синуса.
2. Вычислить произведение двух 4-х битных чисел, расположенных в младших тетрадах регистров R0 и R1. Для вычисления используется таблица произведений для всех комбинаций сомножителей (всего 256). Произведение двух младших тетрад имеет формат 1 байт.
; Вычисление Z=X*Y
; R0=0000.XXXX
; R1=0000.YYYY
; X и Y принимают значения 0 и 1
ORG 0C100H ; Директива ассемблера, задающая
; начальный адрес программы
MOV DPTR, #MAS ; Загрузка адреса массива
; в регистр-указатель данных
MOV A,R0 ; Пересылка множимого в аккумулятор
SWAP A ; Обмен тетрад аккумулятора
ORL A,R1 ; Формирование в аккумуляторе адреса
; произведения
MOVC A,@A+DPTR ; Загрузка в аккумулятор произведения
ORG 0C300H ; Директива ассемблера, задающая
; начальный адрес таблицы
; Директивы ассемблера, формирующие таблицу произведений
MAS DB 0,0,0,0,0,0,0,0 ; Z=0*Y
DB 0,0,0,0,0,0,0,0
DB 0,1,2,…..,0FH ; Z=1*Y (1*0,1*1,1*2,…,1*0FH)
…
…
…
DB 0,0FH,1EH,…,0E1 ; Z=0F*Y
; (0FH*0,0FH*1,0FH*2,…,0FH*0FH)