В интегрированной среде программирования процесс получения исполняемого модуля не сложнее предыдущего варианта. Для трансляции всего программного проекта достаточно нажать на соответствующую кнопку, как это показано на рис. 9.3.
Рис. 9.3.
Большинство программаторов не может работать с объектным форматом исполняемого модуля программы, поэтому для загрузки машинного кода в микроконтроллер необходимо преобразовать объектный формат исполняемого модуля в общепринятый для программаторов НЕХ-формат. При преобразовании форматов вся отладочная информация, содержащаяся в исполняемом модуле, теряется. Машинный код процессора, записанный в отдельном файле в НЕХ-формате, называется загрузочным модулем.
Загрузочный модуль программы можно получить при помощи программы-преобразователя
oh.exe main
В интегрированной среде программирования загрузочный файл получается автоматически при выполнении трансляции программного проекта, т. к. интегрированная среда программирования сама выполняет перечисленные выше действия в соответствии с настройками программного проекта.
После того как программные модули были успешно оттранслированы, размещены по конкретным адресам и связаны между собой, для отладки программы можно воспользоваться любым из методов, показанных на рис. 9.1:
— внутрисхемным эмулятором;
— встроенным программным отладчиком;
— внешним программным отладчиком;
— отлаживаемым устройством с записанным в память программ двоичным кодом программы.
Внутрисхемный эмулятор с отображением переменных языка программирования на дисплее компьютера оказывает значительную помощь при отладке программ непосредственно на разрабатываемой аппаратуре. Этот метод отладки предоставляет наиболее удобную среду, когда можно непосредственно в отлаживаемом устройстве останавливать программу, контролировать ее выполнение непосредственно по исходному тексту, отслеживать состояние внешних портов и внутренних переменных, как входящих в состав микросхемы, так и объявленных при написании исходного текста программы. Необходимое для отладки программ оборудование показано на рис. 9.4.
Рис. 9.4.
При отладке программы с использованием внутрисхемного эмулятора необходимо включать в объектные модули символьную информацию. Для этого используются директивы компилятора. (При использовании интегрированной среды программирования достаточно установить соответствующую галочку в свойствах проекта.) В компиляторе языка программирования С-51 возможны следующие действия:
— включение информации о типе переменных для проверки типов при связывании модулей. Эта же информация используется внутрисхемным эмулятором. Исключение информации о переменных пользователя может использоваться для создания прототипов или для уменьшения размера объектного модуля;
— включение или исключение таблиц символьной информации;
— конфигурация вызовов функций для обеспечения связывания с модулями, написанными на языке программирования ASM-51;
— определение желаемого содержания и формата выходного листинга программы. Распечатка промежуточных кодов на языке ассемблер после компилирования программ, написанных на языке программирования PLM-51. Включение или исключение листингов отдельных блоков исходного текста.
Язык программирования С-51 является структурно-модульным языком. Каждая программа, написанная на языке программирования С-51, состоит из одного или более модулей. Каждый модуль записывается в отдельном файле и компилируется отдельно.
В модуле помещаются операторы, составляющие программу. Эти операторы выполняют необходимые действия, а также объявляют константы или переменные. Операторы, выполняющие действия, обязательно должны быть помещены в функции. В