- •Министерство образования украины
- •«Однокристальный микроконтроллер 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. Множественное ветвление программы:
Допустим, что результатом работы некоторой программы является число Х ( в пределах от 0 до 15). Необходимо организовать передачу управления 16 различным программам с именами ROUT0 – ROUTF в зависимости от вычисления значения Х:
ORG 0C100H ; Задание начального адреса программы
MOV DPTR,#TABLE
ANL A,#0FH ; Сброс старшей тетрады А во избежание ошибки перехода
JMP @A+DPTR ; Обращение к таблице векторов переходов
;Таблица векторов переходов
TABLE: DB ROUT0 ; Начальный адрес программы ROUT0
DB ROUT1
DB ROUT2
…
…
…
DB ROUTF ; Начальный адрес программы ROUTF
6. Последовательная передача параметров
Если подпрограмма вызывается часто, то наиболее эффективным программным способом передачи параметров является последовательный. Константы в этом случае являются частью программного кода и следуют непосредственно за инструкцией вызова подпрограммы. По адресу возврата в стеке подпрограмма определяет место расположения параметров для последующего считывания.
Например, подпрограмма LINE выполняет сложение 16-разрядной упакованной двоично-десятичной константы с двухбайтной двоично-десятичной переменной, хранящейся во внутренней памяти ЗУ, и запоминает сумму в другом двухбайтном буфере. В подпрограмму должны передаваться константа и оба адреса буферов. Вместо использования для этих целей четырех рабочих регистров используются 4 байта в памяти программ, следующих за командой вызова подпрограммы.
В приведенном ниже примере подпрограмма осуществляет сложение десятичной константы 1234 с содержимым адреса внутренней памяти 56Н и записывает результат в буфер по адресу 78Н. Подпрограмма LINE определяет, из какой точки был осуществлен ее вызов путем извлечения из стека адреса возврата в старший и младший байты указателя данных.
Инструкция MOVC затем считывает параметры из памяти программы по мере необходимости.
CALL LINE
DW 1234H ; BCD-константа
DB 56Н ; Адрес строки операнда
DB 78Н ; Адрес строки результата
; .......... Продолжение программы
LINE: POP DPH ; Извлечение адреса возврата в DPTR
POP DPL
MOV А, #2 ; Индекс строк источника параметров
MOVC A,@A+DPTR ; Извлечение адреса строки источника
MOV R0,A
MOV A,#3 ; Индекс строк приемника параметров
MOVC A,@A+DPTR ; Извлечение адреса строки приемника
MOV R1, А
MOV А,#1 ; Индекс мл.байта 16-разр. константы
MOVC A,@A+DPTR ; Извлечение мл. байта константы
ADD A,@R0 ; Вычисление мл. байта суммы
DA А ; Десятичная коррекция
MOV @R1,A ; Запись в буфер
INC R0
INC R1
CLR A ; Индекс ст. байта равен нулю
MOVC A,@A+DPTR ; Извлечение ст. байта константы
ADDC A,@R0
DA A ; Десятичная коррекция
MOV @R1,A ; Запись в буфер
MOV А,#4 ; Индекс для продолжения программы
JMP @A+DPTR ; Переход к инструкции, следующей за списком параметров.
Следует учесть, что инструкции ACALL и LCALL не используются в программе, поскольку каждая из них заносит адрес в стек. В то же время инструкция MOVC имеет доступ ко всем 64 К байтам адресного пространства памяти программ микроЭВМ.
