Электронные системы ускорителей


Warning: include(/home/accel/www.accel.ru/electr/microproc/laba1/pagestruct/path.php): failed to open stream: No such file or directory in /home/accel/www.accel.ru/electr/microproc/laba1/index.php on line 13

Warning: include(): Failed opening '/home/accel/www.accel.ru/electr/microproc/laba1/pagestruct/path.php' for inclusion (include_path='.:') in /home/accel/www.accel.ru/electr/microproc/laba1/index.php on line 13

Warning: include(/home/accel/www.accel.ru/electr/microproc/laba1/pagestruct/content.php): failed to open stream: No such file or directory in /home/accel/www.accel.ru/electr/microproc/laba1/index.php on line 20

Warning: include(): Failed opening '/home/accel/www.accel.ru/electr/microproc/laba1/pagestruct/content.php' for inclusion (include_path='.:') in /home/accel/www.accel.ru/electr/microproc/laba1/index.php on line 20

Лабораторная работа №1

1. СРЕДСТВА РАЗРАБОТКИ ПРИЛОЖЕНИЙ НА ОСНОВЕ МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА MCS51


Цель работы: изучение базовой архитектуры микроконтроллеров семейства MCS51; освоение работы программного симулятора микроконтроллера 8ХС51.

1.1. БАЗОВАЯ АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА MCS51

1.1.1. Структурная схема микроконтроллера

В состав микроконтроллера (МК), имеющего гарвардскую архитектуру, структурная схема которого изображена на рис. 1.1, входят: 8-разрядный процессор, управляющее ПЗУ, резидентная память данных, 4 порта ввода-вывода по 8 линий каждый, 4 тестируемых входа, канал последовательного ввода-вывода, 2 таймера/счетчика и приоритетная двухуровневая система прерываний с 5 источниками запросов. Архитектура МК предусматривает расширение управляющей памяти и памяти данных до 64 Кбайт каждой.

рис1.1

Рис. 1.1. Структурная схема
микроконтроллера MCS51

Для сокращения количества выводов на корпусе МК большинство логических линий совмещаются. Так, при обращении к внешней памяти порт Р0 выполняет роль совмещенной шины адреса/данных, а порт Р2 – старшей части адреса. Все выводы порта Р3 исполняют роль линий управления и специального ввода-вывода.

8-разрядное АЛУ может выполнять арифметические операции сложения, вычитания, умножения и деления; логические операции, операции циклического сдвига, сброса, установки и инвертирования. АЛУ содержит регистр аккумулятора А и регистр-расширитель аккумулятора В, а также программно недоступные, предназначенные для временного хранения операндов регистры ТMР1 и ТMР2, схему десятичной коррекции DAA и схему формирования признаков в регистре слова состояния программы PSW.

Одной из важных особенностей АЛУ является его возможность выполнять операции с битами. Отдельные программно доступные биты могут быть установлены, сброшены, инвертированы, переданы, проверены и использованы в логических операциях. Для управления объектами часто применяются алгоритмы, содержащие операции над входными и выходными логическими значениями (истина/ложь), и поэтому можно говорить, что МК имеет булевый процессор.

Таким образом, АЛУ может выполнять операции с различными данными: логическими, 4-х битовыми, байтовыми и адресными. В АЛУ выполняется 51 различная операция пересылки или преобразования этих данных. Так как используется 11 режимов адресации (7 для данных и 4 для адресов), то путем комбинирования операций с режимами адресаций базовое число команд расширяется до 255 при однобайтовом коде операции.

Резидентная память программ (РПП) и резидентная память данных (РПД), размещенные на кристалле, физически и логически разделены (гарвардская архитектура), имеют различные механизмы адресации и работают под управлением различных сигналов. Память программ (ROM или EEPROM) емкостью 4 Кбайт имеет 16-разрядную шину адреса, которая обеспечивает доступ к ячейкам памяти из счетчика команд PC или регистра указателя данных DPTR. Резидентная память данных (RAM) адресуется одним байтом и имеет емкость 128 байт. Память программ и память данных могут быть расширены каждая до 64 Кбайт с помощью внешних микросхем памяти.

рис1.2

Рис. 1.2. Формат слова состояния
программы PSW

При выполнении многих операций в АЛУ формируются признаки, которые сохраняются в регистре слова состояния программы PSW, изображенном на рис.1.2. Наряду с флагами переноса СY, дополнительного переноса АС, паритета Р, имеются флаг переполнения, устанавливающийся при выполнении арифметических операций, и флаг F0, специфицируемый пользователем. Там же двумя разрядами RS0 и RS1 задается рабочий банк регистров, один из четырех банков 8-разрядных регистров, состоящих из R0...R7. Они выполняют общецелевые функции промежуточного хранения данных. Использование банков регистров позволяет существенно уменьшить длительность переключения контекстов задач, выполняемых процессором в системах реального времени. Флаг переполнения важен при операциях умножения и деления, а также для операций с целыми числами со знаком при потере значимости их результата.

Для адресации данных используются регистры-указатели. 8-разрядный указатель стека SP может адресовать любую область РПД и его содержимое инкрементируется до загрузки в стек данных. Двухбайтовый указатель данных DPTR предназначен для фиксации адреса в операциях с данными во внешней памяти данных. Он используется и как 16-разрядный регистр, и как два независимых 8-разрядных регистра DPH и DPL. Также в качестве указателей могут быть применены регистры общего назначения R0 и R1.

На основе регистровых пар ТН0, ТL0 и TH1, TL1 работают два независимых программно управляемых 16-разрядных таймера/счетчика событий. Буфер последовательного порта состоит из регистра буфера приемника RSBUF и регистра буфера передатчика TSBUF. Загрузка байта в буфер передатчика немедленно вызывает начало процесса передачи через последовательный порт. При приеме информации данные поступают в приемник последовательного порта. Кроме того, МК имеет регистры специальных функций, предназначенные для задания режимов работы и управления внутренними устройствами прерывания IP, IE; таймера/счетчика TMOD, TCON; приемопередатчика последовательного порта SCON и управления электропитанием PCON.

1.1.2. Порты ввода-вывода

Все четыре порта микроконтроллера предназначены для побайтного ввода и вывода информации. Каждый порт содержит управляемые регистр-защелку, входной буфер и выходной драйвер. Выходные драйверы портов Р0 и Р2, а также буфер порта Р0 используются при обращении к внешней памяти программ и данных.

рис1.3

Рис. 1.3. Альтернативные функции порта Р3

При этом через Р0 в режиме мультиплексирования вначале выводится младший байт адреса внешней памяти, а затем выдается или принимается байт данных. Через Р2 выводится старший байт адреса. Все выводы порта Р3 могут быть использованы для реализации альтернативных функций, указанных на рис. 1.3. Альтернативные функции выполняются при записи "1" в соответствующие разряды регистра-защелки Р3.0...Р3.7.

Порт Р0 является двунаправленным, а порты Р1...Р3 – квазидвунаправленными. Каждая линия портов может быть использована независимо для ввода и вывода информации. Для ввода в соответствующий разряд регистра-защелки должна быть записана "1", которая закрывает выходной драйвер. При сбросе контроллера в регистры-защелки всех портов автоматически записываются "1", тем самым настраивая его на режим ввода, а порт Р3 – на выполнение альтернативных функций.

