- •Министерство образования украины
- •«Однокристальный микроконтроллер 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 ; Вывод следующего знакоместа
- •Задания.
- •Контрольные вопросы.
Задания 1.
Написать программу сложения или вычитания двух n-байтовых чисел, где число n будет являться параметром.
Написать программу, вычисляющую сумму чисел от 1 до n с помощью цикла.
Написать программу, вычисляющую первые n чисел Фибоначчи. (Т.е. последовательность, в которой каждый последующий член является суммой двух предыдущих: 0,1,1,2,3,...)
Написать программу нахождения наибольшего общего делителя по алгоритму Евклида. (Берется исходная пара чисел. Из большего числа вычитается меньшее, потом меньшее число из первой пары и разность первой пары становятся следующей парой, и алгоритм повторяется снова до тех пор, пока в паре не окажутся одинаковые числа. Это и будет наибольшим общим делителем.)
Написать программы умножения и деления, используя команды сложения и вычитания.
Написать программу поиска максимального элемента в массиве.
Перемножить два беззнаковых 16-разрядных числа, используя команду 8-разрядного умножения.
Написать программы для вычисления приведенных ниже выражений, где переменные являются 8-разрядными положительными числами. Частное и остаток результата отдельно записать в память: Y=12/(14*A+(B-C+35))
Y=(A*B-78)/(27*C+78)
Y=((4*A+B)-(2*A-45))/C
Y=(A+2*B-165)^2/(C+124)
Y=A^2/(25*B-C+119)
Y=A/(B-15*C+37).
Задания 2
Составить программу на основе команд арифметических операций для вычисления следующего выражения согласно своему варианту:
1. Y = (А + В) / С
2. Y = (А - В) * (С - В)
3. Y = А - С / В
4. Y = (А + В - С) * В
5. Y = А * В + С
6. Y = А - В + С
7. Y = (А - С) / В
8. Y=A + C-B*C
Принять значения А равным 14, В равным 2, С равным 4.
Контрольные вопросы.
Объясните логику работы команд сложения и вычитания с учетом флагов С и OV.
Опишите способы адресации команд ADD, ADDC, SUBB.
Опишите способы адресации команд MUL, DIV.
Опишите способы адресации команд INC, DEC.
Как работает команда DA .
Для чего чаще всего используются команды INC и DEC .
7. В чем различие команд арифметических операций без учета и с учетом переноса.
8. Для каких целей применяются команды инкрементирования и декрементирования содержимого отдельных регистров.
9. Каким образом и с какой целью осуществляется десятичная коррекция аккумулятора.
10. В чем особенности команд умножения и деления MUL и DIV. В каком случае при их выполнении взводится флаг переполнения OV.
Лабораторная работа №4
ЛОГИЧЕСКИЕ КОМАНДЫ. КОМАНДЫ СДВИГА И РАБОТЫ С БИТАМИ
Практическая часть.
Маскирование при вводе.
Ввести в регистр R7 информацию из линий 0,1,3,4 и 7:
MOV A,P1 ; Ввод байта из порта 1
ANL A,#10011011B ; Маскирование
MOV R7,A ; Передача
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 и в данном примере специфицирован пользователем для выполнения функций флага паритета.
Вычислить булеву функцию трех переменных :
Y = X V W (XV). Переменные X, V, W поступают на линии 2, 1, и 0 порта 1 соответственно. Результат Y необходимо вывести на линию 3 порта 1:
Y EQU P1.3