Структура тексту програми Bascom-8051

Bascom не предявляє строгих вимог до розташування функціональних модулів в тексті програми Єдина вимога (у багатьох випадках теж необовязкове) полягає в наступному: оголошення програмного обєкта має передувати його використанню, тобто бути вище по тексту Для зручності програмування краще застосовувати однакову схему побудови програм Це дуже зручно, оскільки дозволяє зберігати наступність і забезпечити більш просту трансформацію однієї програми в іншу Крім того, необхідність дісассемблірованія скомпільованих програм вимагає застосування такої структури розташування модулів, яка дає можливість полегшити пошук цікавить фрагмента Нижче, у вигляді таблиці, наведена рекомендована схема, що відповідає цим критеріям

Призначення

Коментарі

Тема

Коментарі, що містять ідентифікують відомості про програму:

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

наступного тексту

Визначити модель

процесора

Записати імя файлу, що визначає набір (імена) регістрів за допомогою

директиви $ REFILE Це можна і не робити

Модель памяті

Якщо використовується процесор з памяттю більше 2 КБ це місце для директиви

“$large”

Установка початкового

значення розподілу памяті

При необхідності директивою $ IRAMSTART = & H [adres] можна встановити початкове значення розподілу внутрішньої памяті Рекомендується тільки для дуже досвідчених користувачів

Визначення

змінних

Блок визначення змінних оформляється в порядку зростання їх довжини: Bit,

Byte, Word, Integer, Long, Single, String, Array Змінні, що визначаються у зовнішній памяті і EEPROM, оформляються окремими блоками Для зручності рекомендується застосовувати імена змінних починати з літери, що означає її тип, наприклад: B_art, B_ovr – бітові, R_dat, R_cnt – байтові, W_adr – двобайтні, I_data – двобайтні зі знаком, L_bd – чотирьохбайтові зі знаком, F_frq – числа з плаваючою точкою, S_inbuf – символьні, A_mes – масиви, P_clk, P_osnd – порти

Оголошення процедур

Визначення імен підпрограм, які будуть використовуватися як процедури

(Нові функції)

Визначення імен

портів

Блок визначення імен ліній управління всіма фізичними пристроями,

підключених до портів мікроконтролера Тут же має бути оголошений тип і спосіб підключення індикатора Якщо, щось з необхідних параметрів підключення не буде оголошено, то компілятор використовує значення, встановлені у вікнах меню Options – Compiler.

Визначення стека

При необхідності директивою $ Nosp забороняється автоматично встановлювати стек слідом за блоком змінних Застосування це директиви вимагає додавання оператора установки стека SP = & H [adress]

Скасування автоматичної

настройки периферії

При необхідності заборонити автоматичне налаштування внутрішніх пристроїв

мікроконтролера слід застосувати директиву $ NOINIT, після якої одним із способів, передбачених Bascom, проводиться завантаження параметрів всіх використовуваних керуючих регістрів

Налаштування периферії

Оголошення частоти кварцового резонатора, швидкості і режиму послідовного

каналу, режиму лічильників, режиму і тривалості сторожового таймера Якщо, що-то з необхідних параметрів конфігурації не буде оголошено, то компілятор використовує значення, встановлені у вікнах меню Options – Compiler. Дозволити лічильник, тактуючий послідовний канал При необхідності в цьому блоці здійснюють перенаправлення вводу-виводу

Налаштування переривань

Оголошення використовуваних переривань та імен програм обробки переривань

(Векторів) Завдання типу переривань і пріоритетів Дозвіл окремих переривань і загальний дозвіл Ініціалізувати і дозволити лічильники, що викликають переривання (задати початкове значення, період або частоту)

Встановити порти

Встановити вихідні лінії мікроконтролера, у вихідне і безпечний стан

для навколишнього схеми Привести підключені пристрої і початковий стан Приблизно в цьому місці компілятор вставляє програму ініціалізації символьного модуля (LCD) Щоб завершити ініціалізацію індикатора, цей

блок потрібно завершити командою Cls У цьому ж блоці можна призвести

визначення зображення додаткових символів (до оператора Cls)

Вивести перший

повідомлення

Индицировать стартове вітання, наприклад, номер версії програми,

повідомляє про те, що процесор успішно стартував

Провести

тестування

Проводиться перевірка справності чого-небудь важливого, наприклад, даних EEPROM

У разі виявленні помилки виводиться повідомлення

Ініціалізувати

змінні

Встановити значення регістрів таким чином, щоб основна програма почала

працювати правильно Тк виконання попередніх операцій може зайняти значний час, то іноді дозвіл деяких (або всіх) переривань і запуск лічильників (або одного з лічильників) переноситься в кінець даного блоку Іноді корисно очистити всю память перед застосуванням Цією операцією обнуляються всі будующие змінні

Основна програма

Головна програма та її гілки Описується побудова головного циклу програми,

в якому відбувається очікування подій, і гілки відпрацювання вступників подій

– Прихід даних їх різних джерел (АЦП, послідовного каналу, клавіатури, спрацьовуванні аварійних датчиків) За результатами обробки даних, що надходять у головній програмі активізуються програми виведення

даних (на індикатор, в послідовний канал) та управління фізичними

обєктами (включення реле, завантаження ЦАП, запис даних) Щоб надати головній програмі компактний вид, повторювані і функціонально закінчені модулі оформляються у вигляді підпрограм

Підпрограми

обробки переривань

Зазвичай невеликий за обсягом модуль для швидкої реакції на події, і тому

критичний до часу виконання і кількістю використовуваних ресурсів Програми обробки переривань, в першу чергу, пишуться на асемблері Дані з програм переривання передаються головній програмі через загальні регістри

Підпрограми і

процедури

Невеликі автономні модулі, в яких містяться неодноразово

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

Таблиці констант

Безпосередні дані, які використовуються для управління програмою або

обєктами, і для обробки даних Вони повинні бути розташовані після виконуваного коду, щоб не ускладнювати процес можливого дісассемблірованія

Мітка програми

Це також безпосередні дані, але в текстовому вигляді, містять номер

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

Джерело: МЛКуліш, ДОВІДНИК З ПРОГРАМУВАННЯ BASCOM-8051, Краснодар 2001

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*