1.1.3. Устройство синхронизации и управления

Кварцевый резонатор, подключаемый к выводам Х1, Х2 микроконтроллера, задает частоту внутреннего генератора, который формирует сигналы синхронизации. Устройство управления на основе сигналов синхронизации формирует машинный цикл длительностью 12 периодов резонатора или 6 состояний S1...S6, состоящими из двух фаз Р1 и Р2. В фазе Р1, как правило, выполняются операции в АЛУ, а в фазе Р2 осуществляется межрегистровая передача данных. Весь машинный цикл состоит из 12 фаз, начиная с фазы S1P1 и кончая фазой S6P2, как показано на рис. 1.4. Большинство команд выполняется за один машинный цикл. Некоторые команды, оперирующие с двухбайтовыми словами или связанные с обращением к внешней памяти, выполняются за два машинных цикла. Только команды умножения и деления требуют четыре машинных цикла.

При обращении к внешней памяти программ используется управляющий сигнал PSEN’, который выполняет функцию строб-сигнала чтения. Доступ к внешней памяти данных обеспечивается управляющими сигналами RD’, WR’, которые формируются в линиях Р3.7 и Р3.6 при выполнении портом Р3 альтернативных функций. При обращении к программе используется 16-разрядный адрес. Доступ к данным возможен как с использованием 16-разрядного адреса в команде MOVX A,@DPTR, так и 8-разрядного – в команде MOVX A,@Ri. В обоих случаях старший байт 16-разрядного адреса фиксируется в регистре-защелке порта Р2.

рис1.4

Рис. 1.4. Тайминги операций с обращением к внешней
памяти без команды MOVX (а) и с командой MOVX (б):
1 – INSTR IN; 2 – PCL OUT; 3 – ADDR OUT; 4 – DATA IN

Через порт Р0 в режиме мультиплексирования осуществляется выдача младшего байта адреса PCL OUT при обращении к памяти программ или ADRR OUT при обращении к памяти данных и передача байта инструкции INSTR IN или данных DATA IN, соответственно. Сигнал ALE предназначен для записи адреса во внешний регистр. В цикле записи выводимый байт данных появляется на выводах порта Р0 перед появлением сигнала WR’. В цикле чтения байт данных принимается в порт Р0 по фронту стробирующего сигнала RD’.

Доступ к внешней памяти программ возможен только в случае, когда на вход ЕА’ подается активный сигнал или содержимое счетчика PC превышает значение 0FFFH. Наличие сигнала EA’ необходимо для обеспечения доступа к младшим 4К адресам адресного пространства при использовании микроконтроллера MCS31, который отличается только отсутствием резидентной памяти программ.

Диаграммы на рис. 1.4 иллюстрируют процесс генерации управляющих сигналов ALE и PSEN при обращении к внешней памяти. Основное назначение сигнала ALE – обеспечить временное согласование передачи из порта Р0 во внешний регистр младшего байта адреса в цикле чтения программы. За один цикл сигнал ALE генерируется дважды. Если 2-х байтовая инструкция, то в одном цикле осуществляется выборка всей инструкции, если 1-байтовая, то происходит выборка следующей, но она игнорируется. В любом случае исполнение инструкции будет завершено в конце машинного цикла S6P2. Доступ к памяти данных возможен только тогда, когда нет сигнала ALE. Поэтому при выполнении инструкции MOVX первый сигнал во втором машинном цикле блокируется.

При обращении к резидентной памяти программ сигнал PSEN’ не генерируется, а при обращении к внешней памяти программ он выполняет функцию строб-сигнала чтения.

1.1.4. Таймеры/счетчики

Два программируемых 16-разрядных таймера/счетчика могут использоваться в качестве таймеров или счетчиков внешних событий. При работе в качестве таймера содержимое его регистра инкрементируется в каждом машинном цикле. При работе в качестве счетчика инкрементирование происходит под воздействием перехода уровня сигнала из "1" в "0" на входе счетчика, опрос которого выполняется также каждый машинный цикл. Новое значение счетчика устанавливается в следующем цикле после обнаружения перехода уровня сигнала. Поэтому максимальная скорость опроса составляет 1/24 частоты резонатора, а на длительность периода входных сигналов ограничений сверху нет.

Для управления режимами работы таймеров/счетчиков используются два регистра специальных функций TMOD и TCON, задающих 4 режима работы:

Режим 0. В этом режиме используется 13-разрядный регистр, чтобы обеспечить совместимость с предыдущим микроконтроллером. Он состоит из 8-разрядного регистра ТНх и 5 разрядов TLx, при этом старшие 3 разряда игнорируются. При переполнении 13-разрядного регистра, т.е. при переключении всех разрядов из "1" в "0" формируется сигнал прерывания TFx.

Режим 1. То же, что и режим 0, но с 16-разрядным регистром.

Режим 2. Конфигурируется 8-разрядный таймер на базе TLx, который автоматически перезагружается содержимым регистра THx. При переполнении TLx устанавливается флаг TFx, а регистр перезагружается программируемым значением старшего регистра.

Режим 2. В данном режиме работают самостоятельно два 8-разрядных таймера на базе регистров TL0 и TH0. Первый таймер использует флаг прерывания TF0, а второй - TF1. Этот режим может быть использован, когда требуется три таймера/счетчика. При этом таймер 1 не сможет использовать свой флаг прерывания.

1.1.5. Последовательный интерфейс

Имеющийся в микроконтроллере асинхронный приемопередатчик (УАПП) осуществляет прием и передачу данных, представленных последовательным кодом (младшими битами вперед), в дуплексном режиме обмена. В состав УАПП входят принимающий и передающий сдвиговые регистры, а также буферные регистры приема RSBUF и передачи TSBUF. Запись байта в буфер приводит к автоматической перезаписи байта в сдвиговый регистр передатчика и инициирует начало передачи. Наличие буферного регистра приемника позволяет совместить операцию чтения ранее принятого байта с приемом очередного байта. Если к окончанию приема байта предыдущий не был считан, то он будет потерян.

Последовательный порт может работать в четырех режимах:

Режим 0. Информация передается и принимается побайтно через внешний вывод входа приемника RXD. Через внешний вывод выхода передатчика TXD выдаются синхроимпульсы, которые сопровождают каждый бит. Частота передачи бита информации равна 1/12 частоты резонатора.

Режим 1. В этом режиме передается через TXD или принимается через RXD 10-битный кадр, включающий в себя старт-бит ("0"), 8 бит данных и стоп-бит ("1"). Скорость передачи задается таймером.

Режим 2. Кадр передачи содержит 11 бит: старт-бит, 8 бит данных, программируемый девятый бит и стоп-бит. При передаче девятый бит для контроля может замещаться битом четности из PSW. Частота передачи задается либо 1/16, либо 1/32 частоты резонатора управляющим битом регистра специальных функций SMOD.

Режим 3. Совпадает с режимом 2 за исключением частоты передачи, которая задается таймером.

1.1.6. Система прерываний

