Главная | |
Материал взят из книги![]() Скачать оригинал КНИГИ в хорошем качестве![]() И так мы приступаем к рассмотрению еще одного важного вопроса, который неизбежно задает себе каждый начинающий конструктор микропроцессорной техники. Как же практически происходит процесс создания программы для микропроцессорного устройства. Технология написания программ включает в себя следующие этапы: ■ Написание текста программы. ■ Трансляция. ■ Отладка. ■ Прошивка программного кода в программную память микроконтроллера. ■ Опробование работоспособности программы на реальной схеме. ■ Анализ выявленных ошибок. ■ Корректировка программы по результатам опробования и повторная отладка. Рассмотрим эти этапы подробнее. Текст программы пишется на компьютере при помощи обычного текстового редактора. Однако не каждый редактор подойдет для этой цели. Используемый вами редактор должен иметь возможность создавать текстовые файлы именно в том формате, который совместим с выбранным вами транслятором. В следующем разделе мы подробно коснемся этого вопроса. Написанная вами программа будет содержать ошибки. Этого не стоит пугаться. Даже опытный программист при написании программы практически всегда допускает ошибки. В среде программистов даже ходит такая шутка: «Если вы написали программу и при первой трансляции, в ней не было обнаружено ошибок, проверьте — все ли нормально с транслятором!». Ошибки могут быть двух типов. Первый вид — это ошибки синтаксиса. То есть неправильное написание команд, ошибки в количестве параметров и т.д. Второй вид ошибок — это ошибки алгоритма. В этом случае текст с точки зрения синтаксиса написан правильно, но программа в результате делает не то, что вы от нее ожидаете. Первый тип ошибок транслятор обнаруживает автоматически в процессе трансляции и сообщает о них программисту. Второй тип ошибок транслятор обнаружить не может. Откуда ему знать, чего вы хотите от программы? Такие ошибки выявляются в процессе отладки программы. Отладкой называют поэтапное выполнение написанной вами программы под управлением специальной программы — отладчика. Различают два вида отладчиков: программный и программно-аппаратный. Самый эффективный — это программно-аппаратный отладчик. Он представляет собой некую специальную схему, которая имитирует работу микроконтроллера. Эта схема управляется при помощи компьютера и специальной управляющей программы. Такая схема может выполнять программу точно так же, как и имитируемый ею микроконтроллер. Кроме этого, схема имеет ряд дополнительных возможностей, связанных с отладкой программ, таких как: ■ Возможность выполнения отлаживаемой программы в пошаговом режиме. ■ Возможность оперативного просмотра всех регистров микроконтроллера на экране компьютера. ■ Возможность установки точек перехвата. Пошаговый режим — это такой режим, когда ход выполнения программы берется под полный контроль управляющей программы. Программист дает команду «Сделать очередной шаг» и микроконтроллер выполняет одну очередную команду отлаживаемой программы. Это дает возможность шаг за шагом прогонять отлаживаемую программу, наблюдая при этом на экране компьютера ход ее выполнения и содержимое всех регистров процессора. Одновременно можно проверять по осциллографу или другими способами правильность формирования сигналов на всех выводах микроконтроллера. Если отлаживаемая программа имеет достаточно большой размер, то для ее отладки пошаговый режим не всегда подходит. Если действовать только пошаговым способом, то пришлось бы слишком долго «шагать» до нужного места. В этом случае применяется прием постановки точек перехвата. Точка перехвата — это некий адрес в программной памяти, в котором выполнение программы должно приостановиться. Любой отладчик способен запомнить несколько таких точек останова. После определения точки останова программа под управлением отладчика запускается на выполнение в автоматическом режиме. Если в ходе выполнения программы она дойдет до одного из адресов, отмеченных как точка останова, выполнение отлаживаемой программы приостановится. Отладчик покажет текущее содержимое регистров. Дальнейшая отладка возможна как в пошаговом режиме, так и повторный запуск программы в автоматическом режиме до следующей точки перехвата. Общий смысл всех этих действий — выявить те места программы, где ход ее выполнения не соответствует задуманному алгоритму. Программно-аппаратный отладчик — это сложное и дорогое устройство. Его целесообразно применять на промышленных предприятиях и в научно-исследовательских учреждениях. Для индивидуальной и мелкосерийной разработки вполне можно обойтись программным отладчиком. Он представляет собой программу, имитирующую работу процессора. Действует он аналогично программно-аппаратному варианту. Однако никаких сигналов не формируется. При отладке на таком отладчике можно проверить лишь ход выполнения программы. Оценить формируемые внешние сигналы можно только теоретически, косвенным путем. Управляющая программа описываемого здесь позиционера была отлажена именно на таком отладчике. После отладки программы нужно записать ее в программную память микроконтроллера и опробовать ее работу в реальной схеме. На техническом жаргоне это называется «прошить» микросхему. Для прошивки микроконтроллера применяется специальное устройство называемое программатором. Программатор подключается к компьютеру и работает под управлением специальной управляющей программы. Программируемая микросхема вставляется в специальную панельку программатора. Затем, при помощи управляющей программы, вы запускаете процесс программирования. Существуют программаторы разной степени сложности. Полнофункциональный программатор умеет выполнять следующие операции: ■ Записывать коды программы в программную память микроконтроллера. ■ Считывать коды из этой памяти. ■ Читать код производителя микросхемы. ■ Прошивать защитные биты, запрещающие чтение программы из памяти микросхемы. ■ Стирать программную память (одновременная очистка защитных битов). Защитные биты предохраняют вашу программу от несанкционированного копирования. Если ваши конкуренты захотят повторить вашу конструкцию, то программу им придется писать заново. Более простые программаторы не поддерживают полный набор вышеперечисленных функций. Они обычно имеют только самые необходимые из них. Программатор, который использовался при разработке и изготовлении позиционера, производит лишь одну комбинированную операцию. За один запуск он сначала стирает программную память, а затем зашивает туда указанный вами программный код. В процессе отладки программы приходится «перешивать» программную память процессора множество раз. Для разработки программ различных микропроцессорных устройств у меня сложилась определенная устоявшаяся методика, которую я рекомендую и вам. Я не стараюсь создать сразу весь текст программы. Разработку программы удобнее делать по частям. Удобнее всего начать с программы вывода на индикатор. Создайте простейшую программу, выводящую на индикаторы любую подходящую надпись. Это будет лишь заготовка вашей будущей программы. Однако она должна иметь законченный вид и выводить на индикатор задуманную вами надпись. Отладьте эту программу в отладчике. Запишите в микросхему и попробуйте на реальной, схеме. Добейтесь, чтобы на индикаторе появилась задуманная вами надпись. Далее, когда программа вывода на индикатор будет готова, можно дополнить ее программой ввода с клавиатуры. Программу добавьте таким образом, чтобы при нажатии разных кнопок клавиатуры на индикатор выводились бы их номера. Снова отладьте получившийся кусок программы в отладчике. Прошейте эту усовершенствованную программу в программную память микроконтроллера. Теперь вы можете проверять работу программы ввода с клавиатуры, нажимая кнопки и наблюдая за индикаторами. Таким же образом постепенно добавляйте к программе все новые и новые модули, но в такой последовательности, в какой это удобнее для проверки каждой вновь добавляемой части. Старайтесь при добавлении нового модуля программы не затрагивать уже отлаженные части. Тогда, если после очередного изменения ваша программа откажется работать, вы будете знать в каком месте программы искать ошибку. Добавляя в программу новый модуль, не закладывайте сразу все возможности, которые он должен выполнять. Создайте сначала упрошенный вариант. Отладьте, проверьте его в работе. А затем усовершенствуйте его, но тоже не сразу, а поэтапно, постепенно приближаясь к окончательному варианту. Это очень интересный и занимательный процесс! Достаточно втянуться в него один раз и вы на всю жизнь останетесь фанатиком микропроцессорной техники! Ну а теперь от общих рассуждений пора переходить к изучению конкретных инструментальных программ, которые использовались при разработке позиционера. Для трансляции программ я использовал кроссассемблер фирмы «Meta Lin к», версии 1.2h. Эта программа предназначена для работы под управлением операционной системы DOS. Она написана в старом стиле. Имя файла для трансляции передается как параметр при запуске транслятора. Все сообщения выводятся в окно DOS. Поэтому запускать программу удобнее при помощи DOS-ориентированного файлового менеджера. Файловый менеджер — это целый класс программ, начало которому положил легендарный Norton Commander. В настоящее время существует множество программ, являющихся его клонами. Это такие программы, как Windows Commander, Volkov Commander, FAR, Dos Navigator и т.д. Все перечисленные программы очень похожи друг на друга. Однако, лично я из всех перечисленных программ больше всего предпочитаю программу Dos Navigator (ДОС-навигатор) нашего советского производства. На рис. 53 показан внешний вид программы ДОС-навигатор. Теперь поговорим о текстовом редакторе. Текст программы нужно писать в классическом текстовом формате. Такой формат широко использовался в старых компьютерах. Его поддерживают практически все текстовые редакторы, написанные под DOS. Большинство программ для Windows, используют более сложные форматы. Но и тут можно найти подходящую программу. Однако, в связи с тем, что описываемый транслятор предназначен для работы под управлением DOS, логичнее и редактор текстов выбирать также ДОСовский. Для этой цели не нужна «навороченная» программа. На мой вкус, самый лучший вариант — это встроенный текстовый редактор программы ДОС-навигатор (Dos Navigator). Тот самый редактор, который вызывается при нажатии клавиши F4. ![]() Все клоны Norton Commander-a имеют простейший встроенный редактор текстов, вызываемый по F4. Но только в Dos Navigator-e этот редактор представляет собой удобный многофункциональный инструмент. В нем есть все, необходимое для работы. Поиск и замена текстовых фрагментов, автоотступ, копирование и перенос при помощи выделенных блоков. Причем редактор поддерживает как прямоугольные, так и строчные блоки. Редактор даже умеет рисовать при помощи псевдографических символов! Если рисование, это такое свойство, которое мало пригодно для задачи написания программ, то следующее его свойство очень полезно именно в нашем случае. Описываемый редактор имеет режим запоминания текущего состояния редактирования. Если включен этот режим, то при повторном открывании текста вашей программы вы автоматически попадаете в то же самое место, на котором окончили редактирование в прошлый раз. Еше одна очень приятная особенность этого редактора — он имеет настраиваемую контекстную подсветку редактируемого текста. Это означает, что при написании текстов на Ассемблере можно, как в современных специализированных редакторах, наслаждаться внешним видом вашей программы. Ключевые слова будут выделены одним цветом, числовые значения — другим, а комментарии — третьим! Редактор является неотъемлемой частью «ДОС-навигатора» и поэтому обладает всеми достоинствами последнего. ДОС-навигатор выполнен с применением Windows-подобного оконного интерфейса. Это означает, что вы можете открыть не одно, а несколько окон редактора, менять их размеры, положение, копировать любые блоки из одного окна в другое и это далеко не все удобства и возможности. Я в свое время был горячим сторонником программы Dos Navigator. На моей личной страничке вы можете найти множество вспомогательных файлов для него. Это и специально подобранные файлы раскраски для Ассемблера, и программы-заставки, и многое другое. ДОС-навигатор и сейчас установлен на обоих моих компьютерах — на работе и дома. В некоторых случаях он по-прежнему незаменим. Итак, мой совет — при написании текста программы для микроконтроллера пользуйтесь ДОС-навигатором. Однако, принимая решение пользоваться программой, работающей под управлением DOS, необходимо знать, что в этой операционной системе применялась кодировка символов, которая отличается от кодировки, принятой в настоящее время. Поэтому, если вы напишете текст вашей программы, пользуясь редактором ДОС-навигатора, а затем захотите просмотреть его под Windows, то вместо русских букв вы увидите бессмысленный набор экзотических символов. То же самое произойдет, если вы примените любой другой текстовый редактор, рассчитанный для работы под DOS. Однако это не должно вызывать у вас больших затруднений. Дело в том, что все надписи в тексте программы, которые выполнены на русском языке — это всего лишь комментарии. Все команды, составляющие собственно текст программы, всегда пишутся с применением исключительно латинских символов. Латинские символы во всех известных кодировках имеют одни и те же коды. Все команды, написанные в DOS, будут выглядеть точно так же при просмотре их под Windows. Если учитывать, что в процессе трансляции программы все комментарии игнорируются, то проблемы кодировки не вызывают особых затруднений. Просто читать вашу программу вам придется в той среде, в которой она была написана. Поэтому вы можете свободно выбирать — в какой операционной системе вам работать удобнее: в DOS или в Windows. В том случае, если вы не желаете путаться в кодировках и выбираете Windows, я рекомендую, для запуска программ транслятора, отладчика и программатора использовать файловый менеджер Windows Commander. А для написания программ воспользоваться либо встроенным редактором Windows Commander, вызываемым при нажатии клавиши F4, либо программой «Блокнот» (Note Pad), входящей в состав Windows. На рис. 54 вы можете увидеть, как выглядит Windows Commander. Каким бы редактором вы не пользовались, при записи вашей программы на диск необходимо позаботиться о том, чтобы полученный файл имел расширение asm. Например, файл с текстом управляющей программы позиционера я назвал pozi.asm. ![]() После того, как текст программы написан, приступаем к процессу трансляции. Для запуска транслятора пользуйтесь тем же самым файловым менеджером. Рекомендую для всех ваших будущих программ создать в корневом каталоге вашего жесткого диска специальную директорию. Назвать ее, например, Prog. Внутри этой директории создайте еще одну, назовите ее asm51 и поместите туда все файлы программы транслятора. Затем директорию prog откройте в левой панели вашего файлового менеджера, а директорию asm51 — в правой его панели. На рис. 53 и 54 показано, как это будет выглядеть для ДОС-навигатора и Windows Commander-a. Постепенно в директории prog у вас накопится множество разных программ. Это будут пробные программы, различные варианты рабочей программы, а затем и новые проекты. Для того, чтобы оттранслировать какую-либо из этих программ, нужно переместить ее в директорию asm51. Это легко делается средствами вашего файлового менеджера путем нажатия клавиши F6. Затем нужно сделать правую панель активной, то есть переместить в нее указатель выбранного файла. Переключение между правой и левой панелями в любом менеджере производится при помощи клавиши ТАВ. Можно также воспользоваться мышью. Теперь все готово для трансляции. Для запуска транслятора наберите в командной строке, находящейся сразу под файловыми панелями, следующую команду: asm51 pozi Затем нажмите клавишу Enter. Если вы все сделали правильно, запустится процесс трансляции. Обратите внимание, что команда состоит из двух слов, разделенных пробелом. Первое слово — это имя программы-транслятора (asm51.exe). Второе слово — это имя файла вашей программы на ассемблере (pozi.asm). Причем оба имени допускается писать как с расширением, так и без. Если вы запишите asm51.exe pozi.asm, то результат будет точно такой же. Процесс трансляции на современных компьютерах происходит почти мгновенно. Вы не успеете ничего понять, как процесс закончится. Если в вашей программе не было никаких ошибок, по завершении работы транслятора на экране появится следующая надпись: С \PROG\ASM51>asm51 pozi 8051 Cross-Assembler, Version 1 2h (с) Copyright 1984, 1985, 1986, 1987, 1988, 1989, 1990 by MetaLink Corporation First pass Second pass ASSEMBLYCOMPLETE, 0 ERRORS FOUND В том случае, если вы работаете в Windows Commander, эта надпись появится в отдельно открывшемся окне и останется на экране, пока вы не закроете это окно вручную. Если вы работаете в ДОС-навигаторе, то надпись, промелькнув на экране, будет закрыта открывшимися файловыми панелями. Но вы легко можете посмотреть ее. Для этого достаточно нажать клавишу Esc и панели уберутся, открыв вам черное окно, находящееся под ними. В этом окне и остаются все надписи, выводимые ДОС-овскими программами. Для того, чтобы вернуть панели обратно, повторно нажмите Esc. Режим отключения панелей по нажатию клавиши Esc по умолчанию выключен. Если вы не хотите или не умеете его включить, воспользуйтесь альтернативным способом отключения панелей: Ctrl+O. В случае отсутствия ошибок процесс трансляции можно считать законченным и переходить к отладке. При успешной трансляции в той же директории появятся два новых файла, с тем же именем, что и транслируемая программа, но с другими расширениями. pozi.Ist — листинг программы pozi.hex — оттранслированная программа в НЕХ-формате. Но такого результата вы сможете достигнуть, скорее всего, не сразу. Если в процессе трансляции транслятор обнаружит в вашей программе какие-либо ошибки, то он покажет их общее количество в последней строке своего сообщения. При этом файл с расширением hex сформирован не будет. Более подробное описание ошибок транслятор помещает в листинг трансляции (файл с расширением 1st). Прежде, чем продолжить нашу тему, необходимо понять, что такое листинг программы. Листинг программы — это специальный файл, где в наглядном виде показан весь процесс трансляции. Файл листинга тоже имеет текстовый формат. Вы можете просмотреть его при помощи встроенного просмот-рщика вашего файлового менеджера. Для этого вы должны выбрать этот файл в файловой панели менеджера и нажать клавишу F3. В результате вы увидите приблизительно следующее: ![]() ![]() Приведенный фрагмент представляет собой листинг трансляции управляющей программы позиционера. Для наглядности я привел фрагмент из середины программы. Как видите, листинг — это тот же текст программы, дополненный с левой стороны еще тремя столбцами. Первый столбец — это адрес в памяти, куда помещаются коды конкретной команды, записанной далее в этой же строке. Второй столбец — это сами коды команды. И адрес и коды записываются в шестнадцатеричном виде. Еще один новый столбец — это просто номер строки. Номер строки используется для быстрого поиска ошибки. Коды ошибок и номера строк, где они были обнаружены, приводятся в самом конце листинга. Каждая обнаруженная ошибка дополнительно помечается непосредственно в той строке, где она обнаружена. Это сообщение выглядит следующим пбпязом: ![]() Импровизированная стрелка показывает место, где в тексте найдена ошибка. В приведенном примере программа обнаружила незнакомый оператор. На самом деле это просто опечатка. Вместо буквы Е случайно была набрана буква F. В результате транслятор обнаружил эту ошибку. По классификации транслятора этот вид ошибки имеет номер 23. Краткое описание ошибки: «Illégal or missing directive». Что в переводе означает «Недопустимый или неверно записанный оператор». В конце листинга кроме полного списка ошибок приводится также список всех констант и переменных вашей программы с указанием их значений, а также полный список меток, также со значениями. Используя листинг, программист может обнаружить и исправить все ошибки синтаксиса. Если процесс трансляции прошел нормально, то его результат помещается в специальный файл, имеющий расширение hex. Файл в НЕХ-формате — это тот самый машинный код, который мы и должны получить в результате трансляции, предназначенный для записи в память микроконтроллера. НЕХ-формат — это специальный формат для записи машинных кодов, принятый во всех подобных трансляторах. Это тоже, по сути, текстовый файл, где каждый байт полученного кода записывается специальным образом в шестнадцатеричном виде. Там же содержится информация об адресах, куда эти коды должны быть помещены. Вот фрагмент такого файла: ![]() Я не буду вдаваться в подробности кодирования. Для составления программ это знать не обязательно. Нужно просто понимать, что именно здесь хранится оттранслированная программа. Именно файл в НЕХ-формате прямым или косвенным способом используется программатором для прошивки микросхем. Ниже будут описаны две разные про- граммы для управления программатором. Для одной из них входным является НЕХ-файл, а для второй в качестве входного нужен файл в BIN-формате. BIN-формат, это еще один способ хранения оттранслированных данных. Он представляет собой просто набор тех самых кодов, которые и составляют программу для процессора. Для получения BIN-формата существуют программы-перекодировщики. На сайте «Цифровые микросхемы и микропроцессоры» вы можете найти две программы: программу hex2bin.exe и программу bin2hex.exe. Одна из них предназначена для перекодировки файла, записанного в НЕХ-формате, в BIN-формат. А другая — для обратной перекодировки. После того, как текст программы написан и оттранслирован без ошибок, можно приступать к проверке правильности ее функционирования. Как уже говорилось, для такой проверки применяется специальная программа — отладчик. Я применяю программу ACS51 «Advanced Micro Controller High Speed Simulator» Version 1.02 by Intelligent Designer Tools Moscow, 1989. Процесс отладки происходит следующим образом. Сначала запускается отладчик. Затем в него загружается наша оттранслированная программа. Все дальнейшие операции производятся под управлением отладчика. В качестве входного файла для отладчика используется выходной файл транслятора в НЕХ-формате. Теперь рассмотрим подробнее последовательность работы с программой отладчика. Для отладки программы удобно внутри директории prog создать специальную директорию для отладчика. Назовем ее acs51. В эту директорию помещается программа-отладчик (файл fd51.exe). Туда же, перед началом отладки нужно поместить отлаживаемый файл в НЕХ-формате. Для запуска отладчика сначала, при помощи файлового менеджера, откройте директорию asc51. Установите указатель выбора файлов на файл fd51.exe и нажмите Enter. Отладчик запустится, и вы увидите на экране его рабочее поле (см. рис. 55). На рабочем поле наглядно отображается полная информация о текущем состоянии имитируемого контроллера. Рабочее поле программы разделено на восемь отдельных окон. Каждое окно имеет свое назначение. Самое большое окно в верхней части экрана называется «Special Function Registers». Оно постоянно отражает содержимое всех внутренних регистров процессора, как регистров общего назначения, так и специальных регистров. Текущий банк регистров общего назначения выделяет- ся более ярким, цветом. Если выполнять программу пошагово, то на каждом шаге вы сможете визуально наблюдать, как меняется содержимое регистров. В левом нижнем окне (без названия) всегда отображается фрагмент программы, записанный в виде команд Ассемблера. Запись очень похожа на листинг программы. Этот текст получен из кодов программы путем так называемого «дизассемблирования». Дизассемблирование — это процесс обратный трансляции. Мнемокоды программ определяются по их машинным кодам. Однако здесь вы не увидите ни меток, ни имен переменных и констант, ни комментариев. Все это осталось в тексте программы. Вместо этого вы увидите конкретные адреса и числа в шестнадцатеричном коде. Вторая сверху строка этого окна выделена голубым цветом. В процессе выполнения команд весь текст в окне смещается вверх таким образом, что в этой строке всегда находится текущая выполняемая команда. В самой верхней строке находится только что выполненная команда. Следующее окно называется INT RAM. Оно отображает текущее состояние ОЗУ контроллера. Левый столбец четырехразрядных шестнадцатеричных чисел, выделенный голубым цветом, отображает адреса ячеек памяти. Остальные двухразрядные числа зеленого цвета — это содержимое этих ячеек. Такой способ отображения называется дампом памяти. Адрес в начале каждой строки относится только к первой ячейке ![]() этой самой строки. Каждая последующая ячейка имеет адрес па единицу больший, чем у предыдущей. В окне видна лишь часть ячеек памяти. Но при помощи команд управления можно выбрать другой начальный адрес просмотра и увидеть любую другую часть ОЗУ. Естественно, в этом окне можно увидеть также те ячейки, которые одновременно являются регистрами. Их содержимое будет одинаковым. Маленькое окно PSW, как вы уже догадались, отображает текущее состояние всех флагов регистра PSW. В верхнем, самом большом окне мы также можем видеть регистр PSW. Но там его содержимое отображается в виде одного шестнадцатеричного числа. А в специальном окне все флаги отображаются по отдельности. Окно PGM ROM отображает в виде дампа программную память контроллера. Мы уже рассматривали окно, в котором та же самая информация отображается в виде текста на Ассемблере. Данное же окно дублирует предыдущее, но уже в другой форме. Окно предназначено в основном для того, чтобы наблюдать те ячейки программной памяти, в которых хранятся данные. Например, в нем удобно наблюдать таблицу символов программы позиционера. В окне PGM ROM также отображается только часть всей программной памяти. Но при помощи команд навигации можно посмотреть любую ее область. Окно «Stack» отображает текущее состояние стека. Столбец слева, окрашенный в голубой цвет — это номер ячейки стековой памяти, начиная с его вершины, В столбце справа показано текущее содержимое каждой ячейки. Следующее окно — это окно ввода команд. В нем вы увидите надпись CMD (сокращение от Command) и мигающий курсор. В это окно вы можете вводить различные команды, при помощи которых происходит управления всеми режимами отладки. Каждая такая команда состоит из одной буквы. За этой буквой записывается один или нескольких параметров. Полный набор команд описан в краткой справке, которая вызывается по команде «Н» (без параметров). Наберите Н на клавиатуре и нажмите Enter. Появится окно справки, где в кратком виде на английском языке будут даны описания команд и некоторая другая информация. В пакет программы отладчика, который вы можете скачать па сайте «Цифровые микросхемы и микропроцессоры», входит текстовый файл на русском языке с описанием всех команд. Этот файл является переводом текста встроенной помощи. И последнее маленькое окошко служит для оценки реального времени выполнения программы. Время считается в секундах, миллисекундах и микросекундах, о чем свидетельствуют надписи «s», «ms» и «mcs» в заголовке этого окна. Кроме команд, которые должны вводиться в командной строке, существует ряд команд, которые вводятся при нажатии одной из функциональных клавиш (Р1...Р10). Эти клавиши часто называют «Горячими клавишами», так как нажатие любой из них вызывает немедленное выполнение закрепленной за клавишей функции. Для удобства работы в нижней части окна отладчика помещена строка подсказки, где в краткой форме поясняются команды, закрепленные за каждой из этих клавиш. Более развернутое описание для всех этих команд приведено в табл. 6. ![]() изображения не допускают изменения. В этом случае попытка изменить недоступный элемент не вызовет никакой реакции. Если вы изменили любой элемент в любом окне отладчика и такой ввод допустим, то он сразу повлияет на содержимое других окон. Например, если поменять адрес в верхней строке окна INT ROM, то цифры, отображающие содержимое ячеек, тут же поменяются в соответствии с новыми адресами. Адрес других строк этого окна менять недопустимо. Выход из режима прямого ввода происходит также при помощи пустого ввода. Теперь немного о самом процессе отладки. В качестве примера будем отлаживать управляющую программу позиционера. Сначала нужно загрузить отлаживаемую программу в отладчик. Для этого в окне ввода команд наберите следующую команду: I, PQZI.HEX Можно набирать это все как прописными буквами, так и строчными. Главное, не забудьте между командой L и именем загружаемого файла поставить пробел. Имя файла нужно обязательно набирать целиком, с расширением. Иначе команда будет считаться ошибочной, и программа не загрузится. После набора текста команды нажмите Enter. Если все выполнено правильно, то в левом нижнем окне появится текст первых строк загруженной программы. ![]() Далее мы начинаем отлаживать загруженную программу. Сначала можно прогнать ее в пошаговом режиме. Для этого нажимайте клавишу F1. При каждом нажатии будет выполняться одна очередная команда. После выполнения очередного шага посмотрите на состояние всех регистров и ячеек памяти. Их содержимое должно изменяться в сбответствии с задуманным алгоритмом. Если при выполнении программы встретится команда передачи управления, то это сразу отразится на содержимом окна в левой нижней части отладчика, где показан фрагмент текста программы. Одновременно изменится содержимое регистра PC (регистра текущего адреса). Если программа слишком большая и «прошагать» ее до нужного места — «утомительное» занятие, воспользуйтесь механизмом постановки точек перехвата. Для этого нажмите клавишу F5. Рабочее поле программы приобретет вид, показанный на рис. 56. В верхней части экрана появится окно красного цвета, предназначенное для установки точек перехвата. Всего можно установить восемь таких точек. Точки устанавливаются методом прямого ввода. Причем в данном случае программа переходит в режим прямого ввода автоматически. Перемещайте курсор непосредственно в нужную позицию и вводите новое значение. Как вы видите на рис. 56, для каждой точки перехвата в таблице имеется четыре параметра. BRN — это номер точки перехвата. PC — это адрес, при достижении которого программа должна остановиться. Следующие два столбца служат для еще более тонкой настройки режимов останова. Столбец Counter — это счетчик проходов. В этом столбце вы обязательно должны заменить ноль на какое-либо другое число. Иначе останова не будет. Если вы параметру Counter присвоите значение 001, то программа будет останавливаться каждый раз, когда адрес текущей исполняемой команды будет равен значению параметра PC. Если вы поставите туда число большее единицы, например 10, то останов программы произойдет не при первом проходе через этот адрес, а при десятом. Параметр Occur устанавливать не надо. Его значение увеличивается автоматически каждый раз, когда программа проходит через указанный адрес. При совпадении Counter и Occur происходит остановка программы и сброс параметра Occur. После того, как программа остановится, вы можете продолжить ее отладку в пошаговом режиме. Можно также запустить программу снова в автоматическом режиме. В этом случае она будет работать, пока не встретит следующую точку останова. Если вы часто используете одни и те же точки перехвата, то их настройки можно записать на диск, а затем, при следующей загрузке программы, восстановить настройки. Для записи точек перехвата используется клавиша F2, а для восстановления — клавиша F1. Выйти из режима Используются технологии uCoz
|