Програмування pic мікроконтролерів на сі. Самовчитель із програмування PIC контролерів для початківців (Е.А. Корабельников, 2008). Установка Сі компілятора MPLAB

Нарешті сьогодні знайшовся час познайомити вас з ще одним сімейством мікроконтролерів - це мікроконтролери. PIC.

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

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

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

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

Наприклад, ті контролери AVR, з якими ми досі працюємо, є 8-бітними, а контролери STM, які ми вивчаємо, — 32-бітними.

Ось і контролери PIC також діляться за бітністю.

Перша лінійка- Це 8-бітні контролери PIC. Назва їх моделей починається з префікса PIC10/PIC12/PIC16.

Ця лінійка також ділиться на 3 сімейства.

1. BASELINE- Ця архітектура присутня у контролерів PIC10. Від потужнішої серії вона відрізняється кількістю висновків (від 6 до 28), дешевизною.

2. MID-RANGE- дану архітектуру мають ядра мікроконтролерів PIC12/PIC16. Кількість висновків у цій серії збільшено (від 6 до 64), коштують вони дещо дорожче, зате мають, крім 35 машинних інструкцій, що підтримуються серією BASELINE, ще 14 додаткових інструкцій (оптимізованих під компілятор мови C). Також у даної серії продуктивність збільшена на 50%, вони мають більш глибокий і покращений апаратний стек, збільшений обсяг пам'яті та деякі інші принади, з якими ми познайомимося надалі, оскільки, швидше за все, ми з даної серії і почнемо процес вивчення програмування мікроконтролерів PIC.

3. 8-бітові мікроконтролери PIC18— це покращена серія контролерів, тут на борту багато іншої периферії, кількість висновків від 18 до 100, продуктивність 16 MIPS, підтримка технології NanoWatt, наявність генератора, що програмується.

Друга лінійка- це 16-бітові контролери PIC. Вони мають префікс PIC24F та PIC24H. Це вже потужніші контролери. На відміну від першої лінійки, машинна команда виконується вже не за 4 такти генератора, а за 2. Також периферія ще більш розширена за різновидами шин, прямий доступ до пам'яті DMA (PIC24H), розширений набір інструкцій. Також є багато інших особливостей.

Третя лінійка- Це 32-бітові контролери. Префікс вони вже PIC32. Частота тактування таких контролерів до 120 МГц, а нова серія MZ — до 200 і навіть вище. У мене, наприклад, є налагоджувальна плата, на якій влаштований контролер PIC32MZ2048EFH064, у якого тактова частота становить 252 мегагерці. Також тут ще більша продуктивність ядра. Дане сімейство побудоване на ядрі MIPS32®, яке також, крім високої продуктивності, відрізняється ще й низьким споживанням енергії.

Втім, ось такі короткі параметри існуючих зараз контролерів PIC. Якщо брати за найменуванням, то найменувань дуже багато, на будь-який, так би мовити, смак.

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

Давайте трохи розберемося з організацією пам'яті у контролерах PIC. Так як ми почнемо вивчення сімейства PIC з більш простих 8-бітових (принцип від простого - до складного не скасовував ніхто), то і організацію пам'яті ми подивимося у даної серії.

Спочатку підтримаємо блок-схему контролера на прикладі МК PIC16F84A(натисніть на зображення для збільшення зображення)

У лівому верхньому кутку відразу впадає у вічі модуль пам'яті FLASH, у якій зазвичай зберігається програма контролера (прошивка). А у правому верхньому кутку ми бачимо пам'ять EEPROM, яка вже ісользується для зберігання даних. Ці два види пам'яті є енергонезалежними і після вимкнення та скидання контролера не стираються. Але ця пам'ять не є швидкою, тому код при старті програми розподіляється вже в пам'ять RAM (ОЗУ), яка вже є швидкодією та призначена для функціонування контролера під час роботи. Тому цю пам'ять ми вже розглянемо трохи докладніше.

Оперативна пам'ять контролера PIC поділяється на пам'ять програм та пам'ять даних.

Ось так організовано пам'ять програм у контролера PIC16F84A

Мікроконтролери цієї серії мають лічильник команд, здатний адресувати 8К х 14 слів пам'яті програм і 14-розрядну шину даних пам'яті програм. Вся пам'ять програм розділена на 4 сторінки по 2 кілослови кожна (0000h-07FFh, 0800h-0FFFh, 1000h-17FFh, 1800h-1FFFh). Ну це загальна інформація, тому ті контролери, у яких пам'ять невелика переміщення між цими сторінками призведе до циклічної адресації. Тому обсяг пам'яті того контролера, який хочемо програмувати, ми повинні знати твердо. У випадку пам'ять програм складається з лічильника команд, стека кількох рівнів, пам'ять для зберігання векторів переривань, і навіть внутрішньої пам'яті програм.

Також трохи познайомимося з організацією оперативної пам'яті, відведеної під зберігання даних.

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

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

Регістри загального призначення (GPR) — це осередки пам'яті, які мають лише адреси та призначені для зберігання будь-яких даних.

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

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

Відповідно, у кожного контролера крім пам'яті існує багато чого ще цікавого, зокрема порти вводу-виводу. Наші контролери PIC також не виняток. Подивимося призначення ніжок контролера PIC16F84A

У даного контролера два порти - порт A і порт B. З порту A назовні виведено 5 ніжок - RA0-RA4, а з порту B - всі 8 ніжок RB0-RB7.

Також ніжки портів можуть мати й інше призначення залежно від того, як ми їх налаштуємо. Нарімер ніжка 6 або RB0 може будь-якої миті перетворитися на ніжку для захоплення зовнішніх переривань, а ніжка 3 або RA4 - стати ніжкою для тактування таймера від зовнішнього генератора.