Система прерываний, реализованная в микроконтроллере, показана на рис. 1.5. Внешние прерывания INT0’, INT1’ могут быть вызваны либо уровнем, либо переходом сигнала из "1" в "0" на соответствующих выводах микросхемы в зависимости от значений управляющих бит IT0, IT1 в регистре TCON. Внешние прерывания устанавливают флаги IE0, IE1 в регистре TCON, которые инициируют вызов соответствующей подпрограммы обслуживания прерывания. Сброс этих флагов выполняется аппаратно только в том случае, если прерывание было вызвано измененнием сигнала. Если прерывание вызвано уровнем входного сигнала, то сбросом флагов IE управляет соответствующая подпрограмма через воздействие на источник прерывания с целью снятия им запроса.

рис1.5

Рис. 1.5. Система прерываний МСS51.
Цифрами показан порядок опроса
при равенстве приоритетов

Система прерываний аппаратно формирует вызов соответствующей подпрограммы обслуживания, если она не заблокирована одним из следующих условий:

1) в данный момент обслуживается запрос прерываний равного или более высокого уровня приоритета;

2) текущий машинный цикл не последний при выполнении команды;

3) выполняется команда возврата из прерываний RETI или любая команда, связанная с обращением к регистрам IE, IP.

Флаги запросов прерывания от таймеров TF0 и TF1 сбрасываются автоматически при передаче управления подпрограмме обслуживания. Флаги запросов прерывания RI и TI устанавливаются блоком управления УАПП аппаратно, но сбрасываются программно.

Прерывания могут быть вызваны или отменены программой, так как все перечисленные флаги программно доступны и могут устанавливаться и сбрасываться из программы. Для управления режимом прерывания и уровнями приоритета (всего их два – высший и низший) предназначены два регистра специальных функций IE и IP соответственно. Флаги прерываний опрашиваются в момент S5P2 каждого машинного цикла. Ранжирование прерываний по уровню приоритета выполняется в течение следующего машинного цикла.

1.1.7. Режимы работы

Режим холостого хода устанавливается соответствующим битом в регистре управления мощностью PCON. При этом продолжает работать внутренний генератор синхроимпульсов, все регистры сохраняют свое значение, на выводах портов удерживаются уровни напряжения, установленные до холостого режима. Обращений к внешним устройствам памяти нет.

Выход из режима холостого хода происходит по сигналу сброса RST или по прерыванию. После завершения программы обслуживания будет исполнена команда, которая следует за командой установления режима.

Способ установки режима пониженного энергопотребления тот же, в результате которого прекращает работу генератор синхроимпульсов, содержимое регистров сохраняется, а на выводах портов удерживаются значения, соответствующие содержимому их буферных регистров. При этом электропитание осуществляется через вывод RST/VPD, а основное питание может быть выключено. Выход из режима пониженного энергопотребления возможен только по сигналу сброса RST.

1.2. ПРОГРАММНО-ЛОГИЧЕСКАЯ МОДЕЛЬ МК MCS51

(Руководство пользователя)

1.2.1. Запуск программы

Для запуска программы необходимо набрать команду E8031. В режиме программно-логической модели при запуске производится автоматическая очистка памяти и контрольных точек.

Предусмотрена возможность автоматической загрузки файла программы пользователя. Для этого имя файла должно быть указано в командной строке, например:

E8031 EXAMPLE.HEX.

1.2.2. Основное меню программы

Основное меню программы содержит следующие команды:

• rAm – редактирование содержимого памяти данных.

• Ireg – редактирование содержимого внутренней памяти данных и регистров МК.

• Step – выполнение текущей команды программы (шаг).

• Over – выполнение процедуры/шага.

• Go – запуск программы с текущего или указанного адреса.

• Nstep – выполнение N шагов программы.

• Jump – установка нового значения PC.

• Reset – сброс МК, аналогично аппаратному сбросу по входу Reset.

• Trace – просмотр результатов трассировки выполнения программы пользователя.

• Disk – файловые операции: чтение и запись файлов программы пользователя в загрузочном формате.

• Mode – выбор конфигурации системы: программно-логическая модель, аппаратная эмуляция МК, карта памяти и др.

• Edit – редактирование и компиляция.

• rOm – редактирование содержимого памяти программ.

Выбор команды меню выполняется с помощью клавиш управления курсором: "стрелка влево", "стрелка вправо". Запуск команды – клавишей "ENTER". Клавиша "ESC" позволяет выйти из любого меню в предыдущее и служит также для отмены любого выбранного режима (см. ниже). Нажатие этой клавиши в основном меню вызывает подменю вертикального типа:

• "Конец работы" – подтверждение завершения работы;

• "DOS Shell" – временный выход в DOS, программа остается в памяти, возврат по команде EXIT.

Выбор команды и ее инициирование производятся клавишами стрелок и Enter.

Выбираемая команда меню индицируется цветом фона и сопровождается подсказкой в 24 строке экрана. За текстом подсказки в скобках указан альтернативный способ вызова данной команды посредством комбинации клавиш Alt и буквы латинского алфавита, которая выделена в команде как прописная. Например, для перехода к просмотру и редактированию регистров специальных функций из любого другого режима можно не выходить в меню, а нажать комбинацию клавиш Alt-S. Такой способ выбора команды повышает удобство и скорость работы с программой.

Предусмотрен ввод контрольной точки останова программы пользователя по заданному адресу комбинацией клавиш Ctrl-F8, а также клавишей F9 автоматическое выполнение цикла: редактор текста – ассемблер – редактор связей – загрузка файла

1.2.3. Рабочие окна, доступ к отображаемой информации

Существуют два режима отображения программы пользователя и внутренних ресурсов МК: режим дизассемблера и режим листинга. Режим листинга включается автоматически после загрузки файла типа .LST. В этом случае возможно переключение между режимами клавишей F6, когда управление передано основному меню.

На экране постоянно активны два окна. Слева в окне "Программа" отображается программа пользователя в дисассемблированном виде или в виде листинга, в зависимости от режима. Справа открыто окно "Внутренние ресурсы МК" (в режиме дизассемблера) или окно "Переменные" (в режиме листинга). Кроме того, в правой части экрана могут отображаться окна: "Память программ", "Память данных", "Трасса программы". В режиме дизассемблера окно, к которому было последнее обращение, остается на экране.

Доступ к окнам осуществляется несколькими способами:

• нажатие на клавишу Tab инициирует переход к окну "Программа" для просмотра и редактирования программы в дисассемблированном виде; при повторном нажатии происходит переход к правому окну и т.д.;

• комбинация клавиш Alt-1 – другой способ доступа к окну "Программа";

• при нажатии комбинации клавиш Alt-2 происходит переход к правому окну, где отображается информация одного из четырех перечисленных типов ресурсов;

• активизация одной из команд меню rOm (память программ), rAm (память данных), Ireg (внутренние ресурсы МК, переменные), Trace (трасса программы) вызывает формирование информации в правом окне и переход к нему для просмотра и редактирования.

Программа обеспечивает прямое экранное редактирование отображаемых ресурсов. Правила отображения и редактирования изменяемой информации зависят от типа представленной информации.

