Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lect6.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
344.06 Кб
Скачать

Мова програмування c-51.

Мова програмування C - це мова програмування загального призначення, призначена для написання програм, ефективних за виконуваним кодом з елементами структурного програмування і багатим набором операторів. Мова програмування C практично не має обмежень, що дозволяє використовувати мову програмування C для ефективного вирішення широкого круга завдань. Проте при написанні програм для мікроконтролерів необхідно враховувати особливості побудови апаратури цих мікросхем.

До складу мови програмування С-51 введений ряд змін, що відображають особливості побудови пам'яті мікроконтролерів сімейства MCS-51. Крім того, ці зміни дозволяють безпосередньо звертатися до вбудованих портів, таймерів і інших пристроїв мікроконтролерів вказаного сімейства. Особливості мікроконтролерів цього сімейства в основному відображаються через описи змінних.

Мова програмування С-51 задовольняє стандарту ANSI-C. Ця мова програмування призначена для отримання компактних і швидкодіючих програм, призначених для мікроконтролерів сімейства MCS-51. Мову С-51 забезпечує гнучкість програмування на широко відомій мові програмування C, при швидкості роботи і компактності, порівнянної з програмами, написаними на мові програмування асемблер.

Оскільки мова програмування C не має власних засобів введення і висновку, то він звертається до відповідних функцій операційних систем. У мові програмування С51 натомість є можливість змінювати бібліотечні функції, і тим самим звертатися до конкретних елементів пам'яті мікроконтролера, для якого пишеться програма.

Компілятор c51.exe - це програмний засіб, який транслирует початковий текст, написаний на мові програмування C51 в переміщувані об'єктні модулі. Ці модулі потім можуть об'єднуватися з іншими модулями, написаними на мовах програмування C51, PLM-51 або ASM-51. Компілятор виводить на екран дисплея або у файли лістингів повідомлення про помилки і допоміжну інформацію, яка може бути використана при відладці і розробці програм.

Компілятор c51.exe може бути встановлений на комп'ютерах серії IBM або сумісних з ними в операційній системі DOS 3.Х і вище і використовуватися для генерації команд мікроконтролерів сімейства MCS-51.

Застосування.

Мова програмування C-51 і його бібліотеки є частиною інтегрованого набору засобів розробки програмного забезпечення для мікроконтролерів сімейства MCS-51. Мову програмування C51 підтримує модульне написання програм. Процес розробки програм на мові програмування C-51 показаний на рис 1.

Рис 1. Процес написання програми на мові програмування С-51.

При розробці програмного забезпечення виконуються наступні етапи:

  • постановка завдання (повне визначення вирішуваної проблеми);

  • розробка принципової схеми і вибір необхідного програмного забезпечення;

  • розробка системного програмного забезпечення. Цей важливий крок складається з декількох етапів, що включають: опис послідовності виконуваних кожним блоком завдань, вибір мови програмування і використовуваних алгоритмів;

  • написання тексту програми і підготовка до трансляції за допомогою будь-якого текстового редактора;

  • компіляція програми;

  • виправлення синтаксичних помилок, виявлених компілятором, в текстовому редакторові з подальшою перетрансляцією;

  • створення і збереження бібліотек часто використовуваних об'єктних модулів за допомогою програми lib51.ехе;

  • скріплення отриманих переміщуваних об'єктних модулів в абсолютний модуль і розміщення змінних в пам'яті мікроконтролера за допомогою редактора зв'язків bl51.exe;

  • створення програми, записуваної в ПЗП мікроконтролера (завантажуваний модуль) в hex форматі, за допомогою програми oh.exe;

  • перевірка отриманої програми за допомогою символьного відладчика або інших програмних або апаратних засобів.

Файл, в якому зберігається програма, написана на мові C51 (початковий текст програми), називається початковим модулем. Для початкового тексту програми прийнято використовувати розширення файлу: '*.c'. Початковий текст програми можна написати, використовуючи будь-який текстовий редактор, проте набагато зручніше скористатися інтегрованим середовищем програмування, подібним keil-C. У інтегроване середовище програмування окрім текстового редактора зазвичай входять відладчик програм, менеджер проектів і засобу запуску програм-трансляторів.

У інтегрованому середовищі програмування процес трансляції початкового тексту програми проходить набагато простіше. Для отримання об'єктного модуля досить натиснути на кнопку трансляції файлу.

