Нещодавно вирішив зібрати пристрій на мікроконтролері фірми 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">> встановіть мову" Russian"І натисніть" Ok ".
Погодьтеся з твердженням " You need to 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. Удачі всім в роботі з програматором і контролерами!

Частина 1 Зміст

Вступ

1. готуємо інструменти

2. Що таке мікроконтролер і як він працює

3. Система команд PIC16F84A

4. Що таке програма і правила її складання. приклад створення

програми автоколебательного мультивибратора. Директиви.

5. Інтегроване середовище проектування MPLAB IDE і робота в ній

7. Приклад створення програми (початок)

8. Приклад створення програми (продовження)

9. Робота в симуляторі. налагодження програми

10. Як відстежити виконання програми

11. Переривання. Стек. Приклад розробки програми з відходом в переривання

12. Організація обчислюється переходу. Робота з EEPROM пам'яттю даних

13 . Прапори. Робота з прапорами. Як працює цифровий компаратор. Перенесення і позику

14. Приклад задіяння прапора З в трехбайтном суммирующем пристрої.

Циклічний зсув. операція множення

15. Введення в принцип побудови підпрограми динамічної індикації.

непряма адресація

16. перетворення двійкових чиселв двійковій-десяткові. остаточне

формування тексту підпрограми динамічної індикації

17. Принцип рахунку. Робота з таймером TMR0.

Принцип установки груп команд рахунки в текст програми

…………………………………………………………………

…………………………………………………………………

Вступ

Епіграф: програміст, який працює в асемблері, повинен бути "володарем кілець". І ще: банальність це втомлена істина.

(Зрозумієте пізніше)

У мікропроцесорну техніку люди приходять по-різному. Особисто я, до пори, до часу, не відчував особливої ​​потреби в необхідності займатися цим, поки, в один прекрасний момент, не зрозумів, що починаю Не Відповідати часу. Те, що я напрацював "до того", виявилося безнадійно застарілим, а також "смішно смотрящих" і на "тлі" сучасної елементної бази, і на "тлі" тих знань, які потрібно мати для того, щоб працювати з нею.

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

Потрібно було вибрати: або "скласти лапки" і перейти в категорію поступово "вимираючих" (дискваліфікують),

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

"Вимирає" зовсім не хотілося, так що вибір був однозначним. І тут почалося щось, що нагадувало "пересування по джунглях".

Інформаційний "бардак" в цьому "секторі" виявився настільки вражаючим, що "волосся стало дибки".

А куди діватися? "Відступати-то нікуди, позаду Москва".

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

Чого я натерпівся, знає тільки один Господь Бог: допомоги ніякої і довелося розраховувати тільки на свої сили.

Після всіх цих "митарств", виникло закономірне питання: "Це що ж таке виходить? Невже кожен, хто захоче" здійснити замах "на ці" залізяки ", повинен обов'язково" розбивати свій ніс в кров ", водячи ним по" батареї "?

Невже не можна без цього обійтися або, принаймні, зробити цей процес не настільки болючим?

Прикинув ...

Але ж, їй Богу, можна!

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

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

Принцип піднесення інформації - максимальний ступінь "разжеванность", так як "Самовчитель ..." призначений саме для початківців.

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

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

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

Я зовсім не кажу, що це просто. Попрацювати доведеться, але вже й не злякаються зовсім не варто, так

як "не такий страшний чорт, як його малюють".

Ще одна біда - недооцінка величезного значення знання і вміння застосування на практиці стратегії і тактики "мозкового штурму".

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

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

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

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

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

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

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

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

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

Окремо звертаюся до "хуліганам", "забіякам" і "задирам" (в обивательському розумінні цих слів), "мозкова діяльність" яких явно виражена.

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

В програмуванні, агресивність є гідність, а не недолік.

Тут можна, від душі, інтелектуально "помахати кулаками" (обмежень немає), плюс, "посворачівать шиї" багатьом гідним поваги "ворогам" (обмежень немає), від чого, до речі, Ви однозначно отримаєте велике задоволення.

Отже, інформація буде надаватися в певній послідовності і за принципом "від простого до складного".

Прошу дотримуватися цієї послідовності і не переходити до наступних розділів без з'ясування попередніх. Справа ця неквапливе і не потребує суєти.

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

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

1. Готуємо інструменти

Мікроконтролери (і взагалі все процесори) спочатку розуміють тільки машинні коди, тобто певну сукупність нулів та одиниць.

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

Так як, серед електронників, таких людей більшість, то на мій погляд, всі вони погодяться з такою аксіомою: машинні коди корисні в "малих дозах".

