Процесс преобразования операторов исходного языка программирования в машинные коды микропроцессора называется трансляцией исходного текста. В настоящее время ручная трансляция программ практически не используется. Трансляция производится специальными трансляторами.
Существуют два больших класса таких программ: компиляторы и интерпретаторы. При использовании компиляторов весь исходный текст программы преобразуется в машинные коды, и именно эти коды записываются в память микропроцессора. При использовании интерпретатора в память микропроцессора записывается исходный текст программы, а трансляция производится при считывании очередного оператора. Естественно, что быстродействие интерпретаторов намного ниже, чем у компиляторов, т. к., например, при использовании оператора в цикле он транслируется многократно.
Применение интерпретатора может обеспечить выигрыш только в случае его разработки для языка программирования «высокого» уровня. В этом случае может быть сэкономлена внутренняя память программ, а также облегчен процесс отладки (при применении языка программирования BASIC) или облегчен перенос программ с одного типа процессора на другой (в случае использования языка программирования
При программировании на ассемблере применение интерпретатора приводит к проигрышу по всем параметрам, поэтому для языков программирования низкого уровня применяются только программы-компиляторы.
Для программирования микроконтроллеров как на языке программирования «низкого» уровня, так и на языке программирования «высокого» уровня чаще используются компиляторы, поэтому рассмотрим подробнее виды этих трансляторов.
Программы-компиляторы бывают оценочные и профессиональные.
Оценочные компиляторы позволяют написать простейшие программы для конкретного процессора и определить, подходит ли процессор для тех задач, которые предстоит решать в процессе разработки устройства.
Конечно, если программа очень проста, то можно весь программный продукт выполнить на оценочном компиляторе. Оценочные компиляторы позволяют транслировать одиночный файл исходного текста программы. Иногда такие компиляторы позволяют включать в процесс трансляции содержимое отдельных файлов специальной директивой.
В результате работы оценочного компилятора сразу получается исполняемый или загрузочный модуль программы, поэтому такие компиляторы называются компиляторы с единой трансляцией.
Профессиональные трансляторы позволяют производить компиляцию исходного текста программы по частям. Это позволяет значительно сократить время трансляции, т. к. нужно компилировать не весь текст программы, а только ту ее часть, которая менялась после предыдущей трансляции.
Кроме того, каждый программный модуль может писать отдельный программист. Это позволяет сократить время написания программы. Даже в том случае, если программу пишет один человек, время написания программы сокращается за счет использования готовых отлаженных и оттранслированных программных модулей.
При многомодульном программировании процесс получения исполняемого кода программы разбивается на два этапа: компиляция исходного текста модулей (некоторых или всех) и связывание (компоновка) полученных объектных файлов модулей в единую программу. Такой процесс получил название раздельная компиляция-компоновка.
Оценочные компиляторы обычно предлагаются бесплатно фирмами — производителями микроконтроллеров.
Профессиональные компиляторы разрабатываются и продаются независимыми фирмами — разработчиками программного обеспечения. Для микроконтроллеров семейства MCS-51 получили известность продукты таких фирм, как FRANKLIN, IAR, KEIL и др.
В состав современных профессиональных средств написания и отладки программ для микроконтроллеров обычно входят эмуляторы процессоров или отладочные платы, текстовый редактор, компиляторы языка высокого уровня (чаще всего «С») и ассемблера, редактор связей (компоновщик) и загрузчик программы в отладочную плату. Все программы обычно объединены интегрированной средой разработки программного проекта, которая позволяет поддерживать один или несколько программных проектов.
Теперь, после того как были рассмотрены языки программирования для микроконтроллеров и программы-трансляторы, перейдем к рассмотрению основных принципов написания программ.
В программах часто приходится повторять одни и те же операторы (например, при реализации алгоритма работы с параллельным или последовательным портом). Было бы неплохо использовать один и тот же участок кода, вместо того, чтобы повторять одни и те же операторы несколько раз.
Участок программы, к которому можно обращаться из различных мест программы для выполнения некоторых действий и последующего возврата в место вызова, называется подпрограммой.