
- •2.2 Опис ресурсів мк pic16f873
- •2.3.2 Логіка скидання
- •2.3.3 Центральний процесор (cpu)
- •2.3.6 Переривання
- •2.3.7 Система команд.
- •2.4 Огляд характеристик pic16f873
- •2.5 Структурна схема мікроконтролера
- •3.2. Асемблювання
- •4 Технічна діагностика та профілактика
- •4.1 Основні задачі технічної діагностики мікроконтролерів
- •4.2 Технічні засоби діагностики мікроконтролерів
- •5 Економічний розрахунок автомата для акваріума
- •Дані розрахунків заносимо в таблицю 1.
- •5.1.2 Стаття 2. Купівельні комплектуючі вироби
- •5.1.3 Стаття 3. Розрахунок витрат на паливо, енергію на технологічні цілі
- •5.1.4Стаття 4. Основна заробітна плата виробничих робітників
- •6.2 Охорона праці
- •6.2.1 Вимоги до виробничих приміщень
- •6.2.1. Вимоги до організації робочих місць.
- •Додаток б
2.4 Огляд характеристик pic16f873
При розробці пристроїв PIC16F873 необхідно враховуємо характеристику:
- тільки 33 простих команди;
- усі команди виконуються за один цикл(200ns), окрім команд переходу – 2 циклу;
- робоча частота 0 Гц ... 20 МГц(200 нс цикл команди);
- 12 - бітові команди;
- 8 - бітові дані;
- 512 ... 2К х 12 програмній пам'яті на кристалі EPROM;
- 25 ... 72 х 8 регістрів загального використання;
- 7 спеціальних апаратних регістрів SFR;
- дворівневий апаратний стек;
- пряма, непряма і відносна адресація даних і команд;
Периферія і порти введення/виведення:
- 12 ... 20 ліній введення-виведення з індивідуальним налаштуванням;
- 8 бітовий таймер/лічильник RTCC з 8-бітовим програмованим попереднім дільником;
- автоматичне скидання при включенні;
- таймер запуску генератора;
- Watchdog таймер WDT з власним вбудованим генератором, що забезпечує підвищену надійність;
- EPROM біт секретності для захисту коду;
- економічний режим SLEEP;
- програмовані EPROM біти для установки режиму збудження вбудованого генератора :
- RC генератор : RC
- звичайний кварцовий резонатор : XT;
- високочастотний кварцовий резонатор : HS;
- економічний низькочастотний кристал : LP.
2.5 Структурна схема мікроконтролера
Структурна схема мікроконтролера РIС16F873 зображена на рис. 2.3. Основу структури складають дві внутрішні шини: двонаправленна 8-бітна шина даних і 14-бітна шина команд. Це відповідає, як згадувалося раніше у гарвардській архітектурі, заснованої на концепції роздільних шин областей пам'яті для даних і команд. Шина даних зв'язує між собою всі основні функціональні блоки МК пам'ять даних (ОЗУ), арихфметико-логічний устрій (ALU), порти вводу/виводу ((Port A,B), регістри стану (STATUS), непрямої адресації (FSR), таймера-лічильника (RTCC/TMRO), програмного лічильника (PCL).
Рисунок 2.3 - Структурна схема мікроконтролера РIС16F873
Регістри розділяються на дві функціональні групи: спеціальні регістри і регістри загального призначення. Спеціальні регістри містять у собі регістр таймера-лічильника
реального часу (TMRO), регістр стану (STATUS), регістри вводу/виводу (I/O PORTS) і
регістр непрямої адресації (FSR).
Регістри загального призначення (Register File) використовуються програмою для збереження перемінних по розсуду користувача. У мікроконтролері існує пряма та непряма адресація всіх регістрів і осередців пам'яті. Усі спеціальні регістри і лічильник команд також відображаються на пам'ять даних.
Мікроконтролер PIC містить 8-розрядний універсальний арифметичний модуль (АЛУ) і 8-розрядний робочий регістр (W). АЛУ виконує арифметичні і булеві операції між робочим регістром і будь-яким регістром пам'яті даних. АЛУ може виконувати додавання, вирахування, поразрядний сдвиг і логічні операції. Арифметичні операції виконуються за принципом доповнення до двох, якщо не вказано інакше. У командах із двома операндами перший операнд знаходиться в робочому регістрі W, а другий операнд розташований у регістрі пам'яті даних чи константа. У командах з одним операндом операндом є регістр W чи регістр пам'яті даних.
Регістр W – не адресуємий 8-розрядний робочий регістр, що використовується в операціях АЛУ. У залежності від типу команди і результата операції АЛУ може впливати на наступні флаги стану в регістрі STATUS: перенос (С), на пів-перенос (DC), флаг нульового результату (Z). Біти C і DC працюють як біти замка і десяткового замка при виконанні команд вирахування.
До складу мікроконтролера PIC16F84 входить цілий ряд функціональних вузлів і блоків, таких, як ПЗП/ППЗП програм (EEPROM), програмний лічильник (Program Counter), стек (Stack), сторожовий таймер (Watch Dog Timer), блок генераторів тактових послідовностей і сигналів керування (Timing Generation).
Синхронізація виконання команд виконується наступним чином. Вхідний тактовий сигнал (вивід OSC1) внутрішньою схемою мікроконтролера розділяється на чотири послідовних не перекриваючихся такти Q1, Q2, Q3 і Q4. Внутрішній лічильник команд (РС) збільшується на одиницю в кожнім такті Q1, а вибірка команди з пам'яті програм відбувається з такту Q1 по Q4 (див. рис 2.4)
Рисунок 2.4 - Синхронізація виконання команд
Розташування виведень мікроконтролера РIС16F873 зображене на рисуноку 2.5.
Рисунок 2.5- Розташування виведень мікроконтролера РIС16F873
3. Програмування мікроконтроллера
3.1 Розробка алгоритму роботи пристрою терморегулятора для акваріума
Алгоритм роботи програми мікроконтролера показаний на рисунку 3.
Рисунок 3 - Алгоритм роботи програми "Терморегулятор для акваріума"
Після пуску і ініціалізації регістрів мікроконтролер виконується найтриваліша ініціалізація ЖК дисплея. Далі перевіряється стан прапора установки. Якщо установки немає, то на індикацію виводяться значення регістрів поточного режиму. Якщо йде установка, то перевіряється прапор курсора. Якщо прапор курсора встановлений, то відображається курсор. При установці індикація курсорна і значень регістрів індикації виконується по черзі..
Після індикації програма переходить до ініціалізації і причитування температури з першого датчика. Мікроконтролер приймає дев'ять біт інформації з кодом знаку температури в дев'ятому біті і значенням десятьох доль температури в першому біті. Якщо дев'ятий біт дорівнює одиниці, то знак виміряної температури негативний. При одиничному першому біті десят і дорівнюють п'ятірці. Двійкове значення прийнятої температури порівнюється зі встановленою температурою. Якщо виміряна температура більша за встановлену, то вимикається вихід, що управляє.
Інакше вихід включається. Для негативних установок при пониженній температурі вихід, що управляє, включається. Далі двійкове значення температури перекодує вдвоічно-десятиричний код для індикації.
Аналогічно першому виконуються причитування температури з другого датчика і установка другого виходу,що управляє. Оскільки виведення на індикацію займає досить багато часу(8 мс), то він виконується після шестициклів причитування температури
через 68 мс. Коли лічильник циклів дорівнюватиме нулю, перевіряється стан кнопок управління і по встановленому режиму заповнюються регістри індикації. Після цього цикл індикації і виміру температури повторюється.
Цикл виміру температури і установка виходів обох датчиків, що управляють, виконуються за 11,4 мс/Таким чином, управління кожним нагрівачем виконуватиметься мінімум один раз за період мережевої напруги.