Готова ділянка програми, що відтранслює, зазвичай зберігається на диску у вигляді файлу, записаного в об'єктному форматі. Такий файл називається об'єктним модулем. Отримати объектный модуль можна, вказавши ім'я початкового модуля програми в якості параметра програми-транслятора в DOS рядку або рядку командного файлу, як це показано в наступному прикладі:

c51.exe modul.c

В даному прикладі в результаті трансляції початкового тексту програми, що міститься у файлі modul.c буде отриманий об'єктний модуль, який буде записаний у файл з ім'ям modul.obj. Як показано на малюнку 1, об'єктний модуль не може бути завантажений в пам'ять програм мікроконтролера. У пам'ять мікроконтролера завантажується виконуваний модуль.

Програма, яка може бути виконана мікроконтролером, виходить після з'єднання об'єктних модулів в єдиний виконуваний модуль. Отримати исполняемый модуль програми можна, вказавши всі імена об'єктних модулів програми в якості параметров програми редактора зв'язків в DOS рядку або рядку командного файлу, як це показано в наступному прикладі:

bl51.exe main.obj, modul1.obj, modul2.obj

Ім'я виконуваного модуля програми за умовчанням співпадає з ім'ям першого об'єктного файлу в списку параметрів рядка запуску редактора зв'язків. Виконуваний модуль програми записується у файл без розширення. При виконанні приведеною вище як приклад командного рядка буде отриманий виконуваний модуль, який буде записаний у файл з ім'ям main.

У інтегрованому середовищі програмування процес отримання виконуваного модуля не складніший за попередній варіант. Для трансляції всього програмного проекту досить натиснути на відповідну кнопку.

Більшість програматорів, призначених для запису інформації в пам'ять програм мікроконтролерів, не можуть працювати з об'єктним форматом виконуваного модуля програми, тому для завантаження машинного коду в процесор необхідно перетворити об'єктний формат виконуваного модуля в загальноприйнятий для програматорів HEX-формат. При перетворенні форматів вся налагоджувальна інформація втрачається. Машинний код процесора в HEX-форматі називається завантажувальним модулем.

Завантажувальний модуль програми можна отримати за допомогою програми-перетворювача програми oh.exe, передавши їй в якості параметра ім'я файлу виконуваного модуля програми, наприклад:

oh.exe main

В результаті виконання цього командного рядка буде отриманий завантажувальний модуль програми, який буде записаний у файл з ім'ям main.hex.

У інтегрованому середовищі програмування завантажувальний файл виходить автоматично при виконанні трансляції програмного проекту, оскільки інтегроване середовище програмування сама виконує перераховані вище дії відповідно до настройок програмного проекту.

Відладка програм.

Після того, як програмні модулі успішно відтранслювали, розміщені за конкретними адресами і зв'язані між собою, для отладки программы можна скористатися будь-яким з методів, показаних на рис 1:

  • внутрішньосхемним емулятором

  • вбудованим програмним відладчиком

  • зовнішнім програмним відладчиком

  • відладжуваним пристроєм із записаним в пам'ять програм двійковим кодом програми

Внутрішньосхемний емулятор з відображенням змінних мови програмування на дисплеї комп'ютера надає значну допомогу при відладці програм безпосередньо на апаратурі, що розробляється. Цей метод відладки надає найбільш зручне середовище, коли можна безпосередньо у відладжуваному пристрої зупиняти програму, контролювати виконання програми безпосередньо по початковому тексту програми, стан зовнішніх портів і внутрішніх змінних, що як входять до складу мікросхеми, так і оголошених при написанні початкового тексту програми. Необхідне для відладки програм устаткування показане на рис 2.

При отладке программы з використанням внутрішньосхемного емулятора необхідно включати в об'єктні модулі символьну інформацію. Для цього використовуються директиви компілятора. (При використанні інтегрованого середовища програмування досить встановити відповідну галочку у властивостях проекту) У компіляторі мови програмування C-51 можливі наступні дії:

  • включення інформації про тип змінних для перевірки типів при скріпленні модулів. Ця ж інформація використовується внутрішньосхемним емулятором. Виключення інформації про змінних користувача може використовуватися для створення прототипів або для зменшення розміру об'єктного модуля;

  • включення або виключення таблиць символьної інформації;

  • конфігурація викликів підпрограм для забезпечення пов'язання з модулями, написаними на мові програмування ASM-51;

  • визначення бажаного змісту і формату вихідного лістингу програми. Роздрук проміжних кодів на мові асемблер після компіляції програм, написаних на мові програмування PLM-51. Включення або виключення лістингів окремих блоків початкового тексту.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]