А ось коли починаються "великі дози" (складні пристрої з десятками корпусів м / схем), то "мізки починають диміти" навіть у класних електронників, що мають незвичайні здібності.

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

І справді, сил і коштів вкладається "море", а виходить щось не дуже надійне, габаритне, складне у виготовленні, енергоємне і дороге.

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

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

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

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

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

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

Щоб це "легкий рух руки" мало місце бути, "яйцеголові" придумали так звану "інтегроване середовище розробки".

Це є набір програм, в якому програміст працює з максимальним ступенем комфорту, причому, по всьому "масиву" розв'язуваних їм завдань (включаючи і складання тексту програми, і т.д. і т.п.).

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

Вивчити англійську мову.

При "в'їзді" у програмування, потрібно зробити те ж саме (завдання навіть істотно простіше).

"Проматерія" всіх мов програмування - асемблер.

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

Команди асемблера є або скороченнями англійських слів, або набором перших букв англійських словосполучень, або і тим, і іншим.

Мінімальний "джентльменський" набір асемблера для пікових становить 35 команд. Реально ж, найбільш часто, використовуються від 10 до 20 команд.

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

А вивчити асемблер дуже навіть варто через те, що він, може бути, і не дуже

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

переважно в асемблері.

Попередження: на цьому етапі в асемблер не лізти! Всьому свій час. поки досить загального уявлення(Нехай "в мізках вляжеться").

Програми для пікових складаються переважно в асемблері.

Навіть якщо програма для них і складена на мові більш високого рівня, То в кінцевому підсумку, інтегроване середовище розробки переведе всі в асемблер.

Про інтегрованому середовищі розробки (проектування): Вона виконує цілий комплекс завдань.

В її спеціалізованому текстовому редакторі, складається текст програми.

Текст програми можна записувати в ПІК, так як він "розуміє" тільки машинні коди. Отже, потрібно перетворити текст програми, з мови асемблер, в машинні коди.

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

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

За допомогою цієї програми, машинні коди програми записуються в ПІК. Наведене вище словосполучення, що використовується часто-густо, безумовно, не є вдалим.

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

Її можливості ними далеко не вичерпуються.

Інтегроване середовище розробки для пікових називається MPLAB.

Ця програма (вірніше набір програм) створена виробником піків, тобто фірмою

Microchip Technology Inc.

У Росії, представником цієї фірми є ТОВ "Мікро-Чіп", яке має в Інтернеті свій сайт технічної підтримкиросійською мовою http://www.microchip.ru (до речі, на цьому сайті, в розділі "Початківцям", є посилання на мій сайт).

Особисто я користуюся версією MPLAB 5.70.40, що і Вам раджу.

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

Головний недолік цієї версії - повільно працює (вважає), але для початківців, "реактивної" швидкості і не потрібно.

Головна її перевага - надійність роботи.

В пізніших версіях, в тій чи іншій мірі, здійснений обмін швидкості на надійність, що іноді не є добре.

Надалі, я буду орієнтуватися на версію 5.70.40.

Примітка: дистрибутив MPLAB версії 5.70.40 (і ще 2 версії) є на компактдиску. Закачувати дистрибутив MPLAB потрібно в папку з англійською назвою (папка мої документи або робочий стіл не підійдуть), інакше будете мати проблеми.

Найкраще організувати її в папці Program Files диска С.

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

Таким чином, необхідність в наявності окремого текстового редакторадля написання програми, окремої програми - асемблера для створення HEX-файлу і окремого відладчика програми (симулятора) відпадає, так як в MPLAB все це є (і навіть більше того).

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

Наступний крок - збірка програматора, Так як HEX-файл програми, створений в MPLAB, необхідно "перетворити" в машинні коди, які і будуть записуватися в ПІК (так звана "прошивка").

Нічого простіше і надійніше ніж програматор PonyProg, я, на першому етапі, запропонувати не можу, хоча, безумовно, є і інші "гідні" програматори.

Інформацію по збірці програматора PonyProg Ви знайдете в "Додатку № 1".

Слід врахувати, що програматор PonyProg найкраще працює на відносно "повільних" комп'ютерах старих випусків, так як, свого часу, програма PonyProg створювалася під них.

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

Це зовсім не є факт, але таке може бути.

саме найкраще рішення- застосування для цих цілей комп'ютера з тактовою частотоюдо 500МГц і операційної системи Windows95 / 98.

Особисто я зробив так: купив практично "за так" "древню стареньку", обдурив BIOS, простягнув до рідного вінчестера, "помічником", додатковий вінчестер на 8Гб, поставив Windows98 і включив "форсаж".

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

У моїй "старенькій" коштує майже на 2 Гб подібного роду програм, в тому числі і досить-таки "наворочених", і нічого, прекрасно працює.

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