1. При редактировании шестнадцатеричных данных в таблице ввод числа начинается нажатием любой цифровой (для шестнадцатеричной системы счисления) клавиши. Старое число затирается. Если новое число имеет одну значащую цифру, то завершить ввод можно клавишей Enter или любой клавишей перемещения курсора. Ввод последней значащей цифры интерпретируется как завершение ввода и переход к следующей ячейке.

2. Редактирование данных в диалоговом окне (например, ввод адреса или диапазона по запросу) осуществляется аналогично предыдущему пункту, за исключением:

• возможно перемещение курсора влево и вправо по редактируемому числу;

• цифры вводятся в режиме замены символа;

• ввод завершается нажатием клавиши Enter или перемещения курсора (кроме "влево" и "вправо"), ESC – отмена.

3. Редактирование произвольной текстовой строки (например, ввод имени файла) имеет следующие особенности:

• если первая нажимаемая клавиша соответствует текстовому символу, то старая строка затирается;

• для редактирования предлагаемой строки первой нажатой клавишей должна быть одна из клавиш: "влево", "вправо", "Home", "End";

• после первой нажатой клавиши строка ввода меняет цвет;

• символы вводятся в режиме вставки;

• ввод завершается нажатием клавиши Enter или перемещением курсора (кроме "влево", "вправо", "Home", "End"), ESC – отмена.

1.2.4. Работа с дисассемблированной программой

В окне "дизассемблер" отображаются адреса и дисассемблированные инструкции программы, загруженные в память. Адреса переходов представлены в шестнадцатеричном виде. В окне просмотра помещается 19 инструкций. Просмотр и редактирование (если окно активизировано) осуществляется по принципу "ролика", способ выбора и изменения содержимого ячеек памяти тот же, что и при редактировании кодов. Для корректного дисассемблирования памяти программ необходимо правильно задать начальный адрес просмотра, запрашиваемый управляющей программой. Адрес должен соответствовать первому байту (коду операции) инструкции. При редактировании памяти данный адрес будет ограничивать область доступа к ячейкам со стороны младших адресов. Другими словами, просмотр и редактирование возможны только в направлении возрастания адресов относительно начального адреса. Следует учитывать, что области константных массивов в памяти программ дизассемблером не распознаются. Для правильного отображения конкретного участка программы нужно в качестве точки начала дисассемблирования задавать адрес первого оператора просматриваемой процедуры.

В процессе работы (просмотр программы, отображение результатов выполнения инструкций микропроцессора) дизассемблер запоминает адреса памяти, соответствующие первым байтам инструкций. Эта информация используется при просмотре рабочего участка программы как в направлении увеличения, так и уменьшения адресов. Если возникает ситуация, когда дизассемблер не находит нужного адреса в "предыстории", то пользователю выдается запрос, с какого адреса проводить дисассемблирование. Если адрес введен ошибочно, например, указывает на второй байт инструкции, то скорректировать точку входа можно вручную, нажав клавишу F2 и введя правильный адрес.

Программа имеет также встроенную функцию ассемблирования. Это позволяет редактировать содержимое памяти программ, пользуясь мнемониками языка Ассемблер. В отличие от транслятора с языка данная программа не поддерживает мнемонических идентификаторов адресов (меток) и данных (за исключением режима символической отладки). Ввод этих величин производится в шестнадцатеричных кодах. При вводе строки на языке ассемблера обеспечивается ее редактирование. Ввод завершается клавишами "стрелка вверх", "стрелка вниз" и Enter. Если строка введена правильно, то модифицируется соответствующее количество байтов памяти и результат отображается на экране, в противном случае содержимое памяти не изменяется. Сообщений об ошибках не выдается.

В режиме редактирования дисассемблированной программы можно вызывать дополнительные сервисные функции, часть которых описана в пп. 1.2.6 и 1.2.7. Информация о доступных функциях выведена в 23 и 24 строках экрана. В отличие от режима редактирования памяти в кодах в данном режиме имеется возможность выполнения инструкций программы без выхода в меню:

F7 – выполнение шага (аналогично команде меню Step);

F8 – выполнение процедуры/шага (аналогично команде меню Over);

Ctrl-F9 – прогон программы (аналогично команде меню Go);

F4 – прогон программы до курсора;

Ctrl-F4 – изменение состояния счетчика команд, значение РС устанавливается равным адресу инструкции, на которую указывает курсор (аналогично команде меню "Jump").

Режим прогона до курсора имеет особенности, обусловленные механизмом управления кристаллом МК. Этот режим реализован при помощи установки контрольной точки по адресу, на котором находится курсор. После выполнения прогона программы и остановки контрольная точка автоматически сбрасывается. Если происходит переход на новый адрес, на экране будет отображен новый участок программы.

Цветом выделена инструкция, которая будет выполняться следующей. В режиме программно-логической модели, если задана модель памяти (см. п. Mode), то адрес выделенной инструкции может не совпадать со значением РС в окне регистров. Это связано с отображением старших адресов пространства памяти программ на физические адреса, если объем памяти в модели ограничен.

1.2.5. Работа с листингом программы

Данный режим доступен только после загрузки файла листинга. Основные рабочие окна в этом случае:

- "Программа", отображается текст листинга, редактирование текста не выполняется;

- "Переменные", отображается набор заданных пользователем программно доступных ресурсов МК.

При работе с листингом доступны все сервисные функции, определенные для работы с дизассемблером.

1.2.6. RAM – редактирование памяти данных

В этом режиме осуществляется прямой доступ и экранное постраничное редактирование внешней памяти данных МК. В режиме модели память данных представлена массивом размером 64К. При входе в данный режим на экране отображается страница памяти (256 ячеек) в шестнадцатеричных кодах; курсор указывает на ячейку с адресом, который просматривался при последнем входе в данный режим. Для выбора редактируемой ячейки и просмотра памяти используются клавиши: стрелки вверх, вниз, влево, вправо; Home, End, PgUp, PgDn. Для редактирования выбранной ячейки следует нажать клавишу любого шестнадцатеричного символа (0…F). Ввод однозначного числа завершается нажатием любой из клавиш редактирования или Enter, при нажатии клавиши второго символа ввод числа считается завершенным и курсор автоматически переходит к ячейке со следующим адресом.

При редактировании памяти данных можно использовать дополнительные сервисные возможности:

- переход к произвольному адресу (F2);

- заполнение кодом (константой) ячеек памяти в заданном диапазоне адресов (F3);

- чтение/запись файлов данных (F8);

- поиск заданной последовательности кодов (F10).

Имена и назначение соответствующих функциональных клавиш в процессе работы индицируются в окне меню.

Для заполнения константным кодом фрагмента памяти (F3) требуется в появившемся на экране окне параметров подтвердить параметры, задаваемые по умолчанию (код = 0, начальный адрес = 0, конечный адрес = FFFF), или установить новые. Выбор изменяемого параметра осуществляется клавишами "стрелка вверх" и "стрелка вниз", редактирование – клавишами шестнадцатеричных символов, а также "стрелка влево", "стрелка вправо", Backspace. Фиксация нового параметра происходит при нажатии клавиши Enter или переходе к следующему параметру. Для выполнения операции заполнения кодом необходимо установить курсор на поле "OK" и нажать Enter, для отмены операции – нажать ESC.

