Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Области действия переменных и подпрограмм
Любой объект, который объявляется в программе, написанной на языке программирования C‑51, имеет область действия. В языке программирования C область действия объекта распространяется на всю программу, то есть любой объект является глобальным. К объектам запрещено обращение до того, как они будут объявлены, поэтому при обращении к объекту, объявленному в другом программном модуле этот объект должен быть объявлен в данном программном модуле как external. Например: extern char code ERROR []; /*Строка сообщения об ошибке */extern struct mrec current; /* Текущее измерение */extern struct interval setinterval; /* Значения установленных интервалов */extern struct interval counter; /* Счетчик интервалов */ При использовании внутри модуля переменной, уже объявленной в другом модуле, могут возникнуть проблемы при связывании программы. Если использование переменной с тем же именем, что и в другом модуле делает программу более наглядной, то можно в одном из модулей (или во всех сразу) с атрибутом static. Например: static int i; //Глобальная переменная, недоступная из других модулей //(а значит и не мешающая им) void tmp(void){i=5;} Некоторые блоки могут содержать структурные операторы, как показано в следующих примерах. Использование внутренних блоков позволяет объявлять локальные переменные. Использование локальных переменных позволяет использовать одни и те же ячейки памяти для различных переменных и тем самым экономить ресурсы памяти данных. Локальные переменные существуют только в пределах структурного оператора. Если внутри структурного оператора были присвоены локальным переменным какие-то значения, то не следует ожидать, что вернувшись снова в этот оператор, переменные сохранят присвоенные ранее или вычисленные значения. Пример 1: Пример 2: В случае, если требуется сохранить значение переменных и при повторном вхождении в подпрограмму или структурный оператор, эту переменную необходимо объявить с атрибутом static. Например: void tmp(void){static int i=5;} То же самое относится и к подпрограммам. Если требуется объявить подпрограмму, которая не должна быть видна из других модулей, то ее необходимо объявить с атрибутом static. Это кроме прочего приведет к тому, что если эта подпрограмма не используется и в данном модуле, то она просто не будет транслироваться и занимать место в памяти программ. Пример объявления подпрограммы с атрибутом static:
static void tmp(void){i=5;} Иногда требуется локальные переменные хранить не в одних и тех же ячейках памяти, а в стеке. Это требуется, например, при вызове подпрограммы самой из себя. В таком случае подпрограмма должна быть объявлена как reentrant. Теперь, после краткого знакомства с языком программирования С‑51, давайте познакомимся с процессом написания программ. Как уже мы упоминали в начале книги, программы пишутся в интегрированной среде программирования. Знакомству с такой средой программирования и будет посвящена следующая часть книги.
Глава 23. Язык программирования ASM‑51 Язык программирования АSM‑51поддерживает модульное написание программ. Графическое изображение процесса разработки программы на языке программирования ASM-51 приведено на рис. 23.1. Рис. 23.1. Схема процесса написания программы на языке программирования ASM-51 Файл, в котором хранится программа, написанная на языке АSM‑51 (исходный текст программы), называется исходным модулем. Его можно создать, используя любой текстовый редактор. Для файла исходного текста программы принято использовать следующие расширения: asm, a51, srs, s51. Получить объектный модуль можно, указав имя исходного модуля программы в качестве параметра вызова программы-транслятора в DOS-строке или строке командного файла: asm51.exe modul.asm Получить исполняемый модульпрограммы можно, указав все имена объектных модулей программы в качестве параметров вызова программы-редактора связей в DOS-строке или строке командного файла: bl51.exe main.obj, modul1.obj, modul2.obj Имя исполняемого модуля программы по умолчанию совпадает с именем первого объектного файла в списке параметров строки запуска редактора связей. Исполняемый модуль программы записывается в файл c именем, но без расширения. Большинство программаторов не может работать с объектным форматом исполняемого модуля программы, поэтому для загрузки машинного кода в микроконтроллер необходимо преобразовать объектный формат исполняемого модуля в общепринятый для программаторов HEX-формат. При таком преобразовании вся отладочная информация, содержащаяся в исполняемом модуле, теряется. Машинный код процессора, записанный в HEX-формате, называется загрузочным модулем.
Загрузочный модуль программы можно получить при помощи программы-преобразователя oh.exe, передав ей при вызове в качестве параметра имя файла исполняемого модуля, например: oh.exe main Рис. 23.2. Пример системы отладки программного обеспечения для микроконтроллеров. После того, как программные модули успешно оттранслированы, размещены по конкретным адресам и связаны между собой, для отладки программы можно воспользоваться внутрисхемным эмулятором. Это инструментальное средство позволяет отображать переменные программы на дисплее персонального компьютера и оказывает значительную помощь при отладке программ непосредственно на разрабатываемой аппаратуре. Необходимое для отладки программ оборудование показано на рис. 23.2. Отдельные участки программы могут быть отлажены и при помощи специальных программ-отладчиков (симуляторов). Как эмуляторы, так и симуляторы предназначены для обнаружения логических ошибок, содержащихся в исходном тексте программы, поэтому после обнаружения ошибки приходится исправлять исходный текст и заново транслировать его для получения исправленной версии исполняемого или загрузочного модуля. Тем не менее, окончательная отладка программного обеспечения для разрабатываемого устройства производится только после записи загрузочного модуля в память микроконтроллерной системы. Именно на этом этапе находятся и устраняются последние ошибки, допущенные при написании программы.
|
||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 208; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.37.68 (0.005 с.) |