
- •Министерство образования украины
- •«Однокристальный микроконтроллер 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 ; Вывод следующего знакоместа
- •Задания.
- •Контрольные вопросы.
Лабораторная работа №5 команды передачи управления. Практическая часть.
Временная задержка малой длительности.
Предположим, что в управляющей программе необходимо реализовать временную задержку 99 мкс. Фрагмент программы, реализующей временную задержку, требуется оформить в виде подпрограммы, так как предполагается, что основная управляющая программа будет производить к ней многократные обращения для формирования выходных импульсных сигналов, длительность которых кратна 99 мкс:
DELAY: MOV R2, #X ;(R2)X
COUNT: DJNZ R2, COUNT ;декремент R2 и цикл, если не нуль
RET ;возврат
При этом необходимо учитывать, что команды MOV и RET выполняются однократно, а число повторений команды DJNZ равно числу X. Кроме того, обращение к подпрограмме временной задержки осуществляется по команде CALL DELAY, вpeмя исполнения которой также необходимо учитывать при подсчете временной задержки. В описании команд микроконтроллера указывается, за сколько машинных циклов (МЦ) исполняется каждая команда. На основании этих данных определяется суммарное число машинных циклов в подпрограмме: CALL - 2 МЦ, MOV - 1 МЦ, DJNZ - 2 МЦ, RET - 2 МЦ.
При тактовой частоте 12 МГц каждый машинный цикл выполняется за 1 мкс. Таким образом, подпрограмма выполняется за время 2 + 1 + 2Х + 2 = 5 + 2Х мкс. Для реализации временной задержки 99 мкс число Х = (99 - 5)/2 = 47.
Для более точной подстройки в подпрограмму могут быть включены команды NOP, время выполнения каждой из которых равно 1 мкс.
Временная задержка большой длительности.
Задержка большой длительности может быть реализована методом вложенных циклов. Числа Х и Y выбираются из соотношения Т = 2 + 1 + Х(1 + 2Y + 2) + 2, где Т - реализуемый временной интервал в микросекундах. Максимальный временной интервал, реализуемый таким способом, при Х = Y = 255 составляет 130.82 мс, т.е. приблизительно 0.13 с.
В качестве примера рассмотрим подпрограмму, реализующую временную задержку 100 мс:
DELAY: MOV R1, #195 ;загрузка X
LOOPEX: MOV R2, #254 ;загрузка
YLOOPIN: DJNZ R2, LOOPIN ;декремент R2 и внутренний цикл,
;если (R2)0
DJNZ R1, LOOPEX ;декремент R1 и внешний цикл,
;если (R1)0
MOV R3, #174 ;точная подстройка
LOOPAD: DJNZ R3, LOOPAD ;временной задержки
NOP ;задержки
RET
Здесь два вложенных цикла реализуют временную задержку длительностью 5 + 195(3 + 2*254) = 99 650 мкс, а дополнительный цикл LOOPAD и команда NOP реализует задержку 350 мкс и тем самым обеспечивает точную настройку временного интервала.
3. Временная задержка длительностью 1с:
ONESEC: MOV R3,#10 ; Загрузка в R3 числа вызовов подпрограммы DELAY
LOOP: CALL DELAY ; Задержка 100 мс
DJNZ R3,LOOP ; и цикл, если R3 не равно 0
4. Передать управление одной из восьми программ rout0 - rout7 при появлении нулевого уровня на соответствующем входе порта 0. Наивысшим приоритетом обладает вход р1.0:
ORL P1,#0FFH ; Настройка порта 1 на ввод
L: MOV A,P1 ; Ввод данных из порта 1
CPL A ; Инверсия аккумулятора
JZ L ; Ожидание появления первого нуля
JB A.0,ROUT0 ; Переход к ROUT0, если Р1.0=0
JB A.1,ROUT1 ; …
JB A.2,ROUT2 ; …
JB A.3,ROUT3 ; …
JB A.4,ROUT4 ; …
JB A.5,ROUT5 ; …
JB A.6,ROUT6 ; …
JB A.7,ROUT7 ; Переход к ROUT0, если Р1.7=7
Переход осуществляется группой команд JB. Приоритеты входов порта 1 определяются очередностью проверки.