HEX - калькулятор: файл CALC32.rar додається (папка "Програми"). Конвертер систем числення: файл BCONV32 додається (папка "Програми").

Вони настільки прості, що Ви без зусиль розберетеся, навіщо вони потрібні. Частіше за все потрібно конвертер систем числення.

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

Конвертер систем обчислення Петра Височанського: файл Hex-Dec_Bin.exe додається

(Папка "Програми")

При відкритті, програма конвертера встановлює англійську розкладку клавіатури (то, що потрібно).

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

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

Переходьте до наступного розділу.

"Самовчитель по програмуванню PIC контролерів для початківців" http://ikarab.narod.ru E-mail: [Email protected]

2. Що таке мікроконтролер, і як він працює

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

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

Іноді навіть дивуєшся: ця маленька "штучка" замінює цілу "купу старого заліза" (К555 і т.д.).

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

І справді, комп'ютер в кишеню не покладеш і від батарейок його НЕ живити. Тому, у багатьох випадках, мікроконтролерів просто немає альтернативи. "Серцем" мікроконтролера є арифметико - логічний пристрій (АЛП).

Найпростіше його представити у вигляді банального калькулятора, кнопками якого управляє програма, написана на мові асемблер (тобто, програміст).

Якщо вдуматися, то нічого особливо складного, в механізмі управління такого роду калькулятором, немає.

І справді, якщо потрібно, наприклад, скласти числаА та В, то в тексті програми спочатку задаються константи А і В, а потім дається команда "скласти".

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

Якщо Ви туди "полізе", то "з розуму зійдете", а мікроконтролер, по своїй суті, є той же самий комп'ютер, але тільки простий.

Програмісту тільки потрібно детально знати, яким саме чином "наказати железяке" зробити те, що необхідно для досягнення задуманого.

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

Цих "важелів" досить велика кількість, і природно, їх потрібно освоїти і точно знати, що саме станеться, якщо "смикнути" (дати команду на мові асемблер) за той чи інший "важіль".

Ось тут-то вже потрібно знати, як "отче наш", кожну деталь і не шкодувати на це "впізнавання" часу.

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

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

Давайте з ними розберемося і "розкладемо все по поличках".

Як приклад я буду використовувати один з найпоширеніших PIC контролерів

PIC16F84A.

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

Незалежна пам'ять.

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

Те "місце" незалежній пам'яті, куди записується програма, називається пам'яттю програм.

Обсяг пам'яті програм може бути різний. Для PIC16F84A, він становить 1024 слова. Це означає, що він призначений для роботи з програмами, обсяг яких не перевищує

Отже, ви вирішили навчитися програмувати pic-контролери. Для початку поговоримо про те, що вам для роботи з цими контролерами знадобиться.

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

Програма для контролера - це, як я вже сказав, набір машинних кодів, записаний у файлі з розширенням «hex» (), який і потрібно заливати в контролер за допомогою програматора. Ніякої іншої мови контролер не розуміє. Отже, потрібна спеціальна програма, яка буде перекладати текст програми, написаний на будь-якій мові програмування, в машинні коди. Найбільш зручними в цьому плані є інтегровані середовища розробки (IDE - integrated development environment), оскільки вони можуть не тільки здійснювати переклад тексту програми в машинний код, а й виробляти симуляцію її роботи. Причому симуляцію можна проводити покроково, при цьому можна спостерігати стан регістрів або навіть міняти їх стан за своїм бажанням. Коротше, інтегровані середовища крім, власне, компіляції (переведення в машинні коди) надають відмінні можливості для налагодження програми.

IDE, як і програматорів, існує багато. Особисто я користуюся MPLAB і вам рекомендую, по тій простій причині, що MPLAB - це IDE від самого виробника PIC-контролерів - фірми Microchip, тому має відмінну підтримку (в тому числі російською мовою, що особливо приємно). З офіційного сайту Microchip можна скачати і сам цей пакет, і докладний описпо роботі з ним. Якщо не знайшли або ламає шукати -, правда це вже не найсвіжіша версія.

В описі російською мовою про все розказано: від установки і настройки до видалення. У більшості випадків вся установка полягає в тому, щоб запустити setup і відповісти на кілька запитань, типу куди ставити драйвери тощо, від себе лише додам, що для уникнення глюків ставити пакет треба в таку папку, щоб у дорозі були тільки латинські букви ( а не в якусь, типу C: \ Програми \ PIC \ MPLAB). Взагалі, кирилицю в шляхах до файлів або в назвах файлів краще не використовувати, інакше можливі глюки.

