Меню English Ukrainian російська Головна

Безкоштовна технічна бібліотека для любителів та професіоналів Безкоштовна технічна бібліотека


Модульне програмування систем управління MCS48. Енциклопедія радіоелектроніки та електротехніки

Безкоштовна технічна бібліотека

Енциклопедія радіоелектроніки та електротехніки / Мікроконтролери

Коментарі до статті Коментарі до статті

Відомо, що той самий мікроконтролер може керувати як складним технологічним обладнанням, так і побутовою кавомолкою або електронним годинником. Адаптація до конкретного об'єкта здійснюється зміною програми мікроконтролера, апаратні засоби майже не торкаються. Пропонована стаття присвячена прийомам програмування мікроконтролерів серії МСS48, які широко використовуються в системах управління різного призначення. Її основні положення справедливі й у більш сучасних приладів.

Розробка та модернізація програм управління значно полегшуються, якщо будувати їх за модульним принципом. В цьому випадку після накопичення деякого досвіду, а головне - власної бібліотеки налагоджених модулів, програмування нової системи управління (СУ) зводиться до заміни деяких модулів вже діючої та налагодженої програми та, можливо, доповнення її фрагментами, що враховують особливості конкретної системи.

Цей принцип закладено у структуру багатьох мов високого рівня (PASCAL, C++), і програміст буквально змушений його слідувати. На жаль, асемблери (у тому числі для МСS48), надаючи програмісту велику свободу вибору засобів і методів вирішення завдань, як правило, зовсім не стежать за дотриманням дисципліни програмування. Це нерідко призводить до створення настільки заплутаних програм, що навіть їхні автори не можуть через деякий час розібратися в тому, що було зроблено, не кажучи вже про використання налагоджених фрагментів в інших програмах. Свідоме дотримання загальних модульних концепцій значно полегшує та прискорює програмування мікроконтролерів. Приклад типової модульної програми для СУ наведено у таблиці. Її синтаксис відповідає табличному асемблеру ТАSМ у варіанті для мікропроцесора 8048.

Як бачимо, на початку тексту програми директивами ЕQU константам даються імена і присвоюються значення. Користуватися іменованими константами завжди краще, ніж вказувати числові значення у виконуваних командах процесора. Наприклад, витримка часу, що реалізується однією з підпрограм, що розглядаються нижче, визначається трьома числами. Вони задані константами N1, N2 та N3. Якщо потрібно змінити витримку .достатньо в операторах ЕQU вказати нові значення. В іншому випадку довелося б розшукувати у всій програмі команди з операндами, рівними цим числам, вирішувати, чи кожна з них відноситься до витримки часу, і в потрібних випадках вказувати нові значення.

Очевидно, що така робота вимагає багато часу і часто не обходиться без помилок. Особливо ускладнює її те, що в деяких командах може використовуватися не число цілком, а, наприклад, його старший чи молодший байт. АССЕМБЛЕР вже на етапі трансляції програми здатний обчислити деякі константи, зважаючи на значення інших. Цю можливість ілюструє обчислення старшого (NЗН) та молодшого (N3L) байтів числа N3.

Далі у програмі виділяють пам'ять для змінних. Роблять це тими самими директивами ЕQU, але на відміну описів констант задають не числові значення змінних, а адреси осередків пам'яті.

Модульне програмування систем керування на MCS48
(Натисніть для збільшення)

Якщо дозволяє АССЕМБЛЕР, не слід нехтувати можливістю використання макрокоманд. Кожна з них є як би новою командою, що виконує операцію, прямо не передбачену системою команд процесора. Описуючи макрокоманду, програміст дає їй ім'я (звісно, ​​що не збігається з ім'ям жодної з "справжніх" команд) і задає необхідні дії у вигляді Послідовності машинних команд. Щоразу, зустрівши макрокоманду у програмі, АССЕМБЛЕР замінить її зазначеною послідовністю. У прикладі Використовуються дві макрокоманди. Один із них пересилає вміст акумулятора в задану параметром макрокоманди осередок пам'яті даних, іншу - назад.