При нажатии клавиши F8 активизируется доступ к файловой системе MS DOS. Работа с файлами в режиме Disk описана в п. 1.2.13. Отличие заключается в том, что в данном случае чтение и запись файлов выполняются с памятью данных системы, а при работе в режиме Disk – с памятью программ.

1.2.7. ROM – редактирование памяти программ

В этом режиме осуществляется прямой доступ и экранное редактирование памяти программ МК. В режиме модели память программ представлена массивом размером 64К.

Просмотр и редактирование памяти программ в кодах производится аналогично памяти данных. При редактировании памяти программ имеются дополнительные сервисные возможности:

• переход к произвольному адресу (F2);

• заполнение кодом (константой) ячеек памяти в заданном диапазоне адресов (F3);

• установка/сброс контрольных точек по редактируемым адресам (Ins);

• очистка (сброс) контрольных точек в диапазоне (F5);

• поиск заданной последовательности кодов (F10);

• установка/сброс контрольной точки по заданному адресу (Ctrl-F8).

Имена и назначение функциональных клавиш в процессе работы индицируются в окне меню.

Выполнение функций перехода к произвольному адресу (F2) и заполнения кодом (F3) аналогично режиму работы с памятью данных.

Если включен режим символической отладки, то при выполнении функции перехода (F2) вместо адреса можно вводить имя метки.

Установка/сброс контрольных точек останова выполнения программы производится клавишей Ins. При этом для правильной работы системы контрольная точка должна устанавливаться на первом байте инструкции. Установленная контрольная точка (КТ) отображается на экране заштрихованным треугольником около кода инструкции. Если КТ уже установлена по адресу, на который указывает курсор, то нажатие клавиши Ins приведет к ее удалению. При работе в режиме модели установка КТ допускается во всем диапазоне адресов памяти программ.

С помощью клавиши F5 можно удалять КТ в заданном диапазоне адресов памяти программ. Задание границ диапазона производится аналогично режиму заполнения константным кодом.

Для выполнения поиска фрагмента памяти с кодами, совпадающими с заданной последовательностью (F10), необходимо в окне "Модель для поиска" ввести кодовую последовательность в шестнадцатеричных кодах. При этом каждая пара символов считается значением очередного байта модели поиска. Допускаются пробелы в любом количестве. Если число символов нечетное, то последний символ считается младшим значащим в байте. Ввод модели поиска заканчивается нажатием Enter. Поиск начинается с текущего адреса просмотра памяти + 1, конечный адрес равен FFFF. Поиск осуществляется до первого выполнения заданного условия.

Если включен режим символической отладки, поиск может осуществляться по имени метки. Для этого вместо последовательности шестнадцатеричных кодов нужно набрать имя метки. Если указанное имя найдено в таблице символических имен, то курсор переместится на соответствующий адрес. Если заданное имя состоит только из символов, отображающих шестнадцатеричные числа, то после поиска соответствия имени осуществляется поиск последовательности кодов.

Установка/сброс контрольной точки по заданному адресу инициируется комбинацией клавиш Ctrl-F8. В появившемся окне отображается дисассемблированная инструкция по адресу, на котором последний раз устанавливалась контрольная точка. Изменить адрес можно, набрав его в шестнадцатеричном виде и нажав Enter; установить/сбросить контрольную точку – клавишей Ins.

1.2.8. Ireg – редактирование внутренних ресурсов МК

В данном режиме обеспечивается редактирование внутренней памяти данных МК и всех программно доступных регистров, а также возможность редактирования содержимого счетчика команд (PC), тем самым происходит принудительный переход программы на новый адрес. Правила выбора ячейки памяти или регистра и их редактирования аналогичны описанным выше для внешней памяти программ и данных.

Слово состояния процессора отображено как в виде байта, так и побитно: в виде флажков CY,AC,F0,OV,P и выделенного цветом рабочего банка регистров. Редактирование слова состояния может осуществляться как в целом, так и побитно, отдельно каждый флаг. Изменение рабочего регистрового банка производится клавишей Ins. Флаг P непосредственно не редактируется, так как он отображает четность единичных битов аккумулятора.

Содержимое портов ввода/вывода также отображено в виде байтов и битов. В режиме модели выводится информация о состоянии внешних линий портов P0x, P1x, P2x, Р3х (модель внешней среды).

Регистры рабочего банка отображены дважды: как регистры (R0…R7) и как ячейки внутренней памяти данных (выделено цветом).

Под именем @R0 и @R1 отображается значение косвенно адресуемых ячеек внутренней памяти данных.

В центре экрана размещается окно с динамически изменяемой информацией (выделено цветом – светло-голубой на черном). В нем отображается значение рабочих операндов текущей инструкции МК. Если инструкция не имеет программно изменяемых операндов, то в окне ничего не отображается. Данное окно не доступно для редактирования.

Набор отображаемых регистров специальных функций меняется в зависимости от выбранного типа МК (см. команду Mode).

В режиме программно-логической модели в нижней части окна отображается текущая глубина стека и максимальное значение глубины, достигнутое при выполнении программы. Сброс показаний происходит при выполнении сброса процессора командой меню "Сброс".

Особенностью представления информации в данном режиме является отображение двоичного кода ячейки, на которую указывает курсор, в специальном окне в верхней части экрана. Кроме того, в этом окне указывается, входит ли данная ячейка в булевское (побитно адресуемое) пространство, а также имена битов регистров специальных функций. Для редактирования отдельных битов ячейки (регистра) необходимо нажать клавишу F2. При этом курсор перемещается в данное окно. Для возврата в основное окно нужно нажать любую из клавиш редактирования или ESC.

В режиме редактирования внутренних ресурсов есть возможность заполнения внутренней памяти константным кодом аналогично режимам работы с памятью программ или данных. Для этого так же, как и в тех режимах, используется клавиша F3.

Клавишами F4 и F5 вызывается режим сохранения или загрузки состояния МК. Под состоянием понимается значение всех программно доступных внутренних ресурсов МК. При нажатии на клавишу F4 программа запрашивает имя файла для сохранения текущего состояния МК (расширение имени файла – .S51). При вводе имени расширение указывать не обязательно. При нажатии на клавишу F5 отображаются файлы текущей директории с расширением .S51. Загрузка файла состояния производится аналогично режиму Disk.

При работе с листингом команда Ireg инициирует переход к окну "Переменные". Для доступа к окну "Внутренние ресурсы" нужно переключить режим на дизассемблер клавишей F6 в основном меню.

1.2.9. Работа с окном "Переменные"

Данное окно доступно только в режиме работы с листингом программы пользователя.

В верхней строке отображается значение рабочих операндов текущей инструкции МК аналогично окну "Внутренние ресурсы".

В последующих строках отображаются значения ячеек любых программно доступных ресурсов МК, заданных пользователем. Список отображаемых ресурсов хранится в файле E8031.WCH. Этот файл обновляется автоматически каждый раз по окончании работы с управляющей программой. Возможно сохранение в файле и загрузка с диска списка ресурсов для конкретной задачи. Для сохранения введенного списка надо нажать клавишу F2 и в окне запроса имени файла задать имя (расширение имени – .WCH). Для загрузки списка нужно нажать клавишу F3 и выбрать нужный файл в окне директории.