Тактування МК PIC може здійснюватися як від зовнішнього генератора, так і від кварцового резонатора, від внутрішнього резистора, а також існує ще кілька варіантів, які підтримують не всі контролери даного сімейства. Насправді зазвичай використовується тактування від кварцового резонатора. Швидше за все, ми також наслідуємо цю традицію в наших подальших заняттях.

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

Дивитись ВІДЕОУРОК (натисніть на картинку)

Post Views: 9 304



  • тактова частота – 20 МГц
  • 4 повноцінні 8-ми бітні порти вводу/виводу
  • послідовний та паралельний порт
  • шина I2C
  • кілька таймерів
  • модулі порівняння, компаратори
  • модуль широтно-імпульсної модуляції (ШІМ)
  • 10-ти розрядний АЦП

МК цей найпоширеніший і у роздрібній продажі зустрічається часто. Якщо Ви в Москві, то Вам дорога в "Чіп і Діп" - там його можна придбати приблизно за 350 руб. Настійно рекомендую купувати його в DIP корпусі (широкому), благо такий є. Для початкових дослідів та перевірок це найкращий варіант. Якщо Ви раптом придбаєте його в корпусі PLCC, то буде ціла купа проблем з його використанням - крок плоских висновків 1.27 мм не найзручніший варіант.

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

Запускаємо програму MPLAB (яку встановили у попередніх статтях). Вибираємо пункт меню Project -> Project Wizard. У вікні натискаємо Далі.

У списку доступних МК вибираємо PIC16F877. Натискаємо Далі.

Тут треба вибрати компілятор, який оброблятиме код нашої програми. Обов'язково треба вибрати пункт HI-TECH PICC Toolsuiteу списку, що випадає Active Toolsuite. Це той самий компілятор мови Сі, який ми встановили у минулій зграї. Натискаємо Далі.

Вкажіть ім'я проекту, наприклад, TestPICта вкажіть директорію проекту. Тут є дві хитрощі. Перше, MPLAB не створюють саму окрему папку для проекту і розмістить всі файли прямо в тій директорії, яку Ви вказали. Друге і, мабуть, найголовніше - MPLAB не розуміє російських букв у назві шляху. Проект він створить, але під час роботи програми, особливо при збереженні та відкритті файлів, виникнуть такі "глюки" що довго будете голову ламати в чому справа. Тому в дорозі до папки проекту не повинні траплятися російські назви. Натискаємо Далі.

Тут можна додати до проекту якісь готові файли, але нам поки що така можливість не потрібна. Тиснемо Далі.

Тут я думаю все зрозуміло. Натискаємо Готово.

Заготівлю проекту зробили, але він поки що порожній. Натискаємо File -> New. З'явиться нове вікно із заголовком Untitled. Далі вибираємо File -> Save As.... Вкажіть ім'я файлу, наприклад, TestPIC.cта перейдіть до папки проекту. Обов'язково поставте галочку Add File to Project.

Тепер поміщаємо наступний код у відкрите вікно файлу проекту TestPIC.c (весь проект цілком можна знайти у файлах до цієї статті).

#include CONFIG(0x03F72); int i=0; void main( void) ( T0IE = 0; GIE = ​​0; TRISB = 0; PORTB = 0; while(1==1) (PORTB++; for(i=0; i

Напевно, Вам цікаво, що буде результатом роботи цього коду. Відбуватиметься таке: до МК підключаються 8 світлодіодів. При включенні живлення світлодіоди почнуть блимати у вигляді "хвилі" (це краще бачити, благо залишилося немає так вже й багато). Розглянемо детальніше сам код.

Спочатку йде все знайомий оператор include, який включає заголовний файл з усіма необхідними макровизначеннями. Далі йде ще одна директива препроцесора __CONFIG, в яку віддається 16-річне число, що характеризують набір спеціальних опцій і властивостей, що характеризують роботу МК. Ми ще під час цієї статті повернемося до цього моменту. Переходимо відразу до початку функції main() - точки входу у сам виконуваний код програми. Далі слідує операція з якимось T0IE. Конктерно цей рядок означає, що потрібно заборонити переривання від таймера під час роботи МК. TOIE - це певна за допомогою #define у ​​файлі pic.h адреса спеціального регістру, що відповідає за цю операцію (і взагалі, якщо бачите в коді дивні до цього в коді не певні змінні записані у верхньому регістрі, то це, напевно, символічні імена регістрів МК) . Рядок GIE=0; - забороняє обробку будь-яких переривань глобально у всьому МК. Переривання нашого простого прикладу ми використовувати не будемо, т.к. вони нам просто не потрібні.

TRISB = 0; - означає, що порт введення/виводу BМК PIC16F877 працюватиме вихід, тобто. до нього можна тепер підключати навантаження, на якому можна підводити з МК 0 або +5В (цим навантаженням будуть світлодіоди). У наступному рядку ми поміщаємо до порту B число 0 - тобто. на всіх висновках цього порту, налаштованого на вихід, буде нульова напруга. Далі йде конструкція з оператора while, причому з таким параметром, що деякі програмісти, які звикли писати на Сі для ПК, будуть злегка здивовані - адже це, мовляв, нескінченний цикл, програма зависне. Але нам саме цього треба. МК неспроможна нічого робити, він має постійно щось випонять. Тому для МК робота програми в нескінченному циклі це життєва необхідність. Потім йде оператор збільшення на 1 числа, що знаходиться в порту B. Трохи пояснимо. Якщо написати PORTB = 0xFF; - то всіх висновках порту буде 1. Якщо PORTB=0x0; - на всіх 0. (я думаю, це має бути зрозумілим). Конструкція з оператора циклу for, як видно, не робить якоїсь "розумної" роботи не робить і потрібна лише для організації тимчасової затримки. Якщо цю ділянку коду прибрати, то ми просто не помічатимемо як змінюється напруга на світлодіодах (буде дуже швидко).