Після ввімкнення живлення (або подачі сигналу скидання) мікроконтролер починає виконувати програму з нульової адреси. За цією адресою зазвичай записують команду безперечного переходу на дійсну точку початку програми (у даному випадку, на мітку START). Це необхідно тому, що апаратні переривання завжди передають управління за фіксованими адресами 3 і 7 (у мікроконтролерів інших типів адреси можуть бути іншими, але все одно вони розташовані на початку пам'яті програм). Команди безумовного переходу на підпрограми обслуговування відповідних переривань, що знаходяться за цими адресами, основна програма повинна "обійти".

Наступний етап - встановлення режимів роботи контролера (наприклад, вибір банків пам'яті та регістрів), ініціалізація змінних та зовнішніх пристроїв. Типова помилка програмістів-початківців - вважати, що відразу після пуску програми змінні вже мають якісь певні значення. Зміцненню цієї помилки сприяє передбачене в деяких мовах високого рівня (наприклад, BASIC) автоматичне присвоєння всім змінним початкового нульового значення. У програмах мовою АССЕМБЛЕРа (і багатьох інших мовах) програміст повинен сам подбати, щоб до першого зчитування значення змінної у відведений їй осередок пам'яті вже було щось записано. Хороший стиль програмування вимагає, щоб початкові значення були присвоєні змінним на початку роботи програми. В цьому випадку це робить підпрограма 1INIT.

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

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

Таким чином, програма, побудована за модульним принципом, представляє собою набір підпрограм. Якщо нова СУ застосована, наприклад, інша клавіатура, досить буде замінити підпрограму BUTT. Для того щоб така заміна була простою і безболісною, слід виробити і завжди дотримуватись певних правил. Підпрограми, по можливості, повинні зберігати вміст всіх регістрів контролера, отримувати вихідні дані і видавати результати роботи в одних і тих же регістрах і осередках пам'яті, користуватися одним і тим самим кодуванням символів і т.п.

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

Розглянемо деякі особливості підпрограм. I NCREM і DЕСRЕМ виконують необхідні операції операції збільшення або зменшення на задану величину 16-розрядного двійкового числа (його старший і молодший байти знаходяться відповідно в регістрах R6 і R5). Константи, що задають величину збільшення, описані на початку програми.

Так як будь-який мікроконтролер працює значно швидше за технологічне обладнання, дуже важливо вміти організовувати в програмі витримку часу. У цьому випадку використано внутрішній лічильник/таймер процесора. Він має обмежену ємність і переповнюється за час, що вимірюється мілісекундами. Кожне переповнення генерує запит переривання. Підпрограма обслуговування переривань від таймера (TIME) підраховує їх і при досягненні заданого числа надає поодиноке значення прапору закінчення часу FLT. Всім підпрограмам, робота яких залежить від часу, залишається аналізувати стан цього прапора. Так вдається реалізувати витримки за кілька секунд і навіть хвилин.

Для того щоб почати відлік нового інтервалу, необхідно занести вихідні значення до робочих осередків підпрограми TIME і включити таймер. Підпрограма SET2М, наприклад, визначає витримку часу, рівну 2 хв. Розрахунок вихідних значень має кілька тонкощів.

Відомо, що в мікроконтролерах серії МСS48 на вхід внутрішнього лічильника/таймера імпульси надходять із частотою, у 480 разів меншою за частоту кварцового генератора. Наприклад, при частоті кварцового резонатора 7 МГц число, записане в лічильник, змінюється кожні 480/7000000 = 0,00006857 = 68,57 мкс. Так що лічильник переповниться (і буде сформований запит переривання) через 68,57-(256-N1) мкс, де N1-число, спочатку записане в лічильник. Якщо щоразу починати новий рахунок із цього числа, то за 0,1 с (мінімальна витримка часу) відбудеться N2 = 0,1 · 7000000/[1480 · (256-N1)] переповнень.

Очевидно, ту саму витримку часу можна отримати при різних N1 і N2, але так як ці числа не можуть бути дробовими, вона буде реалізована з деякою помилкою. Завдання полягає у підборі такої пари значень, у яких помилка мінімальна. У цьому випадку найкращий варіант N1 = 13, N2 = 6, Витримка часу, що дорівнює 2 хв, виходить повторенням описаної процедури N3 = 1200 разів.

Часто буває необхідно в різних режимах роботи програми застосовувати різні процедури обробки тих самих апаратних переривань. Один із способів зробити це ілюструє підпрограму INTER. Вона аналізує код типу переривання, занесений основною програмою в комірку INTT, і в залежності від його значення викликає одну з підпрограм обслуговування переривання ISR1 або ISR2. Зауважимо, що обидві вони закінчуються командою RET, а не RETR. Число варіантів обробки неважко збільшити і навіть зробити так, що при деякому значенні коду викликатимуться одна за одною різні підпрограми.

Не обов'язково записувати всі необхідні підпрограми в текстовий файл основної програми. Налагоджені та неодноразово використані в різних програмах модулі можуть знаходитись в окремих файлах та підключатися до основної програми директивами INCLUDE. Кожен файл може містити одну або кілька підпрограм. Недолік такого способу полягає в тому, що імена змінних, констант і міток у всіх модулях не повинні повторюватися. Позбавлений цього дефекту метод роздільної трансляції модулів з наступним об'єднанням їх на рівні об'єктного коду, на жаль, не підтримується асемблером ТАSМ.

Автор: Д.Рижов, м.Володимир

Дивіться інші статті розділу Мікроконтролери.

Читайте та пишіть корисні коментарі до цієї статті.

<< Назад

Останні новини науки та техніки, новинки електроніки:

Запрацювала найвища у світі астрономічна обсерваторія 04.05.2024

Дослідження космосу та її таємниць - це завдання, яка привертає увагу астрономів з усього світу. У свіжому повітрі високих гір, далеко від міських світлових забруднень, зірки та планети розкривають свої секрети з більшою ясністю. Відкривається нова сторінка в історії астрономії із відкриттям найвищої у світі астрономічної обсерваторії – Атакамської обсерваторії Токійського університету. Атакамська обсерваторія, розташована на висоті 5640 метрів над рівнем моря, відкриває нові можливості для астрономів у вивченні космосу. Це місце стало найвищим для розміщення наземного телескопа, надаючи дослідникам унікальний інструмент вивчення інфрачервоних хвиль у Всесвіті. Хоча висотне розташування забезпечує більш чисте небо та менший вплив атмосфери на спостереження, будівництво обсерваторії на високій горі є величезними труднощами та викликами. Однак, незважаючи на складнощі, нова обсерваторія відкриває перед астрономами широкі перспективи для дослідження. ...>>

Управління об'єктами за допомогою повітряних потоків 04.05.2024

Розвиток робототехніки продовжує відкривати перед нами нові перспективи у сфері автоматизації та управління різними об'єктами. Нещодавно фінські вчені представили інноваційний підхід до управління роботами-гуманоїдами із використанням повітряних потоків. Цей метод обіцяє революціонізувати способи маніпулювання предметами та відкрити нові горизонти у сфері робототехніки. Ідея управління об'єктами за допомогою повітряних потоків не є новою, проте донедавна реалізація подібних концепцій залишалася складним завданням. Фінські дослідники розробили інноваційний метод, який дозволяє роботам маніпулювати предметами, використовуючи спеціальні повітряні струмені як "повітряні пальці". Алгоритм управління повітряними потоками, розроблений командою фахівців, ґрунтується на ретельному вивченні руху об'єктів у потоці повітря. Система керування струменем повітря, що здійснюється за допомогою спеціальних моторів, дозволяє спрямовувати об'єкти, не вдаючись до фізичного. ...>>

Породисті собаки хворіють не частіше, ніж безпородні 03.05.2024

Турбота про здоров'я наших вихованців – це важливий аспект життя кожного власника собаки. Однак існує поширене припущення про те, що породисті собаки більш схильні до захворювань у порівнянні зі змішаними. Нові дослідження, проведені вченими з Техаської школи ветеринарної медицини та біомедичних наук, дають новий погляд на це питання. Дослідження, проведене в рамках Dog Aging Project (DAP), що охопило понад 27 000 собак-компаньйонів, виявило, що чистокровні та змішані собаки в цілому однаково часто стикаються з різними захворюваннями. Незважаючи на те, що деякі породи можуть бути більш схильні до певних захворювань, загальна частота діагнозів у обох груп практично не відрізняється. Головний ветеринарний лікар Dog Aging Project, доктор Кейт Криві, зазначає, що існує кілька добре відомих захворювань, що частіше зустрічаються у певних порід собак, що підтримує думку про те, що чистокровні собаки більш схильні до хвороб. ...>>

Випадкова новина з Архіву

Довголітня акуля дружба 31.01.2024

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

Дослідження поведінки акул розширює наше розуміння соціальних взаємодій у світі морських хижаків. Розуміння динаміки спільноти акул може допомогти у захисті та збереженні морських екосистем.

Акули, відомі своєю агресивністю, зустрічаються у невеликих спільнотах після полювання та підтримують довгострокові зв'язки один з одним, утворюючи складні соціальні структури.

Дослідження під керівництвом Янніса Папастамат'ю досліджувало поведінку темноперих сірих акул поблизу атола Пальміра в Індійському океані. За допомогою мережі з 65 мікрофонів вчені відстежували пересування акул, виявляючи їх індивідуальні уподобання та соціальні взаємодії.

Результати дослідження показали, що акули утворюють стійкі "компанії" та демонструють переваги до певних партнерів у суспільстві. Деякі особини зберігають зв'язки роками, зустрічаючись на базі після полювання.

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

Інші цікаві новини:

▪ Прилад для вимірювання характеристик діелектричних та магнітних матеріалів

▪ Гоночна машина майбутнього

▪ Дверцята у світ снів

▪ Температурний датчик TMP117

▪ Пізня вечеря шкодить пам'яті

Стрічка новин науки та техніки, новинок електроніки

 

Цікаві матеріали Безкоштовної технічної бібліотеки:

▪ розділ сайту Досліди з хімії. Добірка статей

▪ стаття Юнкер Шмідт із пістолета хоче застрелитися. Крилатий вислів

▪ стаття Чому курйози автоматичного виправлення орфографії називають ефектом Купертіно? Детальна відповідь

▪ стаття Офіціант. Посадова інструкція

▪ стаття Коаксіальна головка в гучномовці центрального каналу. Енциклопедія радіоелектроніки та електротехніки

▪ стаття Зворотний перетворювач напруги. Енциклопедія радіоелектроніки та електротехніки

Залишіть свій коментар до цієї статті:

ім'я:


E-mail (не обов'язково):


коментар:





All languages ​​of this page

Головна сторінка | Бібліотека | Статті | Карта сайту | Відгуки про сайт

www.diagram.com.ua

www.diagram.com.ua
2000-2024