Задать список отображаемых ресурсов можно путем редактирования файла E8031.WCH в текстовом режиме или редактированием в окне "Переменные".

При вводе информации в список отображаемых ресурсов действуют следующие соглашения:

• все зарезервированные для выбранного типа МК имена регистров специальных функций и управляющих битов задаются в явном виде, например: АСС, В, PSW и т.д.;

• R0…R7 – значения регистров рабочего банка;

• @R0, @R1 – значения ячеек внутренней памяти данных, адресуемых регистрами R0 и R1 соответственно;

• двузначным шестнадцатеричным числом задаются внутренние ресурсы МК, доступные прямой (direct) адресацией, это ячейки ОЗУ в диапазоне 0…127 и регистры специальных функций;

• RAM[nn] – значения ячеек внутренней памяти данных МК, где nn – шестнадцатеричный адрес ячейки, например, RAM[05] – это ячейка с адресом 05, она же – регистр R5 нулевого банка;

• XRAM[nn] – значения ячеек внешней памяти данных МК, где nn – шестнадцатеричный адрес ячейки, например, XRAM[05] – это ячейка внешнего ОЗУ данных с адресом 05;

• BIT[nn] – значения прямо адресуемых битов из битового пространства МК;

• Т0 – шестнадцатиразрядное значение счетчика/таймера 0;

• Т1 – шестнадцатиразрядное значение счетчика/таймера 1;

• Т2 – шестнадцатиразрядное значение счетчика/таймера 2 (только для МК 8Х52 и выше);

• DPTR – шестнадцатиразрядное значение регистра DPTR.

Через запятую после имени переменной можно указать формат отображения данных:

• B – отображать в двоичном формате (только байты), например, "P1,B" означает, что отображается значение порта Р1 в двоичном виде;

• D – отображать в десятичном формате;

• W – отображать шестнадцатиразрядное слово, например, "XRAM[120],W" означает, что нужно отображать значение байтов внешней памяти данных по адресам 120h,121h в формате шестнадцатиразрядного слова (по адресу 120h младший байт).

Для всех указанных переменных доступно их редактирование при переходе в окно "Переменные".

Добавление переменной в список производится нажатием клавиши Ins. Далее в окне запроса указывается имя и формат, как показано выше.

Удаление переменной из списка производится клавишей Del.

Для изменения имени переменной надо нажать клавишу Enter.

1.2.10. Step, Over, Go, Nstep, Jump – выполнение программы

Перечисленные команды служат для управления выполнением программы пользователя. Результаты выполнения каждой команды отображаются на экране в зависимости от установленной конфигурации окон.

При активизации команды Step выполняется текущая инструкция программы пользователя.

По команде Nstep выполняется заданное количество инструкций (не более 65534). Инструкции выполняются по шагам с соответствующим отображением состояний после каждого шага.

Соответственно, при активизации данной команды появляется окно с запросом способа выполнения и количества шагов:

По шагам: FFFF.

Прогон: FF00.

Команда выполняется нажатием клавиши Enter. Количество инструкций можно редактировать, способ выполнения зависит от того, в какой позиции находился курсор при запуске команды. Выполнение инструкций по команде Nstep может быть прекращено при нажатии клавиши Enter.

Команда Over используется для выполнения процедуры, то есть выполняется прогон программы до следующей инструкции. Здесь использован механизм контрольных точек останова, поэтому если программа "зависла" где-то в процедуре, надо остановить прогон клавишей Enter. При работе с симулятором, если произошло переполнение стека, выдается сообщение об ошибке. Для всех инструкций, отличающихся от Call, выполнение команды Over аналогично команде Step.

Выбор команды Go активизирует запуск программы в режиме интерпретации инструкций (модель). Выполнение команды сопровождается запросом адреса запуска программы (по умолчанию – текущий адрес PC). Останов выполнения программы происходит нажатием клавиши Enter или при выполнении инструкции, отмеченной контрольной точкой (см. описание редактирования памяти программ).

Если включен режим "Автозапуск" (см. команду Mode), то после останова по контрольной точке и обновления информации на экране происходит автоматический запуск эмулятора.

Если параметр "Пропуск КТ" (см. команду Mode) не равен 0, то обновление информации на экране и останов (если Автозапуск = OFF) производятся только после заданного количества проходов через контрольную точку.

Значение счетчика команд PC может быть изменено непосредственно командой Jump.

Если включен режим символической отладки, то при выполнении команд Go и Jump вместо адреса можно вводить имя метки.

При работе в режиме модели в процессе выполнения команд Go, Over, Nstep возможна имитация сигналов на внешних линиях портов МК, а также имитация приема слова по линии последовательной связи RХD. При этом на экране отображаются мнемонические имена линий портов, логические состояния моделирования внешних воздействий и внутренних регистров портов, а также имена функциональных клавиш (F1…F5), которые позволяют изменять состояние внешнего воздействия на входах, имеющих альтернативные функции.

Для изменения состояния регистра порта или внешнего сигнала нужно подогнать курсор к нужному байту (биту) и ввести новое значение в шестнадцатеричном виде. Ввод завершается нажатием любой клавиши перемещения курсора. Обновление выводимой на экран информации проводится двумя способами: после каждой выполняемой инструкции МК или только после перемещения курсора. Изменение режима отображения производится клавишей F6. Следует учитывать, что логическое состояние внешнего воздействия не эквивалентно логическому состоянию регистра порта, и желаемый результат будет достигнут только при корректном программировании регистров портов и других регистров специальных функций.

Имитация приема слова по последовательной линии связи осуществляется упрощенно: при нажатии на клавишу F5 запрашивается код принятого слова, который заносится в регистр SBUF, а затем автоматически устанавливается внутренний флаг запроса прерывания.

Как в режиме модели МК, так и при работе с эмулятором обеспечивается подсчет машинных циклов, требуемых для выполнения инструкций программы пользователя. Состояние счетчика циклов/тактов и величина интервала в микросекундах (в зависимости от установленной частоты) индицируется в 22 строке экрана (выделено цветом). Подсчет проводится как в пошаговом режиме, так и в режиме прогона. Индикация состояния счетчика происходит при каждом останове выполнения программы. Счетчик обнуляется при выполнении команд меню Jump, Go (с адреса, отличного от текущего) и Reset.

При работе в основном меню можно устанавливать/сбрасывать контрольные точки останова (клавиши Ctrl-F8) так же, как и при работе с памятью программ (см. выше).

1.2.11. Reset – сброс МК

В данном режиме выполняется установка регистров специальных функций и счетчика команд в исходное состояние в соответствии с функционированием кристалла прототипа. Все регистры обнуляются за исключением: SP=7, P0=FF, P1=FF, P2=FF, P3=FF. При работе с эмулятором производится синхронизация схем управления и кристалла МК. Аппаратный сброс кристалла МК эмулятора возможен только программно по команде Reset.

1.2.12. Trace – просмотр результатов трассировки выполнения программы

В памяти трассы глубиной 2048 слова фиксируются адреса выполняемых команд. Память трассы организована в виде кольца, при переполнении запись осуществляется с нулевого адреса. Таким образом, в памяти трассы хранятся адреса последних 2047 выполненных команд. При просмотре производится дисассемблирование команд, расположенных по данным адресам, и отображение в виде "ролика". Последняя выполненная команда выделена цветом. "Прокрутка ролика" осуществляется обычными клавишами редактирования: стрелки вверх и вниз, PgUp, PgDn.