Що вони означають? Давайте по порядку.

  • Oscillator - HS (означає, що як тактовий генератор буде використовуватися високочастотний кварцовий резонатор)
  • WatchDog Timer - Off (спец опція, якщо вона включена, то мікроконтролер буде періодично скидатися [переходити на початок main()] щоб уникнути будь-яких зависань в МК. Нам така можливість не потрібна.)
  • Power Up Timer - On (якщо On, то МК буде перебувати у стані скидання, доки напруга живлення не досягне необхідного порогового рівня)
  • Brown Out Detect - On (скидає МК, якщо сталося падіння напруги нижче певного рівня)
  • Low Voltage Program - Disabled (у цьому випадку забороняємо використовувати низьковольтне внутрішньосхемне програмування МК, тому будемо користуватися звичайним програматором [див. наступні статті])
  • Flash Program Write - Enabled (допускаємо можливість запису у Flash пам'ять програм)
  • Data EE Read Protect - Off (дозволяємо читання даних та EEPROM пам'яті МК)
  • Code Protect - Off (відключаємо захист коду в МК. Якщо On то неможливо буде вважати програму з МК. Потрібно якщо Ви хочете захистити свою програму від спроб злому. Нам поки що така можливість не потрібна.)

Час відкомпілювати код. Запустіть Project -> Build All. При цьому почнеться компіляція проекту і з'явиться таке вікно з чудовим записом в кінці BUILD SUCCEEDED.

Тепер, якщо Ви подивіться в папку нашого проекту, то маєте побачити там файл TestPIC.hex- Підсумок всіх наших праць. У ньому міститься спеціальний код, сформований із наших писань на Сі, для завантаження на згадку МК. Щоб рухатися далі, нам потрібен програматор, за допомогою якого ми запишемо в МК нашу програму. Настав час перейти до наступної статті, де й розглядається питання виготовлення власного програматора.

© Іванов Дмитро
Квітень 2007

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

Мініатюрні PIC контролери хороші побудови перетворювачів інтерфейсів послідовної передачі, реалізації функцій «прийом – обробка – передача даних» і легких регуляторів систем автоматичного управління.

Компанія Microchip поширює MPLAB - безкоштовне інтегроване середовище редагування та налагодження програм, яке записує бінарні файли в мікроконтролери PIC через програматори.

Взаємодія MPLAB та Matlab/Simulink дозволяє розробляти програми для PIC-контролерів у середовищі Simulink – графічного моделювання та аналізу динамічних систем. У цій роботі розглядаються засоби програмування PIC контролерів: MPLAB, Matlab/Simulink та програматор PIC-KIT3 у наступних розділах.

Характеристики мініатюрного PIC контролера PIC12F629
Інтегроване середовище розробки MPLAB IDE
Підключення Matlab/Simulink до MPLAB
Підключення програматора PIC-KIT3

Характеристики мініатюрного PIC-контролера

Сімейство РIС12ххх містить контролери в мініатюрному 8-вивідному корпусі з вбудованим тактовим генератором. Контролери мають RISC-архітектуру та забезпечують виконання більшості команд процесора за один машинний цикл.

Наприклад, нижче дані характеристики недорогого компактного 8-розрядного контролера PIC12F629 з багатофункціональними портами, малим споживанням і широким діапазоном живлення.

Архітектура: RISC
Напруга живлення VDD: від 2,0 до 5,5В (< 6,5В)
Споживання:
- <1,0 мА @ 5,5В, 4МГц
- 20 мкА (тип) @ 32 кГц, 2,0В
- <1,0 мкА (тип) в режиме SLEEP@2,0В
Потужність, що розсіюється: 0,8Вт
Багатофункціональні канали введення/виводу: 6/5
Максимальний вихідний струм портів GPIO: 125мА
Струм через програмовані внутрішні підтягуючі резистори портів: ≥50 (250) ≤400 мкА @ 5,0В
Розрядність контролера: 8
Тактова частота зовнішнього генератора: 20 МГц
Тривалість машинного циклу: 200 нс
Тактова частота внутрішнього RC генератора: 4 МГц ±1%
Тривалість машинного циклу: 1мкс
FLASH пам'ять програм: 1К
Число циклів стирання/запис: ≥1000
ОЗУ пам'ять даних: 64
EEPROM пам'ять даних: 128
Число циклів стирання/запис: ≥10K (-40оС ≤TA≤ +125 оС)
Апаратні регістри спеціального призначення: 16
Список команд: 35 інструкцій, усі команди виконуються за один машинний цикл,
крім команд переходу, що виконуються за 2 цикли
Апаратний стек: 8 рівнів
Таймер/лічильник ТМR0: 8-розрядний
Таймер/лічильник ТМR1: 16-розрядний

Додаткові особливості:
Скидання живлення (POR)
Таймер скидання (PWRTтаймер очікування запуску генератора (OST
Скидання зниження напруги живлення (BOD)
Сторожовий таймер WDT
Мультиплексований висновок -MCLR
Система переривань щодо зміни рівня сигналу на входах
Індивідуально програмовані для кожного входу резистори, що підтягують.
Програмований захист входу
Режим зниженого споживання енергії SLEEP
Вибір режиму роботи тактового генератора
Внутрішньосхемне програмування ICSP із використанням двох висновків
Чотири користувальницькі ID комірки

Гранична робоча температура для виконання Е (розширений діапазон) від -40оС до +125 оС;
Температура зберігання від -65оС до +150оС.

КМОП технологія контролера забезпечує повністю статичний режим роботи, у якому зупинка тактового генератора не призводить до втрати логічних станів внутрішніх вузлів.
Мікроконтролер PIC12F629 має 6-розрядний порт введення/виведення GPIO. Один висновок GP3 порту GPIO працює лише на вхід, решту висновків можна налаштувати для роботи як на вхід так і на вихід. Кожен висновок GPIO має індивідуальний біт дозволу переривань зі зміни рівня сигналу на входах і біт включення внутрішнього резистора, що підтягує.

Інтегроване середовище розробки MPLAB IDE

MPLAB IDE - безкоштовне інтегроване середовище розробки програмного забезпечення для мікроконтролерів PIC включає засоби для створення, редагування, налагодження, трансляції та компонування програм, запису машинного коду в мікроконтролери через програматори.

Безкоштовні версії MPLAB (включно з MPLAB 8.92) зберігаються на сайті компанії Microchip у розділі «DOWNLOAD ARCHIVE».

Створення проекту

Приклад створення проекту програм PIC контролера серед MPLAB включає наступні кроки .

1. Виклик менеджера проекту.

2. Вибір типу PIC мікроконтролера.


3. Вибір компілятора, наприклад Microchip MPASM для асемблера.


4. Вибір шляху до каталогу проекту (клавіша Browse...) та введення імені проекту.

5. Підключення файлів до проекту у вікні Project Wizard → Step Four можна не виконувати. Це можна зробити пізніше, усередині активного проекту. Клавіша Next відкриває наступне вікно.

6. Завершення створення проекту (клавіша Finish).

В результаті створення проекту FirstPrMPLAB інтерфейс MPLAB набуває вигляду, показаного на Рис. 1.


Мал. 1. Інтерфейс середовища MPLAB v8.92 та шаблон проекту.

Створення файлу програми
Програму можна створити за допомогою текстового редактора. MPLAB має вбудований редактор, який забезпечує ряд переваг, наприклад, оперативний лексичний аналіз вихідного тексту, в результаті якого в тексті кольором виділяються зарезервовані слова, константи, коментарі, імена, визначені користувачем.

Створення програми в MPLAB можна виконати у наступній послідовності.

1. Відкрити редактор програм: меню → File → New. Спочатку програмі надано ім'я Untitled.

2. Набрати або скопіювати програму, наприклад, на асемблері.


Мал. 2. Приклад найпростішої програми (на асемблері) виведення сигналів через порти контролера GP0, GP1, GP2, GP4, GP5 на максимальній частоті.

Запис '1' у розряді регістру TRISIO переводить відповідний вихідний буфер в 3-е стан, у разі порт GP може працювати лише з вхід. Встановлення нуля у TRISIO налаштовує роботу порту GP на вихід.

Примітка. За специфікацією PIC12F629 порт GP3 мікроконтролера працює тільки на вхід (відповідний біт регістру TRISIO не скидається завжди знаходиться в '1').

Регістри TRISIO та GPIO знаходяться у різних банках області пам'яті. Перемикання банків виконується 5-м бітом регістру STATUS.

Будь-яка програма на асемблері починається директивою org і закінчується директивою end. Перехід goto Metka забезпечує циклічне виконання програми.

У програмі (Мал. 2) використовуються такі позначення.

Директива LIST – призначення типу контролера
Директива __CONFIG - встановлення значень бітів конфігурації контролера
Директива equ - присвоєння числового значення
Директива org 0 – початок виконання програми з адреси 0
Команда bsf - встановлює біт зазначеного регістру 1
Команда bсf - скидає біт зазначеного регістру 0
Команда movlw - записує константу в регістр W
Команда movwf - копіює вміст регістру W у вказаний регістр
Команда goto - забезпечує перехід без умови на рядок із міткою
Директива end – кінець програми

Встановлення необхідної конфігурації мікроконтролера
Конфігурація мікроконтролера PIC12F629 залежить від налаштувань слова конфігурації (2007h), які можна встановити в програмі через директиву __CONFIG.

Безпосередньо чи через вікно MPLAB: меню → Configure → Configuration Bits:

Де:

Біт 2-0- FOSC2: FOSC0. Вибір тактового генератора
111 – Зовнішній RC генератор. Підключається до виводу GP5. GP4 працює як CLKOUT
110 – Зовнішній RC генератор. Підключається до виводу GP5. GP4 працює як введення/виведення
101 – Внутрішній RC генератор 4МГц. GP5 працює як введення/виведення. GP4 - як CLKOUT
100 – Внутрішній RC генератор 4МГц. GP5 та GP4 працюють як введення/виведення
011 – EC генератор. GP4 працює як введення/виведення. GP5 - як CLKIN
010 – HC генератор. Резонатор підключається до GP4 та GP5
001 – XT генератор. Резонатор підключається до GP4 та GP5
000 – LP генератор. Резонатор підключається до GP4 та GP5

Біт 3- WDTE: налаштування сторожового таймера (Watchdog Timer)
1 - WDTE включений
0 - WDTE вимкнено

Сторожовий таймер захищає мікроконтролер від зависання – перезапускає програму через певний інтервал часу, якщо таймер не був скинутий. Період таймера встановлюється у регістрі OPTION_REG. Обнулення сторожового таймера викликається командою CLRWDT.

Біт 4- PWRTE: Дозвіл роботи таймера живлення:
1 - PWRT вимкнено
0 - PWRT включений

Таймер затримує мікроконтролер у стані скидання під час подачі живлення VDD.

Біт 5- MCLR: Вибір режиму виведення GP3/-MCLR
1 - працює як -MCLR
0 - працює як порт введення-виведення GP3

Біт 6- BODEN: Дозвіл скидання щодо зниження напруги живлення (як правило< 2.0В)
1 - дозволено скидання BOR
0 - заборонено скидання BOR автоматично вмикається таймер

При дозволі скидання BOR автоматично вмикається таймер PWRT

Біт 7- .CP: Біт захисту пам'яті програм від читання програматором
1 Захист вимкнено
0 Захист увімкнено

При вимиканні захисту вся пам'ять програм стирається

Біт 8- .CPD: Біт захисту EPROM пам'яті даних
1 Захист вимкнено
0 Захист увімкнено

Після вимкнення захисту вся інформація буде стерта

Біт 11-9- Не використовуються: Читається як '1'.

Біт 13-12- BG1: BG0. Біти калібрування скидання зі зниження харчування
00 - нижня межа калібрування
11 - верхня межа калібрування


Додавання програми до проекту

Приклад додавання програми до проекту показано на (Мал. 3).


Мал. 3. Додавання програми FirstPrMPLAB.asm до проекту FirstPrMPLAB.mcp

Компіляція

Щоб створити бінарний файл з розширенням hex для прошивки мікроконтролера, необхідно відкомпілювати проект. Запуск компіляції виконується командою меню → Project → Build All. Результати компіляції можна побачити у вікні Output (Мал. 1). Якщо в програмі немає помилок, компілятор видає повідомлення про успішну компіляцію: BUILD SUCCEEDED, завантажувальний HEX файл можна знайти в робочому каталозі:

Налагодження програми

Налагодження програми в середовищі MPLAB IDE можна виконати за допомогою апаратного емулятора MPLAB REAL ICE або програмного симулятора MPLAB SIM. Запуск останнього виконується як показано на мал. 4.


Мал. 4. Підключення до симулятора MPLAB SIM для налагодження програми.

Після запуску налагоджувача у вікні Output (Мал. 1) з'являється закладка MPLAB SIM, куди MPLAB виводить поточну інформацію відладчика. Команди відладчика (Мал. 5) після запуску стають активними.


Мал. 5. Команди відладчика.

Команди відладчика:

Run - Безперервне виконання програми до точки зупинки (Breakpoint), якщо така встановлена.
Halt - Зупинення програми на поточному етапі виконання.
Animate – Анімація безперервного виконання програми.
Step Into - Виконання кроків (дзвінки Call виконуються за один крок).
Step Over - Виконання кроків, включаючи команди викликів Call.
Reset - Початкове встановлення програми. Перехід покажчика першу команду.
Breakpoints - Відображення списку точок зупинки. Переробка списку.

Під час виконання програми по кроках поточний крок виділяється стрілкою (Мал. 6). Безперервне виконання програми зупиняється командою Halt або досягненням програми точки зупинки. Точка зупинки встановлюється/знімається у рядку програми подвійним клацанням.
Приклад програми на асемблері, яка з максимальною швидкістю змінює стан портів контролера, показаний на Рис. 6 (праворуч). Програма передає в регістр портів GPIO дані b'10101010' та b'01010101'. Оскільки в регістрі GPIO передачу даних порти контролера виконують в повному обсязі розряди, лише 0,1,2,4 і 5, то стан регістра GPIO (Рис. 6, зліва) відрізняється значеннями: b’00100010’ і b’00010101’.


Мал. 6. Стан регістрів спеціального призначення контролера на момент виконання програми (ліворуч) та програма, що виконується по кроках (праворуч).

У процесі налагодження можна спостерігати за станом регістрів, змінних, пам'яті у вікнах, що відкриваються в розділі View основного меню. У процесі налагодження можна вносити зміни до коду програми, вмісту регістрів, пам'яті, змінювати значення змінних. Після зміни коду необхідно перекомпілювати програму. Зміна вмісту регістрів, пам'яті та значення змінних (вікна розділу View: Special Function Register, File Register, EEPROM, Watch) не потребує перекомпіляції.

Вхідні сигнали портів моделі мікроконтолера можна встановити в розділі Debugger → Stimulus. Стані сигналів портів, що встановлюються, прив'язуються до часу (тактам) налагодження.

Іноді результати виконання програми в режимі налагодження не відповідають виконанню цієї програми в реальному контролері, так, наприклад, відладчик програми (Мал. 6) без інструкцій movlw 0x07 і movwf cmcon показує, що виходи GP0 і GP1 регістра GPIO не змінюються - знаходяться в нульовому стані, вміст регістра GPIO поперемінно дорівнює 0x14 і 0х20. Однак, контролер, що виконує програму без зазначених інструкцій, показує на осцилограф циклічну роботу всіх п'яти виходів: 0x15 і 0х22, включаючи GP0 і GP1 (див. Рис. 7).

Осцилограми контролера, який виконує цикли програми Мал. 6 (Metka… goto Metka) показано на Мал. 7.


Мал. 7. Осцилограми виходу GP0 (ліворуч) та GP1 (праворуч) мікроконтролера PIC12F629, що працює від внутрішнього 4МГц RC генератора. Програма (Рис. 6) формує сигнали максимальної частоти всіх виходах контролера. За період сигналів 5.3 мкс виконується 5 команд (6 машинних циклів), амплітуда сигналу GP0 на осцилограмі дорівнює 4.6В, виміряне програматором харчування контролера 4.75В.

Прошивка мікроконтролера

Для запису програми в мікроконтролер (прошивки контролера) необхідно мікроконтролер підключити до інтегрованого середовища MPLAB IDE через програматор. Організацію підключення наведено нижче в розділі «Підключення програматора PIC-KIT3».

Примітка. У контролер PIC12F629 записана заводська калібрувальна константа налаштування частоти внутрішнього тактового генератора. За потреби її можна прочитати та відновити засобами MPLAB з використанням програматора.

Команди для роботи з програматором та зміни його налаштувань знаходяться у меню MPLAB Programmer. Тип програматора в MPLAB вибирається у розділі: меню → Programmer → Select Programmer.


Мал. 8. Вибір програматора для підключення до середовища MPLAB.

Прошивка мікроконтролера через програматор запускається командою: меню → Programmer → Program. Повідомлення про успішну прошивку показано на Мал. 9.


Мал. 9. Запуск прошивки мікроконтролера та вид повідомлення про успішну прошивку.

Примітка:Під час прошивки мікроконтролера у програматора PIC-KIT3 блимає жовтий світлодіод.

Підключення MATLAB/SIMULINK до MPLAB

У системі моделювання динамічних систем Simulink (додаток до Matlab) мовою графічного програмування можна розробляти програми сімейства PIC контролерів мають АЦП/ЦАП, лічильники, таймери, ШИМ, DMA, інтерфейси UART, SPI, CAN, I2C та інших.

Приклад Simulink програми PIC контролера показано на Рис. 10.


Мал. 10. Приклад програми мовою графічного програмування для PIC контролера виконаної серед моделювання динамічних систем Simulink.

Взаємодія засобів розробки та компіляції програм для PIC контролерів Simulink показано на Рис. 11 .


Мал. 11. Структура засобів побудови адекватної моделі PIC контролера мовою графічного програмування.

Для побудови середовища розробки необхідні наступні компоненти Matlab:

Simulink
Real-Time Workshop Embedded Coder
Real-Time Workshop

І Cі компілятор компанії Microchip:

C30 для контролерів PIC24, dsPIC30 та PIC33
або C32 для контролерів серії PIC32

Встановлення компонентів Matlab

На сайті є Simulink бібліотеки (dsPIC Toolbox) для PIC контролерів та версій Matlab c R2006a по R2012a:

Для завантаження бібліотеки необхідно зареєструватися. Програми підтримують роботу 100 мікроконтролерів із серій PIC 16MC, 24F, 30F, 32MC, 33F, 56GP, 64MC, 128MC, 128GP.
Безкоштовні версії працюють з Simulink моделями PIC контролерів, що мають до 7 портів вводу-виводу.

Для встановлення dsPIC Toolbox - бібліотеки блоків PIC контролерів для Matlab/Simulink необхідно:

Завантажити dsPIC Toolbox для потрібної версії Matlab.
Розпакувати zip файл у папці, в якій будуть встановлені блоки Simulink.
Запустити Matlab.
Налаштувати поточний каталог Matlab на папку з розпакованим файлом.
Відкрити та запустити файл install_dsPIC_R2012a.m, наприклад, кнопкою меню або клавішею клавіатури.

Бібліотеки dsPIC і приклади моделей Simulink встановлюються в поточну папку Matlab (Рис. 12). Встановлені блоки для моделювання PIC контролерів доступні у розділі Embedded Target for Microchip dsPIC бібліотеки Simulink (Мал. 13).


Мал. 12. Вміст поточного каталогу після виконання install_dsPIC_R2012a.m.


Мал. 13. Блоки, установленої бібліотеки Embedded Target for Microchip dsPIC.

Для спільної компіляції моделі Simulink засобами Matlab і MPLAB необхідно прописати в змінному оточенні path Matlab з вищим пріоритетом шлях до каталогу MPLAB з файлами MplabOpenModel.m, MplabGetBuildinfo.m і getHardwareConfigs.m:

>>

Установка Сі компілятора MPLAB

Компілятори MPLAB знаходяться на сайті Microchip (Download Archive → MPLAB C Compiler for PIC24 and dsPIC DSCs). Для встановлення демонстраційної версії компілятора С30 необхідно завантажити його за посиланням PIC24/dsPIC v3.25 (Рис. 14) і запустити прийнятий файл mplabc30-v3.25-comboUpgrade.exe.


Мал. 14. Версії Сі компілятора (ліворуч) та режими його встановлення (праворуч).

Примітка. Роботу виконано з версією v3.25 компілятора С30 для PIC24/dsPIC. Перевірка показала, що наступна версія v3.30 не підтримує сумісну компіляцію моделей Matlab R2012a (dsPIC Toolbox) без помилок.

Настановний exe файл створює у розділі c:\Program Files (x86)\Microchip\ новий каталог mplabc30 з файлами:


Мал. 15. Каталоги компіляторів C30 MPLAB.

Послідовність програмування Simulink для PIC контролерів

1. Створіть робочий каталог та скопіюйте в нього *.mdl приклади з розділу example (див. мал. 12).
2. Завантажте Matlab. Налаштуйте його на робочий каталог.
3. Включіть у змінну оточення path Matlab з найвищим пріоритетом шлях до MPLAB - каталогу c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\:

>> path("c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\",path)
Примітка: Використання команди >>path без аргументів призводить до відображення списку шляхів змінної path у вікні команд (Command Window). Видалити шлях зі змінної path можна командою rmpath, наприклад:

>>rmpath(" c:\Program Files\Microchip\MPLAB IDE\Tools\MATLAB\")
4. Створіть Simulink модель для PIC контролера, використовуючи блоки бібліотеки Embedded Target for Microchip dsPIC (Рис. 13), або завантажте готову модель, наприклад, Servo_ADC.mdl.

Тип контролера, для якого розробляється модель Simulink, вибирається зі списку в блоці Master > PIC (Рис. 16, Рис. 10), який повинен бути включений до складу моделі.


Мал. 16. Вибір типу контролера у блоці Master моделі.

5. Перевірте параметри конфігурації моделі: Меню → Simulation → Configuration Parameters . У рядку введення System target file розділу Code Generation повинен бути вказаний компілятор S-функцій dspic.tlc (Мал. 17). Вибір dspic.tlc налаштовує інші параметри конфігурації моделі, включаючи крок і метод інтегрування.


Мал. 17. Вибір компілятора S-функцій dspic.tlc для моделей PIC-контролерів у розділі «основне меню → Simulation → Configuration Parameters → Code Generation».

6. Відкомпілюйте модель tmp_Servo_ADC.mdl. Запуск компілятора показано на Мал. 18.


Мал. 18. Запуск компілятора моделі Simulink.

В результаті успішної компіляції (повідомлення: ### Successful completion of build procedure for model: Servo_ADC) у поточному каталозі створюються HEX файл для прошивки PIC контролера і MCP проект середовища MPLAB (Мал. 19).


Мал. 19. Результати компіляції моделі.

Запуск моделі Matlab/Simulink виконується у вікні моделі кнопкою, умовний час моделювання встановлюється в рядку:


Управління компіляцією моделей Simulink з середовища MPLAB

Управління компіляцією моделі Simulink можна виконувати командами розділу Matlab/Simulink середовища MPLAB, наприклад, в наступному порядку.

1. Розробте модель PIC контролера в Matlab/Simulink. Збережіть модель.
2. Запустіть MPLAB.
3. Виберіть MPLAB меню → Tools → Matlab/Simulink і новий розділ з'явиться у меню.


4. У розділі Matlab/Simulink відкрийте модель Simulink, наприклад Servo_ADC, командою Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open. Команда Open запускає Matlab та відкриває модель.

5. Відкомпілюйте модель та створіть MCP проект командами Generate Codes або Generate Codes and Import Files. Переклад MDL моделі в MCP проект виконується TLC компілятор Matlab.
В результаті створюється проект MPLAB:

Зі скриптами моделі на мові Сі.

6. Відкрийте проект: меню → Project → Open → Servo_ADC.mcp (Мал. 20).


Мал. 20. Структура MCP проекту Simulink моделі Servo_ADC.mdl у середовищі MPLAB.
Проект Simulink моделі готовий для редагування, налагодження та компіляції в машинні коди контролера засобами MPLAB.

Підключення програматора PIC-KIT3

Дізнатися, які програматори записують бінарний код у конкретний мікроконтролер, можна в розділі меню → Configure → Select Device середовища MPLAB 8.92. Наприклад, програматор PIC-KIT3 не підтримує контролер PIC12C508A (Мал. 21, лівий малюнок), але працює з контролером PIC12F629 (Мал. 21, правий малюнок).


Мал. 21. Список програматорів для прошивки мікроконтролера.

Інформацію про встановлений драйвер програматора PIC-KIT3 можна запитати у менеджера пристроїв Windows (Мал. 22).


Мал. 22. Інформація про встановлений драйвер PIC-KIT3.

Схема підключення мікроконтролера PIC12F629 до програматора PIC-KIT3 показана на Рис. 23.


Мал. 23. Схема підключення мікроконтролера PIC12F629 до програматора PIC-KIT3.

Виведення PGM програматора для прошивки контролерів PIC12F629 не використовується. Наявність виведення PGM для різних типів контролерів PIC показано на Мал. 24. Виведення PGM рекомендується «притягувати» до загального дроту (GND) через резистор номіналом 1К .


Мал. 24. Висновки PGM PIC контролерів.

Індикація світлодіодів програматора Olimex PIC-KIT3 показана нижче:

Жовтий - Червоний - Стан програматора
Увімкнути - Вимкнено - Під'єднано до USB лінії
Вкл - Вкл - Взаємодія з MPLAB
Блимає - Включено постійно - Прошивка мікроконтролера

Не слід підключати живлення мікроконтролера VDD (Рис. 23) до програматора, якщо контролер запитує джерело живлення.

При живленні мікроконтролера від програматора на лінії VDD необхідно встановити робочу напругу, наприклад, 5В програмою MPLAB (Menu → Programmer → Settings → Power), як показано на Мал. 25.

Примітка. При відсутності напруги на лінії VDD MPLAB IDE видає повідомлення про помилку: PK3Err0045:


Мал. 25. Установка напруги VDD на програматор PIC-KIT3 програмою MPLAB IDE v8.92.

Якщо програматор не може встановити потрібну напругу, наприклад, 5В при його живленні від USB, в якій напруга менше 5В, MPLAB IDE видає повідомлення про помилку: PK3Err0035: Failed to get Device ID. У цьому випадку спочатку необхідно виміряти напругу програматора - рахувати її в закладці меню → Programmer → Settings → Status, а потім встановити напругу (не більше виміряного) в закладці меню → Programmer → Settings → Power.


Мал. 26. Вимірювання (ліворуч) та встановлення (праворуч) VDD напруги програматора PIC-KIT3 програмою MPLAB IDE v8.92.

Приклад MPLAB повідомлення успішного підключення мікроконтролера до програматора за командою меню → Programmer → Reconnect показано на Мал. 27.


Мал. 27. Повідомлення MPLAB про успішне підключення мікроконтролера до програматора.

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


Мал. 28. Підключення мікроконтролера у складі електронного пристрою до програматора.

Висновок

Малорозрядні PIC-контролери мають широкий діапазон живлення, низьке споживання та малі габарити. Вони програмуються мовами низького рівня. Розробка програм мовою графічного програмування Simulink з допомогою численних бібліотек значно скорочує час розробки та налагодження проти програмуванням на рівні асемблера. Розроблені для PIC-контролерів Simulink структури можна використовувати і комп'ютерного моделювання динамічних систем з участю контролерів. Однак, через надмірність коду такий підхід застосовується лише для сімейств PIC контролерів з достатніми ресурсами.
Simulink Додати теги Нещодавно вирішив зібрати пристрій на мікроконтролері фірми PIC, але з невідомих причин у мене відмовив програматор Extra-PIC. Швидше за все, згоріла мікросхема МАХ232, Таке вже було один раз. Недовго думаючи, знайшов в Інтернеті просту схему програматора, заточеного під IC-Prog і працюючу через СОМпорт.
Плату необхідно віддзеркалити під час друку. Інакше панельки доведеться паяти з боку доріжок.


Далі просвердлив отвори і почав паяти деталі. Найбільшою проблемою були стабілітрони. Стабілітрони почав шукати на платі від ЕПТ-монітора. Підписані на платі як ZD (Zener Diode). Звичайно маркування у них незрозуміле і невідомо де і як шукати. Щоб визначити, наскільки вольт стабілітрон можна зібрати просту схему.


Вольтметр досить точно покаже, на скільки вольт стабілітрон. У такий нехитрий спосіб знайшов приблизні за номіналом стабілітрони. Замість 5,6В встановив 6,2В, замість 12,6В поставив 2 стабілітрони послідовно 6,2 +6,2 = 12,4В .


Транзистор можна поставити КТ315. У себе поставив С945. Діоди теж будь-які, я випаяв усі 3 шт. з діодного мосту тієї ж плати від монітора. Номінал конденсаторів також критичний, але їх поставив за номіналом.

Трохи про червоні п'ятачки у панелек. Ці ноги взагалі не паяються у панелек. Повністю готовий девайс виглядає так:


Панельки вирішив в повному обсязі паяти, т.к. мені потрібно було прошити тільки PIC16F628А. Після того, як спаяв, потрібно налаштувати програму. Прошиватимемо ми IC-Prog. Завантажуємо програму, розпаковуємо з архіву, всі файли повинні бути обов'язково в одній папці!

1) Якщо ви використовуєте Windows NT, 2000 або XP, правою кнопкою клацніть на файлі icprog.exe. " Властивості" >> вкладка " Сумісність>> Встановіть "галочку" на " Запустити програму в режимі сумісності з:" >>
Виберіть "Windows 2000".

2) Запускаємо програму. Якщо вона вже російською - нічого не потрібно, переходьте до кроку 3 .

Якщо програма англійською, то натисніть " Settings" >> "Options" >> вкладку " Language" >> встановіть мову " Ukrainian" та натисніть "OK".
Погодьтеся із твердженням " Вам потрібно restart IC-Prog now(натисніть " Ok"). Оболонка програматора перезапуститься.

3) Тепер потрібно налаштувати програму. Клацніть " Налаштування" >> "Програматор". Перевірте установки, виберіть COM-порт, що використовується, натисніть " Ok".


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

4) Тільки для користувачів Windows NT, 2000 чи XP. Натисніть " Налаштування" >> "Опції>> виберіть вкладку " Загальні>> встановіть "галочку" на пункті " Увімк. NT/2000/XP драйвер" >> Натисніть " Ok" >> якщо драйвер до цього не був встановлений на вашій системі, у вікні, що з'явилося " Confirm" натисніть "Ok" . Драйвер встановиться, і програма перезапуститься.

5) Натисніть знову " Налаштування" >> "Опції>> виберіть вкладку " I2C>> встановіть "галочки" на пунктах: " Включити MCLR як VCC"і" Увімкнути запис блоками". Натисніть " Ok".

6) "Налаштування" >> "Опції>> виберіть вкладку " Програмування>> зніміть "галочку" з пункту: " Перевірка після програмування" та встановіть "галочку" на пункті " Перевірка під час програмування". Натисніть " Ok".


Готово тепер програма повністю готова до роботи з програматором. Підключаємо наш програматор до СОМпорту, вибираємо наш мікроконтролер у програмі, відкриваємо прошивку та програмуємо будь-які МК серії PIC. Удачі всім у роботі з програматором та контролерами!

У 2006 році виникло в мене бажання освоїти асемблер для PIC мікроконтролерів. Рішення освоювати саме PIC-і сформувалося не випадково. Для початку лише 35 команд асемблера. Запам'ятати їх можна за кілька днів застосовуючи на практиці, при написанні власної програми. Або ж просто завчити, користуючись даташитом на будь-який з PIC контролерів. Добре, що частина документації доступна російською мовою.

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

У мережі багато сайтів з мікроконтролерною тематикою, але часто ця інформація викладена у вигляді такого собі вінігрету, в якому розібратися, маючи нульовий досвід у програмуванні чіпів дуже важко.
Після запуску схеми "перший проект на мікроконтролері" - блимання світлодіодом почався судомний пошук слушної інформації. І зовсім випадково, ризикуючи по мережі у пошуках інформації за черговою схемою з журналу "Радіо" (частотомір Денисова) вийшов на сайт Євгена Корабельникова.

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

Євген - Автор з великої літери, зумів впорядкувати і перекласти в текст величезну кількість матеріалу, що читається, зробивши його зрозумілим і доступним, навіть для тих, хто ніколи раніше з програмуванням не стикався.

Якщо Вам потрібний швидкий старт та програмування на асемблері для PIC контролерів, то рекомендую сайт Євгена Олександровича.

Програмування на асемблері для

PIC мікроконтролерів

Самовчитель з програмування PIC контролерів для початківців

(Посібник з конструювання пристроїв на мікроконтролерах)

Загальні зауваження щодо стратегії "в'їзду".

"Самовчитель..." складено таким чином, що, у разі наявності якихось неясностей, що виникають після прочитання попередніх розділів, у наступних розділах, вони поступово прояснюються за рахунок додаткової інформації. На первинній стадії "в'їзду", головне - зрозуміти сенс, а решта до нього, згодом, додасться.

Вступ
1. Готуємо інструменти. Виготовлення програматора та робота з ним.
2. Що таке мікроконтролер і як він працює.
3. Система команд PIC16F84A.
4. Що таке програма та правила її складання. Приклад створення програми автоколивального мультивібратора. Директиви. Принципова схема мультивібратора
5. Інтегроване середовище проектування MPLAB IDE та робота в ньому.
6. Що далі?
7. Приклад створення програми (початок).
8. Приклад створення програми (продовження).
9. Робота у симуляторі. Налагодження програми.
10. Як відстежити виконання програми
11. Переривання. Стек. Приклад розробки програми з відходом у переривання.
12. Організація обчислюваного переходу. Робота з EEPROM пам'яттю даних.
13. Прапори. Прапори з прапорами. Як працює цифровий компаратор? Перенесення та позику.
14. Приклад залучення прапора С в трибайтному підсумовувальному пристрої. Циклічний зсув. Операція множення.
15. Введення у принцип побудови підпрограми динамічної індикації. Непряма адресація.
16. Перетворення двійкових чисел на двійково-десяткові. Остаточне формування тексту підпрограми динамічної індикації.
17. Принцип рахунку. Робота з таймером TMR0 Принцип встановлення груп команд рахунка текст програми.
Висновок