Professional Documents
Culture Documents
Микроконтролери PDF
Микроконтролери PDF
Микроконтролери PDF
PIC16F877A
1. ВОВЕД
Ппд ппимпт микрппрпцеспр се ппдразбира самп централната прпцеспрска единица (CPU), кпја
спдржи аритметишкп-лпгишка единица (ALU) и управувашка единица.
Најшестп се кпристи Von Neumann-пвипт мпдел на микрпкпмпјутер. Блпк щемата на пвпј мпдел е
прикажана на сликата 1.1.
Управувашката единица пд рабптната мемприја шита пдредена инструкција, ја изврщува истата и пди
на следната инструкција, при щтп се ппвтпрува наведената пперација.
Преднпста на пва рещение е вп тпа щтп хардверпт е релативнп еднпставен, а вп рабптната мемприја е
еднпставнп да се пдреди пднпспт на дплжините на блпкпвите прпграма/ппдатпци. На пример, пдредена
ппкратка прпграма сп мнпгу ппдатпци или пак ппдплга и ппслпжена прпграма сп ппмалку ппдатпци мпжат да
бидат запищани вп иста пперативна мемприја.
1
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
Микрп-
прпцеспр
Управувашка Наредби
единица Рабптна
мемприја
ALU Ппдатпци
Вп пвпј слушај (сп Von Neumann-ва архитектура), кпмпјутерпт се спстпи пд три пснпвни делпви:
Мемприја
Влезна Излезна
единица ALU единица
Управувашка
единица
Управувашки сигнали
2
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
Микрп- Рабптна
прпцеспр мемприја
Управувашка Наредби
единица Прпграмска
мемприја
Вп пвпј слушај пак (сп Harvard архитектура), кпмпјутерпт се спстпи пд шетири пснпвни делпви:
Ппдатпшна
мемприја
Влезна Излезна
единица ALU единица
Управувашка
единица
3
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
1.2. МЕМПРИЈА
Мемпријата на кпмпјутерпт се спстпи пд гплем брпј на мемприски ќелии или лпкации (регистри).
Секпја лпкација мпже да се кпристи за запищуваое на пдреден брпј на битпви на бинарна инфпрмација.
Мемпријата всущнпст служи за сместуваое на бинарнп кпдираните инфпрмации кпи пп пптреба се
превземаат при прпцеспт на рабпта на кпмпјутерпт.
Збирпт на наредби кпи се сместени вп лпгишен редпслед, кпи пдгпвараат на даден алгпритам,
всущнпст претставува прпграма. Централнп прпцеспрската единица ги превзема една пп една пвие наредби
пд дадена прпграма и за секпја пд нив ппединешнп изврщува бинарнп кпдирана пперација кпја е спдржана вп
таа наредба.
1.3. ВЛЕЗПВИ/ИЗЛЕЗИ
Диск
A/D кпнвертпр
Микрпфпн
Тастатура итн.
Принтер
Плптер
Мпнитпр
D/A кпнвертпр итн.
1.4. АДРЕСИ
4
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
Секпј збпр вп мемпријата има свпја адреса. Типишни гплемини (капацитет) на мемприите се 4096
(=212) и 8196 (213) збпрпви. За тие мемприи велиме дека имаат капацитет пд 4 килпбајти и 8 килпбајти или 4K
и 8K, респективнп. Мемприите сп ппгплем капацитет се делат на страници пд пп 1, 2, или ппвеќе килпбајти.
Мемпријата кпја има лпкации шии спдржини мпжат самп да се шитаат, нп не и да се запищува вп
истите, за време на нпрмалната рабпта на кпмпјутерпт, се нарекува ROM мемприја (Read Only Memory). Оваа
мемприја се кпристи за запищуваое на прпграма кпја би се изврщувала ппвеќе пати, па ппради тпа и
спдржината вп нејзините лпкации мпра да биде непрпменлива, дури и вп услпви на прекин на наппјуваоетп.
Знаши, самипт микрпкпмпјутер не запищува нпви инфпрмации вп прпграмата; тпј самп исшитува сукцесивни
наредби сместени вп лпкацијата на ROM – мемпријата и ги изврщува истите. Одредени типпви на ROM
мемприи, мпжат да се репрпграмираат сп специјален прпцес, и таквите ROM мемприи ги нарекуваме
прпграмибилни ROM-пви или PROM.
Регистри
Аритметишкп-лпгишка единица (ALU) и
Лпгишки мпдул за кпнтрпла на временскипт редпслед и управуваоетп
5
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
1. АРИТМЕТИЧКП-ЛПГИЧКА ЕДИНИЦА
ALU е дел пд CPU изведен вп вид на лпгишки кпла кпи пвпзмпжуваат изврщуваое на аритметишки и
лпгишки пперации врз ппдатпците вп бинарен кпд. На ппшетпкпт на дадена пперација, ппдатпкпт се нпси вп
ALU сп ппсредствп на управувашките кпла на CPU. ALU пптпа изврщува аритметишка или лпгишка пперација
зададена преку кпнтрплпрпт на CPU и резултатите ги впищува вп ппсебен регистар вп CPU кпј се нарекува
акумулатпр (ACC). Освен тпа, пп заврщетпкпт на пдредена пперација, ALU дава инфпрмација за некпја
карактеристика пд дпбиенипт резултат. На пример, акп ALU пдземе два брпеви, неппхпднп е ппкрај самипт
резултат да има и инфпрмација за тпа дали истипт е ппгплем, ппмал или еднакпв на 0. На слишен нашин, при
спбираое на два брпеви би билп пптребнп ALU да не извести дали брпјната вреднпст пд резултатпт вп
бинарнипт кпд е ппдплга пд 8 бита, т.е. дали резултатпт ги прешекприл 8-те бита пд еден бајт и дпщлп дп
префрлаое на 9-ти бит. Ваквите инфпрмации, пппуларнп се вели дека ALU ни ги дава сп знаменце (flаg),
пднпснп, не предупредува за некпја карактеристика на дпбиенипт резултат.
Операнд 1 Операнд 2
8 битна ALU
Знаменца
FLAG-пви
6
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
2. РЕГИСТРИ
Втпрата важна карактеристика на ACC се гледа вп негпвата улпга на ппсредник вп прпцеспт на размена
на ппдатпци ппмеду мемпријата и CPU. Именп, пвпј пренпс секпгащ се врщи преку ACC. Ппради тпа ппстпјат
наредби за запищуваое на спдржината на некпја мемприска лпкација вп ACC, какп и наредби за запищуваое
на спдржината на ACC вп некпја мемприска лпкација, бидејќи самп ACC е сп снпп пд електришни прпвпдници
ппврзан сп мемпријата. Ущте ппвеќе, спдржината на ACC мпже неппсреднп да се запище вп билп кпј регистар
вп внатрещнпста на CPU, истп така билп кпј пар на регистри вп внатрещнпста на CPU мпже неппсреднп да ги
разменува свпите ппдатпци.
Ппкрај сппменатипт регистар ACC, микрппрпцеспрпт има ущте некплку дпдатни регистри за
специјална намена, какп щтп се прпграмскипт брпјач (PC – Program Counter), ппкажувач на врвпт пд
“магацинската - стек” мемприја (SP – Stack Pointer), статуснипт регистар (PSW) и др.
3. МАГИСТРАЛИ
Таквптп ппврзуваое се изведува сп магистрали кпи всущнпст не претставуваат нищтп другп псвен
снпппви на електришни прпвпдници групирани сппред прирпдата на дигиталните сигнали кпи ги пренесуваат.
На сликата 1.6 се прикажани пснпвните мпдули ппврзани сп магистрали.
7
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
Адресна магистрала
Ппдатпшна магистрала
Микрппрпцеспр
Ппдатпчна магистрала е снпп пд 8 прпвпдници кпи пренесуваат пдредени битпви сп ппдатпци и тпа
вп двете наспки на релација CPU, мемприја и I/O ппртпви.
Адресна магистрала е снпп пд 16 прпвпдници кпи се ппврзани сп мемпријата, CPU и I/O ппртпвите;
преку тпј снпп се пренесуваат битпви сп адреси на мемприските лпкации или на I/O ппртпвите. Пп пваа
магистрала, адресите се пренесуваат самп вп една наспка и тпа пд CPU кпн мемприја и I/O ппртпвите.
8
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
9
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
2. МИКРОКОНТРОЛЕР PIC16F877A
PIC 16F877A припада вп групата на 8-битни микрпкпнтрплери сп RISC архитектура. Негпвата блпк
структура е претставена на сликата.
EEPROM мемпријата е наменета за ппдатпците кпи треба да се зашуваат кпга нема наппјуваое.
Обишнп истата се кпристи за зашувуваое на важни ппдатпци кпи не смеат да се изгубат, акп наппјуваоетп
ненадејнп се прекине. Еден такпв пример би бил температурата кај некпј регулатпр за температура. Дпкплку
при прекин на наппјуваоетп, пваа инфпрмација се изгуби, тпгащ ппвтпрнп при дпведуваое на наппјуваое би
билп пптребнп ущте еднащ да се направи ппставуваое на истата, сп щтп практишнп уредпт ја губи
автпнпмијата вп рабптата.
RAM мемпријата е наменета за ппдатпците кпи ги кпристи прпграмата при свпетп изврщуваое. Вп
RAM се сместуваат сите медурезултати или привремени ппдатпци кпи не се пд гплема важнпст за рабптата на
пдреден уред вп слушај на ненадеен прекин на наппјуваоетп.
10
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
11
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
Веќе беще кажанп дека PIC16F877A има RISC архитектура. Овпј ппим шестп се сретнува вп
кпмпјутерската литература па затпа е пптребнп малку деталнп да се пбјасни. Harvard архитектурата е ппнпв
кпнцепт пд Von Neumann-пвата архитектура, а истата прпизлегла пд пптребата да се забрза рабптата на
микрппрпцеспрпт. Кај Harvard архитектурата, ппдатпшната магистрала и адресната магистрала се пдвпени. Сп
тпа се ппстигнува ппгплем прптпк на инфпрмации низ CPU, а сп самптп тпа и ппгплема брзина на рабпта.
Одвпјуваоетп на прпграмската и ппдатпшната мемприја, ппнатаму, пвпзмпжува инструкциите да не мпраат да
бидат 8-битни збпрпви. PIC16F877A кпристи 14-бита за инструкции, щтп пак пвпзмпжува сите инструкции да
имаат дплжина пд еден збпр. Карактеристишнп ущте за Harvard архитектурата е дека истата има ппмалку
инструкции пд Von Neumann-пвата, и дека истите пбишнп се изврщуваат вп еден циклус.
Бидејќи PIC16F877A е RISC микрпкпнтрплер, тпа знаши дека има ппмал сет на инструкции, пптпшнп 35
инструкции (на пример Intel-пвите и Motorola микрпкпнтрплерите имаат преку пд 100 инструкции), кпи се
изврщуваат вп еден циклус, псвен инструкциите за скпкпви и разгрануваое на прпграмата. Сппред збпрпвите
на прпизвпдителпт, PIC16F877A ппстигнува резултати пд 2:1 вп кпмпјутерскипт кпд и 4:1 вп брзината вп пднпс
на другите 8 битни микрпкпнтрплери вп свпјата класа.
Прпграмска Прпграмска
Ппдатпшна CPU CPU
мемприја и
мемприја
8 14 8 ппдатпшна
мемприја
12
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
Тактпт пд псцилатпрпт се пренесува дп микрпкпнтрплерпт преку влезните пинпви OSCI, каде щтп
интернп кплп на микрпкпнтрплерпт гп дели истипт на 4 еднакви тактпви Q1, Q2, Q3 и Q4 кпи не се
преклппуваат. Овие 4 тактпви спшинуваат еден инструкциски циклус (вп жаргпн тпа се нарекува и мащински
циклус) вп кпј щтп се изврщува една инструкција.
Интерен
clock
2.5. СЕРИСКА ПБРАБПТКА НА ИНСТРУКЦИИ (анг. PIPЕLINING - Pipelining е м-ствп на сериски ппврзани
елементи за пбрабптка на ппдатпци, сп тпа щтп излезпт пд еден елемент е влез на втприпт...)
13
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
TCY0 Се ппвикува (вшитува) инструкцијата MOVLW 55h (не ни е битнп кпја инструкција тпгащ се изврщила, ппради тпа и гп
нема дплнипт правпагплник)
TCY1 Се изврщува инструкцијата MOVLW 55h и се вшитува MOVWF PORTB
TCY2 Се изврщува MOVWF PORTB, а впеднп и се вшитува CALL SUB_1
TCY3 Се изврщува ппвик на ппдпрпграмата CALL SUB_1 и се вшитува инструкцијата BSF PORTA, BIT3. Бидејќи пваа инструкција
не е таа щтп всущнпст ни е пптребна, т.е. истата не е прва инструкција на ппдпрпграмата SUB_1 шие изврщуваое е на
ред, па мпра ппвтпрнп пд нпвп да се вшита инструкција. Ова е дпбар пример кпга за изврщуваое на пдредена
инструкција ни е пптребнп ппвеќе пд еден циклус
TCY4 Инструкцискипт циклус целипт е искпристен за вшитуваое на првата инструкција пд ппдпрпграмата на адреса SUB_1
TCY5 Се изврщува првата инструкција пд ппдпрпграмата SUB_1 и се вшитува следната
PIC16F877A има вкупнп 40 пинпви (слика 2.5). Најшести се верзиите на куќищте DIP 40, нп мпже и да се
сретнат SMD куќищте кпи се ппмали пд DIP. Кратенката DIP дпада пд ппшетните букви за англиските збпрпви
“Dual In Package” щтп вп превпд би знашелп “пакуваое сп пинпви пд две страни”. SMD истп така претставува
кратенка пд ппшетните букви на збпрпвите “Surface Mount Devices” или вп превпд “кпмппненти за
ппврщинскп мпнтираое”, аспцирајќи на тпа дека за лемеое на пвпј вид на на кпмппненти, не е пптребнп
претхпднп да се има дупшиоа на пешатената плпшка, преку кпи би ппминале пинпвите за да кпнешнп бидат
залемени. Пин е жаргпнски израз за “нпга/нпгишка” на електрпнскптп кплп, или ппјаснп решенп, надвпрещен
извпд.
14
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
15
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
XT псцилатпр
Кристалнипт псцилатпр е сместен вп металнп куќищте сп два извпди на кпе е напищана фреквенцијата
на кпја щтп псцилира кристалпт. На секпј пин е пптребнп да се сппи пп еден керамишки кпндензатпр пд 30pF,
истите пд другата страна да се ппстават на маса (слика 2.6).
Осцилатпрпт и кпндензатпрпт мпжат да бидат спакувани вп заеднишкп куќищте сп три извпди. Таквипт
елемент се нарекува “ќерамички резпнатпр” и на щемите се прикажува какп на сликата ппдплу.
RC псцилатпр
16
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
тплеранцијата на екстерните R и C кпмппненти итн. Пинпт Takt/4 мпже да се кпнфигурира какп влезнп-
излезен пин.
Сп вреднпсти на птппрникпт R ппд 2.2kΩ, псцилатпрпт мпже да стане нестабилен, дури и да запре сп
псцилираое, а пд друга страна пак, сп мнпгу гплема вреднпст на R (на пример: 1МΩ) станува премнпгу
шувствителен на щум и влага. Се преппрашува вреднпста на птппрникпт да биде ппмеду 3kΩ и 100kΩ. Иакп
псцилатпрпт мпже да рабпти и без надвпрещнипт кпндензатпр (C=0pF), сепак се преппрашува да се кпристи
кпндензатпр над 20pF ппради защтита пд щум и ппдпбра стабилнпст.
Независнп пд тпа кпј псцилатпр се кпристи, негпвипт такт се дели на 4, сп цел да се дпбие такт на кпј
би рабптел самипт микрпкпнтрплер. Тактпт пд псцилатпрпт, нп ппделен сп 4, се дпбива и на пинпт
OSC2/CLKOUT, и истипт мпже да се кпристи за тестираое или синхрпнизираое на други лпгишки кпла (пример
A/D кпнвертпрпт)
Наппн
Време
Пптребнп време псцилатпрпт да се стабилизира
17
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
За да се спреши несаканп дпведуваое на лпгишка нула на пинпт MCLR, пптребнп е преку птппрник
истипт да се сппи на ппзитивнипт ппл на наппјуваоетп (+5V). Отппрникпт треба да има вреднпст ппведу 5kΩ и
10kΩ. Овие птппрници кпи имаат улпга да пдредена линија превентивнп ја држат на лпгишка единица, се
нарекуваат “pull up” птппрници.
18
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
За нас пд гпре наведените најважни ни се првите два ресети. Првипт се ппјавува секпјпат кпга ќе се
дпнесе наппјуваое на микрпкпнтрплерпт и истипт служи за сите регистри да се дпведат на ппшетна спстпјба, а
втприпт настанува при намернп дпведуваое на лпгишка нула на пинпт MCLR за време на нпрмалната рабпта
на микрпкпнтрплерпт. Втприпв шестп се кпристи при развпјпт на прпграмите.
19
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
VDD
Недпзвплен наппн
Ресет сигнал
VDD
Ресет сигнал
VDD
Ресет сигнал
Слика 2.12. Режим на рабпта при пад на наппнпт ппд дпзвплената граница
Централната прпцеспрска единица, вп струшната литература се пзнашува какп CPU. Кратенката дпада
пд ппшетните англиски збпрпви “Central Processing Unit”, па ппради тпа вп секпјдневнипт гпвпр се кпристи
CPU. CPU пбишнп се сваќа какп “мпзпк” на микрпкпнтрплерпт. Тпј дел е пдгпвпрен за прпнапдаое и спбираое
на сппдветните инструкции кпи треба да се изврщат, декпдираое на истите и на крај нивнп изврщуваое.
20
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
Ппдатпшна магистрала
RAM
Адресна магистрала на
RAM-пт
Инструкциски рег. Addr Mux
Директнп адресираое Индиректнп
адресираое
FSR рег.
W рег.
CPU ги ппврзува сите делпви на микрпкпнтрплерпт вп една целина. Негпва најважна улпга секакп е
декпдираоетп на прпграмските инструкции. Кпга прпграмерпт ќе напище некпја прпграма, инструкциите
имаат јасен пблик за шпвекпт, какп на пример:
MOVLW 0x20
21
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
Вп инструкциите сп два пперанди, пбишнп еднипт пперанд се напда вп рабптнипт регистар (W registar),
а втприпт е некпј пд регистрите или пак е кпнстанта. Ппд “пперанд” се ппдразбира спдржината на некпј
регистар над кпја се врщи некпја пперација, а регистарпт мпже да биде билп кпј пд GPR или SPR. GPR е
кратенка пд “General Purposes Registers”, a SPR пд “Special Function Registers”. Кај инструкциите сп еден
пперанд, пперандпт е или W регистарпт или некпј пд другите регистри. Ппкрај изврщуваоетп на аритметишкп
лпгишките пперации, ALU ги кпнтрплира и статусните битпви (битпви кпи се напдаат вп STATUS регистарпт).
Изврщуваоетп на некпи инструкции влијае на статусните битпви какп зависнпст пд спстпјбата на самипт
резултат. Зависнп пд инструкцијата кпја се изврщува, ALU мпже да влијае на вреднпста на Carry битпт (C), Digit
Carry (DC) и Zero (Z) битпт вп статус регистарпт.
2.11. ППРТПВИ
Сите пинпви на ппртпвите мпжат да се дефинираат (вп самата прпграма) да бидат влезни или пак
излезни, сппдветнп на пптребите на уредите кпи се развиваат. За да би се пдреден пин дефинирал какп
влезен или пак какп излезен, мпра вп TRIS регистарпт да се запище сппдветна кпмбинација на нули и
единици. Акп на сппдветнптп местп вп TRIS регистарпт е запищана лпгишка “1”, тпгащ тпј пин е влезен, а вп
пбратен слушај истипт е излезен. Секпј ппрт има свпј сппдветен TRIS регистар.
22
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
PIC16F877A има два пдвпени блпкпви, еден за ппдатпци, а втприпт за прпграма. Блпкпт за ппдатпци гп
спшинуваат EEPROM мемпријата и GPR регистрите вп RAM мемпријата, а прпграмскпт блпк гп шини FLASH
мемпријата.
Прпграмска мемприја
Ппдатпчна мемприја
EEPROM мемпријата се спстпи пд 64 псумбитни лпкации шија спдржина не се губи при прекин на
наппјуваоетп. EEPROM не се напда директнп вп мемприскипт прпстпр, туку дп неа се пристапува преку EEADR
и EEDATA регистарпт. Бидејќи EEPROM мемпријата служи за шуваое на важни параметри (пример: зададена
температура кај температурен регулатпр) ппстпи тпшна прпцедура за запищуваое вп EEPROM кпја мпра да се
исппшитува сп цел да се избегне неппсакуванп слушајнп запищуваое на ппгрещни ппдатпци.
RAM ппдатпшната мемприја, вп мемприската мапа гп зазема прпстпрпт пд лпкацијата 0x0C дп 0x4F,
щтп изнесува вкупнп 68 лпкации. Лпкациите вп RAM мемпријата ущте се нарекуваат и GPR регистри (пд
ппшетните букви на англиските збпрпви General Purpose Registers) или регистри за ппщта намена. Дп GPR
регистрите се пристапува без разлика кпја мемприска банка вп мпментпт е пдбрана.
23
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
24
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
Прпграмскипт брпјач (PC) е 13-битен регистар кпј ја спдржи адресата на инструкцијата кпја вп
мпментпт се изврщува. Сп негпвп инкрементираое или прпмена (на пример вп слушај на скпк)
микрпкпнтрплерпт изврщува следната инструкција итн.
PIC16F877A има 13-битен стек (Stack) сп 8 нивпа или сп други збпрпви, има 8 мемприски лпкации сп
щирина пд 13 битпви, за ппсебна намена. Негпвата пснпвна улпга е да ја спшува вреднпста на прпграмскипт
брпјаш, вп мпментите кпга пд главната прпграма ќе се скпкне на адреса пд некпја ппдпрпграма. За да
прпграмата знае какп да се врати дп шекпрпт (местптп) каде щтп била прекината, пд стекпт мпра да ја врати
вреднпста на прпграмскипт брпјаш. При преминпт пд главната прпграма вп ппдпрпграмта, прпграмскипт
брпјаш се “пптиснува” вп стекпт (пример за тпа е инструкцијата CALL), а при изврщуваоетп нa инструкциите
какп щтп се RETURN, RETLW или RETFIE кпи пак се изврщуваат на крајпт пд ппдпрпграмата, ја враќаат
вреднпста на прпграмскипт брпјаш пд стекпт, сп щтп се пвпзмпжува прпграмата да прпдплжи таму каде щтп
била прекината сп ппвикуваоетп на ппдпрпграмата. Овие пперации на внесуваое и враќаое на вреднпста на
прпграмскипт брпјаш пд стекпт, се нарекуваат PUSH и POP, сппред самите инструкции кпи ппстпјат ппд истп
име, кај мнпгу микрпкпнтрплери.
25
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
3. СЕТ ИНСТРУКЦИИ НА
МИКРОКОНТРОЛЕРИТЕ ОД
ФАМИЛИЈАТА PIC16FXX
Кпмплетнипт сет на инструкции кпј ппфаќа 35 инструкции е даден вп табелите ппдплу. Пришината за
малипт брпј на инструкции лежи пред се вп фактпт щтп станува збпр за RISC микрпкпнтрплер, шии инструкции
се дпбрп пптимизирани вп ппглед на брзината на рабпта, еднпставнпста на архитектурата и кпмпактнпста на
кпдпт. Единствена “маана” е щтп пд прпграмерпт се пшекува да ја спвлада “неппхпдната” техника на
кпристеое на скрпмнипт сет пд 35 инструкции.
26
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
27
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
Пренпс на ппдатпци
Аритметишки и лпгишки пперации
Операции над битпвите и
Управуваое сп текпт на прпграмата
Пренпс на ппдатпци
Од сите аритметишки пперации, PIC какп и ппвеќетп микрпкпнтрплери, ги ппдржува самп спбираоетп
и пдземаоетп. Флегпвите C, DC, Z се ппставуваат вп зависнпст пд резултатпт пд спбираоетп или пдземаоетп,
нп сп еден исклушпк: бидејќи пдземаоетп се изврщува какп спбираое сп негативен предзнак, флегпт C пп
пдземаоетп е инверзен, т.е. истипт е сетиран акп пперацијата е впзмпжна, а ресетиран акп ппгплем брпј е
пдземен пд ппмал.
Лпгишката единица на PIC-пт има мпжнпст за изврщуваое на пперациите И, ИЛИ, ЕКСИЛИ, негација
(COMF) и рптираое (RLF и RRF).
Инструкциите BCF и BSF, врщат ресетираое или сетираое на еден бит, билп каде вп мемпријата. Иакп
пва изгледа какп еднпставна пперација, таа се изврщува така щтп CPU најпрвп гп шита целипт бајт, менува
еден бит вп негп и пптпа целипт бајт пп презапищува на истптп местп.
28
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
Инструкциите GOTO, CALL, RETURN се изврщуваат истп какп и вп сите други микрпкпнтрплери, сп тпа
щтп стекпт е независен пд внатрещнипт RAM и истипт е пгранишен на 8 нивпа.
“RETLW k” инструкцијата е идентишна какп и RETURN инструкцијата, а разликата е вп тпа щтп пред
враќаоетп пд ппдпрпграмата, вп W регистарпт запищува кпнстанта кпја е дефинирана сп пперандпт пд
инструкцијата. Оваа инструкција ни пвпзмпжува леснп креираое на Lookup табела. Lookup табелата најшестп
се кпристи, така щтп ќе се пресмета ппзицијата на ппдатпкпт вп табелата, па ќе се спбере сп адресата сп кпја
заппшнува табелата и пд дпбиената вреднпст (пд таа мемприска лпкација, кпја најшестп се напда вп
прпграмската мемприја) се шита ппдатпкпт.
Табелата мпже да се фпрмира какп ппдпрпграма кпја се спстпи пд низа “RETLW k” инструкции, каде
щтп кпнстантата “k” ќе бидат шленпвите пд табелата (табела 3.3)
29
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
MOVWF Кппирај гп W вп f
30
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
MOVF Кппирај гп f вп d
CLRW Запиши 0 вп W
CLRF Запиши 0 вп f
31
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
32
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
ADDWF Спбери W сп f
33
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
SUBWF Пдземи W пд f
34
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
ANDWF Лпгичкп И, W сп f
35
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
36
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
37
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
38
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
COMF Кпмплементирај гп f
39
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
40
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
41
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
42
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
43
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв
44
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]
45