Очистить память трассы можно, нажав клавишу F3.

1.2.13. Disk – чтение/запись загружаемых файлов

В данном режиме проводится выбор рабочего диска/директории, чтение файла программы пользователя и запись программы в файл в загружаемом формате. Управляющая программа работает с файлами в форматах HEX (Intel) и BIN (двоичный формат, абсолютное отображение памяти) с соответствующим расширением имени файла. Формат HEX используется по умолчанию.

Возможна загрузка файла LST. В этом случае включается режим работы с листингом программы.

Выбор файла для чтения и переход в выше или нижележащую директорию производится клавишами редактирования и Enter.

Если курсор (выделение цветом) указывает на файл (имя напечатано строчными буквами), то считается, что данный файл должен быть загружен в память. Загрузка инициируется клавишей Enter. При ошибке операции доступа к файлу выдается сообщение об ошибке. Для продолжения работы нужно нажать любую клавишу.

Если курсор указывает на вышележащую (..) или нижележащую (имя напечатано прописными буквами) директорию, то нажатие клавиши Enter инициирует переход к данной директории.

Для изменения рабочего диска необходимо нажать клавишу D. В появившемся окне нужно ввести имя диска (директории) и нажать Enter.

Запись в файл программы из памяти программ производится по команде W. Для записи файла в формате BIN нужно ввести расширение имени файла BIN или ABS, по умолчанию HEX. После ввода имени файла последовательность действий аналогична операции чтения.

По команде T производится запись файла программы в дисассемблированном виде. Строки формируются в формате, аналогичном просмотру памяти программ в режиме дизассемблера.

1.2.14. Mode – выбор конфигурации системы

По данной команде производится установка одного из режимов:

• эмуляция МК К1816ВЕ31 (в лабораторной работе данный режим не задействован);

• программно-логическая модель;

а также дополнительные параметры:

• тип МК:

8x51 – МК из семейства 8051, 8031, 8751;

8xC51 – МК из семейства 80С51, 80С31, 87С51;

8xC652/4 – МК из семейства 83С652, 83С654, 87С652, 87С654 фирмы Philips;

8x52 – МК из семейства 8052, 8032, 8752;

8xC52 – МК из семейства 80С52, 80С32, 87С52;

8xC54/8 – МК из семейства 8xС54, 8xC58;

• частота – установка частоты резонатора, используется для подсчета временного интервала в микросекундах;

• статистика – включение/выключение системы анализа использованных в прикладной программе ресурсов МК. Используется только в режиме модели;

• автозапуск – включение/выключение автоматического запуска продолжения выполнения программы при останове по контрольной точке. Используется только при работе с эмулятором;

• пропуск КТ – параметр, задающий количество проходов через контрольную точку;

• карта памяти – установка карты памяти программ и данных.

Установка конфигурации производится при обращении в дополнительное меню, содержание которого меняется в зависимости от выбираемого режима. Для перехода в данное меню нужно нажать клавишу "стрелка вправо". Смена конфигурационных параметров осуществляется клавишей Enter или вводом значения в десятичном виде ("Частота"). Возврат в меню режима – по клавише "стрелка влево".

Программирование конфигурации выполняется после нажатия клавиши Enter в меню режима. При активизации режима программно-логической модели происходит выделение динамических массивов памяти для моделирования памяти программ и данных (64К + 64К). При переходе к режиму работы с эмулятором данные области памяти освобождаются.

При работе с программно-логической моделью в дополнительном меню задаются параметры "Модель памяти". Это величины моделируемой памяти программ и данных МК в килобайтах. Если заданный объем памяти меньше, чем объем адресного пространства МК, то при обращении к адресам, старше максимального в заданной модели, будет происходить чтение ячеек памяти из физически существующей области. Другими словами, при ограничении объема памяти старшие линии адреса игнорируются. Например, если задана модель памяти программ 1К, то при РС=400Н будет считываться значение ячейки по адресу 000. В окне дисассемблирования цветом выделяется следующая выполняемая команда в соответствии с моделью памяти.

Если включен режим "Статистика" (значение параметра "ON") при работе с моделью, то адреса всех ячеек внутренней памяти данных, состояние которых изменялось при выполнении прикладной программы, фиксируются. При отображении в окне "Внутренние ресурсы МК" эти ячейки выделяются цветом. Очистка статистической таблицы производится при выполнении команды Reset или при очистке счетчика машинных циклов.

Если включен режим "Автозапуск" (значение "ON") при работе с эмулятором, то в случае останова по контрольной точке обновляется информация на экране дисплея и производится автоматический запуск прикладной программы с текущего адреса.

Если в режиме "Пропуск КТ" параметр не равен нулю, то обновление информации на экране и останов происходят после заданного количества проходов через контрольную точку. Данный режим реализован программно, поэтому каждый проход через КТ сопровождается нарушением реального времени выполнения прикладной программы.

При активизации режима "Карта памяти" на экране распечатывается установленная в данный момент карта. Адресное пространство МК условно разбито на 16 сегментов по 4 Кбайт. Для каждого сегмента может быть уставлено 3 признака:

• память программ (ROM) – эмулятор/МПУ,

• память данных (RAM) – эмулятор/МПУ,

• память программ – существует (+) или нет (–).

В процессе работы процессор обращается к физическим блокам памяти программ и данных в соответствии с картой. Отображается информация на экране также с учетом карты. Если для сегмента установлен признак "память не существует", то при обращении к данному сегменту вырабатывается сигнал останова, аналогично контрольной точке; при этом на экран выдается сообщение: "Несуществующая область памяти".

1.2.15. Edit – редактирование и компиляция

Данная команда обеспечивает вызов внешних программных средств: редактора текста, кросс-ассемблера и редактора связей.

Рабочее окно разделено на два основных поля: "Команды" и "Опции". Выбор команды и установка опций производится клавишами стрелок и "табуляция".

В поле "Команды" можно активизировать следующие операции:

Edit – вызов редактора текста для редактирования рабочего файла;

List – вызов редактора текста для редактирования файла листинга;

Assemble - вызов кросс-ассемблера и обработка рабочего файла;

Link – вызов редактора связей;

Load – загрузка результата трансляции в программно-логическую модель;

Compile – автоматическое выполнение последовательности команд Assembler – Link – Load;

Make – автоматическое выполнение последовательности команд Edit – Assembler – Link – Load;

В поле "Опции" задаются следующие параметры.

Файл – имя рабочего файла: может содержать полный путь поиска; передается в качестве параметра при выполнении команд Edit и Assemble; используется при формировании имен входных файлов в командах Link, List, Load.

Редактор – имя файла редактора текста: может содержать полный путь поиска; при вызове в качестве параметра передается имя рабочего файла (в команде Edit) или имя рабочего файла с расширением .LST (в команде List).

Ассемблер – имя файла кросс-ассемблера: может содержать полный путь поиска; при вызове в качестве параметра передается имя рабочего файла (команда Assemble). Если используется кросс-ассемблер TASM.EXE фирмы Spech Tech. Inc., то автоматически вставляется ключ "-51" для вызова таблицы настройки.

