Лабораторная работа № 1 Изучение основных команд процессора i8051 и функциями системы моделирования
1. Ведение.
Цель работы - ознакомление с системой команд однокристального микроконтроллера семейства i8051 и получение навыков работы в системе отладки.
Система команд микропроцессора и наиболее употребительные директивы ассемблера представлены в разделах помощи системы отладки (см. пункты окна "Помощь" экранного меню).
Для первоначального ознакомления учащийся составляет программу в языке ассемблера ( см. варианты заданий) и выполняет основные этапы отладки : редактирование, компиляцию, моделирование . Все этапы работы выполняются посредством вызова соответствующих действий с помощью экранного меню интегрированной системы отладки, а в процессе моделирования - выбором соответствующих функций из меню встроенной программы-моделировщика. Подробно последовательность вызовов представлена в разделе 3 описания настоящей работы - порядок выполнения работы.
Разрабатывая обучающимся тестовая программа содержит операции считывания входных данных с портов ввода-вывода, обработку считанной информации и выдачу результатов на внешние контакты микроконтроллера.
В работе рассматривается так называемый минимальный режим микроконтроллера, то есть без внешней памяти. Для приема и выдачи информации используются порты ввода-вывода. Порт ввода-вывода содержит регистр для выводимых данных и буфер для входных данных. Регистр выходных данных может быть загружен командой MOV Pn, A , где n -номер порта, а данные с линии ввода-вывода прочитаны командой MOV A,Pn. Однако следует иметь в виду, что внешний контакт порта является одновременно и входом и выходом. Фактически на этой линии реализуется операция "монтажного ИЛИ", то есть если внешний источник, подключенный к соответствующему контакту или выходной регистр выдают на линию уровень логического нуля, то состояние линии нулевое, и при считывании с порта прочтется логический ноль. Иными словами, если порт используется для ввода данных в выходной регистр на время обмена ( а если ввод через этот порт не предусмотрен, то постоянно) должен быть загружен код, содержащий единицу во всех разрядах. Подобно внешние устройства, подключаемые к портам, не должны выдавать активных единичных сигналов на линию передачи данных во время приема.
2. Индивидуальные задания
Во всех вариантах заданий предусматривается наличие циклической головной программ ( 5 - 10 повторений цикла). В каждом цикле выполняется считывание данных с одного из портов, вызов подпрограммы преобразования принятых данных по алгоритму, заданному преподавателем из числа нижеприведенных, и выдача преобразованного значения на другой порт.
Вариант 1. В считанном байте анализируется бит В7. Если в нем 0 то передаче на выходной порт подлежит исходный байт, иначе все разряды кроме В7 инвертируются ( эквивалентно переводу в обратный код).
Вариант 2. В считанном байте анализируется бит В0. Если в нем 0 то передаче на выходной порт подлежит исходный байт, иначе считанное значение увеличивается на единицу .
Вариант 3. . В считанном байте переставляются местами В4 и В5.
Вариант 4. В считанном байте сравниваются биты В3 и В7. Если они равны то на выход передается нулевой код, иначе передается считанное значение
Вариант 5. Если В считанном байте в младшей тетраде есть хоть одна единица, то на выходном порте устанавливается в единицу разряд В7, остальные разряды неизменны.
Замечания:
- Для подготовки программы требуется знание символики команд работы с битами и условных переходов - с ней можно ознакомится, используя встроенную в систему отладки текстовую помощь.
-. Внутри вызванной подпрограммы рекомендуется установить новый регистровый банк используя установку или обнуления битов выбора банка ( напр. SETB RS0, CLRB RS1).
Тогда головная программа и подпрограмма под одинаковыми логическими именами регистров "подразумевают" различные физические ячейки памяти. Такой подход освобождает программиста от проблем защиты регистровой памяти при переходе с одной программы на другую.
-. Рекомендуется разместить основную часть программы с адреса не ниже 100Н. Этой основной части должно в ассемблерной программе предшествовать директива
Org <начальный адрес>
Так как процессор после запуска устанавливает на счетчике команд нулевой код, программа должна начинаться с перехода на начальный адрес основной части программы ( н.п. LJMP 100H).
Асемблер допускает символическое задание меток для команд перехода.