MPLAB дозволяє писати програми на двох мовах: СІ і Асемблер. Інтернет просто ломиться від розборок СІ-шників і ассемблерщіков, які з піною біля рота доводять один одному, яка мова краще. Я відношу себе до ассемблерщікам, тому, природно, розповім чому краще саме Асемблер.

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

Програма на мові СІ (та й взагалі будь-якою мовою високого рівня) - це вже набір команд не контролера, а відповідної мови. При компіляції кожна така команда замінюється набором команд для контролера, але яким саме набором команд вона замінюється, - цього ви вже не знаєте, це знає тільки розробник мови програмування. Відповідно, неможливо зрозуміти, яким саме чином контролер виконує бажану дію.

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

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

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

Що потрібно зробити в MPLAB, щоб отримати бажану прошивку? Як я вже сказав - подробиці читайте в керівництві до IDE MPLAB, воно російською і там все зрозуміло (якщо не зрозуміло - йдемо на форум), я ж тільки коротко перелічу найголовніше і дам деякі рекомендації.

Отже, ми встановили MPLAB, хочемо написати в ньому програму для контролера і отримати готову прошивку.

Спочатку потрібно створити проект. Для кожного проекту рекомендую заводити окрему папку, тому що, по-перше, в проект може входити кілька файлів, а, по-друге, сам MPLAB створить ще кілька допоміжних файлів (* .lst, * .err, * .cod, *. bkx). Якщо кілька проектів будуть в одній папці, то легко можна заплутатися які файли до якого проекту відносяться. Коротше, створюємо для проекту нову папку, Потім запускаємо MPLAB і вибираємо меню Project -> New Project ...

У віконці, що з'явилося, в провіднику справа, вибираємо нашу папку, в лівій частині (в поле під написом File Name) Пишемо назву майбутнього проекту, наприклад my1.pjt (не забуваємо вказати розширення), і тиснемо ОК.

З'являється вікно з назвою Edit Project. Це менеджер проекту, в якому вказуються параметри проекту (які файли і бібліотеки потрібно підключити до проекту, який буде використовуватися камінь, чи буде використовуватися симуляція і багато іншого). Знаходимо поле введення з назвою Development Mode. Праворуч від цього поля є кнопочка Change ...Натискаємо.

Відкривається віконце з назвою Development Mode, В якому ми бачимо купу вкладок. на вкладці Toolsставимо галочку поруч з MPLAB SIM Simulator(Гріх для налагодження симулятором не користуватися), в поле введення Processorвибираємо контролер, з яким ми будемо працювати. на вкладці Clockвказуємо яка у нас буде частота генератора. Тиснемо ОК. На помилку і попередження не звертаємо уваги, це просто нам кажуть, що поки не можуть создать.hex (ну правильно, у нас поки і програми немає) і що при зміні налаштувань треба заново перекомпіліровать проект (так ми ще взагалі жодного разу не компілювали) .

В поле введення Language Tool Suiteвибираємо Microchip.

Натискаємо кнопку з назвою Add Node ...У вікні, в провіднику справа вибираємо папку проекту, в поле введення зліва пишемо як буде називатися файл з текстом програми на асемблері, наприклад my1.asm (не забуваємо вказувати розширення), і тиснемо ОК. Все, тепер ми підключили до проекту файл my1.asm (вказали, що текст програми буде в цьому файлі).

На цьому з Edit project закінчуємо, - натискаємо ОК.

Тепер потрібно, власне, створити файл з текстом програми (в менеджері проекту ми просто вказали, що текст буде в такому-то файлі, але фактично цей файл ще не створений). Для цього йдемо в меню Fileі вибираємо пункт New. Відкриється віконце редактора з назвою Untitled1. вибираємо меню File -> Save As ..., В провіднику справа вказуємо папку проекту, в поле введення File Nameпишемо назва файлу, яке ми вказали в менеджері проекту, тобто в нашому прикладі це буде my1.asm. Якщо все зроблено правильно, то назва віконця редактора зміниться з Untitled1 на \ шлях \ my1.asm.

От і все! Тепер залишилося тільки набрати в віконці редактора текст програми, скомпілювати проект (меню Project-> Build All) І, якщо в програмі немає помилок (що з першого разу буває дуже рідко), то в папці проекту з'явиться готова прошивка (файл з розширенням hex), яку можна заливати в контролер.

  1. Частина 1. Необхідні інструменти та програми. основи MPLAB
Нещодавно вирішив зібрати пристрій на мікроконтролері фірми 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">> встановіть мову" Russian"І натисніть" Ok ".
Погодьтеся з твердженням " You need to 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. Удачі всім в роботі з програматором і контролерами!

Обговорити статтю програмування PIC контролерів