Редактор связей – имя файла кросс-редактора связей: может содержать полный путь поиска; при вызове в качестве параметра передается имя рабочего файла с расширением .OBJ (команда Link). Не используется при работе с кросс-ассемблером TASM.EXE фирмы Spech Tech. Inc. При работе с линкером-релокатором RL51 фирмы Intel для формирования загружаемого файла в формате HEX автоматически вызывается программа OH.EXE.

OBJ файлы – список имен объектных файлов для кросс-редактора связей: может содержать полный путь поиска; имена файлов разделяются символами "," или ";" и могут упоминаться без расширения имени (по умолчанию .OBJ). Не используется при работе с кросс-ассемблером TASM.EXE фирмы Spech Tech. Inc.

Загрузка – указывается расширение имени файла, загружаемого при выполнении команды Load, необходимо для работы с символическим отладчиком.

Сохранение памяти при вызове программы, если включено ("ON"), то при вызове внешних программ на диске в текущей директории сохраняется содержимое массивов памяти, портов, контрольных точек, символических имен. Память, занятая этими массивами, освобождается для запуска внешней программы. При возврате в оболочку Е8031 (или М8751) содержимое массивов восстанавливается. Если значение опции "OFF", то при возврате в оболочку Е8031 (или М8751) массивы очищаются. Служебные файлы, используемые для сохранения информации, имеют расширение имени ".$$$".

Выбор имен файлов в поле "Опции" может производиться в режиме просмотра директории аналогично режиму "Диск". Для этого нужно установить курсор в режим редактирования требуемого параметра и нажать клавишу F3. В отображаемой директории автоматически устанавливается маска в соответствии с расширением имени файла, указанного в строке параметра.

Сообщения, генерируемые кpосс-ассемблеpом или редактором связей запоминаются в файле с именем Е8031.$$$. Последняя строка сообщений выводится на экран в окне Edit.

1.2.16. Символическая отладка

Под символической отладкой подразумевается возможность работать с именами меток, присвоенными пользователем в исходном тексте программы.

Программа поддерживает два способа ввода информации о символических именах, установленных в программе пользователя.

В первом случае имена меток извлекаются из файла листинга программы. Для включения режима символической отладки нужно загрузить файл с расширением .LST. При этом загружаются память (коды) и внутренняя таблица символических имен, а также текст листинга. Формат строки листинга должен быть следующий:

Номер_строки Адрес Байты_данных <Метка:> <Инструкция и т.д.>, где символами < > указаны необязательные поля.

Поддерживается работа с листингами, сформированными кросс-ассемблерами TASM фирмы Spech Technology Inc. и X8051 фирмы 2500AD.

Естественное ограничение такого способа загрузки – листинг должен содержать весь текст программы в абсолютных адресах.

Если при загрузке найдена хотя бы одна метка, то включается режим символической отладки. В этом случае при отображении дисассемблированных инструкций указывается метка, установленная на данном адресе, и в командах переходов метки вместо адресов. Если по данному адресу метка во внутренней таблице не найдена, то дизассемблер отображает абсолютные адреса.

Второй способ загрузки символической таблицы поддерживает отладку программы, скомпонованной с помощью редактора связей.

При работе с кросс-пакетом фирмы 2500 A.D. информация об именах меток извлекается из файла символических имен в формате ZAX . Для формирования файла символических имен при трансляции программы нужно выполнить следующие действия:

1) ввести в исходный текст программы директиву SYMBOLS ON;

2) при редактировании связей активизировать ключ Z, например, запустить программу LINK командой link -c NAME –z , где NAME.OBJ - объектный файл программы пользователя.

В результате будет сформирован файл символических имен с именем NAME.SYM.

При загрузке файла данных в форматах HEX или BIN производится поиск файла с тем же именем и расширением SYM; при наличии такого файла автоматически загружается таблица символических имен.

При работе с кросс-пакетом фирмы Intel (ASM51.EXE, RL51.EXE, OH.EXE) информация о символических именах формируется по другим правилам. Компоновщик RL51 выводит информацию о символических именах в файл протокола, имеющий расширение М51. Таблица символических имен загружается из этого файла. Для формирования загружаемого файла в формате HEX после релокатора RL51 вызывается программа OH. Формирование таблицы символических имен производится только в том случае, если в тексте на языке ассемблера введена директива $DEBUG.

Состояние режима индицируется сообщением в правом нижнем углу правого окна:

F3:[Sym On] или F3:[Sym Off].

Соответственно, можно включать и отключать режим символической отладки клавишей F3. Включение режима возможно только в том случае, если загружена таблица символических имен.

1.3. МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ

1.3.1. Предварительное задание

Выполните преобразование форматов чисел, заполнив пустые места в табл.1.2 и 1.3, воспользовавшись при необходимости табл.1.4.

табл2-4

1.3. 2. Задание и порядок выполнения работы

1. Изучите руководство пользователя «Программно-логическая модель МК MCS51».

2. Запустите программу Е8031 с автоматической загрузкой файла Lab1.hex (п. 1.2.1). С помощью команды Mode установите тип ЦПУ - 80хС51, частоту – 12 000 000 Гц.

Примечание. Автоматическая загрузка происходит, если сохранение памяти при вызове программ выключено (OFF) и задан режим «Модель 8051». (п. 1.2.15 и 1.2.14, соответственно). В ходе выполнения проекта он может содержать следующие файлы: *.asm, *.obj, *.hex, *.lst, *.sym, которые содержат, соответственно, исходный текст, ассемблированный код, загрузочный код, листинг программы и файл с символическими метками. В случае загрузки файла с расширением *.hex он дисассемблируется и отображается в симуляторе с помощью мнемоники.

3. Осуществите сброс симулятора и, используя окно «Дизассемблер», выполните программу по шагам в один проход, фиксируя в табл.1.5 изменения в памяти данных и аккумуляторе.

табл5
Указание. Информация для выполнения данного задания находится в пп. 1.2.4, 1.2.10 и 1.2.11

4. Сформулируйте результат выполнения программы, обратите внимание на количество выполненных машинных циклов и времени их выполнения.

5. В окне «Дизассемблер» замените часть программы, начинающейся с адреса 000F, на следующие инструкции:

CLR A
XCH A, 2BH
XCH A, 2CH
XCH A, 2DH
XCH A, 2EH
AJMP 000FH
Указание. Информация для выполнения данного задания находится в п. 1.2.4.

6. Повторите пп.3 и 4 порядка работы, установив предварительно программный счетчик PC командой Jump на начало программы. Сделайте вывод.

7. Загрузите файл Lab1.lst и в режиме листинга (п. 1.2.5, 1.2.9) в окне «Переменные» удалите, если необходимо, лишние и задайте наблюдаемые переменные, а затем выполните программу по шагам в один проход, отмечая изменения содержимого в указанных ячейках памяти. Отметьте особенности данного способа отладки программы.

1.3.3. Оформление отчета

Отчет должен содержать таблицы с выполненным предварительным заданием, а также таблицы результатов трассировки программ и выводы пп. 4, 6, 7 задания лабораторной работы.