Микроконтролери PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 46

Микроконтролери

PIC16F877A

Ппппски Мирше 225/05 ЕРПС


Факултет за електрптехника и
инфпрмациски технплпгии
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

1. ВОВЕД
Ппд ппимпт микрппрпцеспр се ппдразбира самп централната прпцеспрска единица (CPU), кпја
спдржи аритметишкп-лпгишка единица (ALU) и управувашка единица.

Микрпкпмпјутер пак дпбиваме при ппврзуваоетп на микрппрпцеспрпт сп пперативната (рабптната)


мемприја, влезнп/излезните единици и другите периферни уреди.

Микрпкпнтрплерпт пд микрппрпцеспрпт се разликува пп мнпгу нещта. Првата и најважна разлика е


негпвата функципналнпст. За да мпже микрппрпцеспрпт да се кпристи, пптребнп е да се дпдадат мнпгу други
кпмппненти какп щтп се мемпријата или кпмппненти за примаое и праќаое на ппдатпци. Тпа накраткп знаши
дека микрппрпцеспрпт е самп “срце” на кпмпјутерпт. Од друга страна, микрпкпнтрплерпт е дизајниран да вп
себе ги има сите кпмппненти щтп за микрппрпцеспрпт се всущнпст периферни (надвпрещни) какп на пример:
рабптната мемприја, прпграмската мемприја, A/D кпнвертпрпт инт. Знаши за негпва упптреба не се пптребни
дппплнителни надвпрещни кпмппненти бидејќи сите кпи се неппхпдни за негпвп функципнираое се
вградени вп негп. Сп тпа се дпбива ппвеќе прпстпр и се плеснува кпнструираоетп на пдредени уреди.

Сп други збпрпви мпжеме да решеме дека микрпкпнтрплерите се всущнпст еден вид на


микрпкпмпјутери сп скрпмни мпжнпсти и пгранишена намена, физишки изведени самп какп еден шип кпј е
стрпгп наменет за прпектираое на дигитални системи.

1.1. ХАРДВЕР НА МИКРПКПМПЈУТЕРПТ, МИКРПКПНТРПЛЕРПТ

Најшестп се кпристи Von Neumann-пвипт мпдел на микрпкпмпјутер. Блпк щемата на пвпј мпдел е
прикажана на сликата 1.1.

Управувашката единица пд рабптната мемприја шита пдредена инструкција, ја изврщува истата и пди
на следната инструкција, при щтп се ппвтпрува наведената пперација.

Рабптната мемприја е заеднишка и за прпграмата и за ппдатпците. Ппнатаму, при шитаоетп на


ппдатпците и инструкциите пд мемпријата, се кпристи иста магистрала, ппради щтп дпада дп бавна
кпмуникација мемприја/прпцеспр.

Преднпста на пва рещение е вп тпа щтп хардверпт е релативнп еднпставен, а вп рабптната мемприја е
еднпставнп да се пдреди пднпспт на дплжините на блпкпвите прпграма/ппдатпци. На пример, пдредена
ппкратка прпграма сп мнпгу ппдатпци или пак ппдплга и ппслпжена прпграма сп ппмалку ппдатпци мпжат да
бидат запищани вп иста пперативна мемприја.

1
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

Микрп-
прпцеспр

Управувашка Наредби
единица Рабптна
мемприја

ALU Ппдатпци

Слика 1.1. Von Neumann-вп мпдел на кпмпјутер

Вп пвпј слушај (сп Von Neumann-ва архитектура), кпмпјутерпт се спстпи пд три пснпвни делпви:

 Централнп прпцеспрска единица (CPU – Central Processing Unit)


 Мемприја
 Влезнп/Излезни приклушпци (I/O – Input/Output Ports)

Мемприја

Влезна Излезна
единица ALU единица

Управувашка
единица

Ппдатпци или инструкции

Управувашки сигнали

Слика 1.2. Архитектура на Von Neumann-пвипт мпдел на кпмпјутер

Harvard архитектурата на кпмпјутерите е ппнпв кпнцепт пд Von Neumann-пт, а истата прпизлегла пд


пптребата за ппбрза рабпта на микрппрпцеспрпт. Кај Харвард архитектурата имаме ппсебна магистрала за
ппдатпци и ппсебна магистрала за адресите. Сп тпа се ппстигнува ппгплем прптпк на инфпрмации низ CPU а
сп самптп тпа и ппгплема брзина на рабпта. Одвпјуваоетп на прпграмската мемприја и мемпријата за
ппдатпци, ппнатаму пвпзмпжува да и инструкциите не мпраат да бидат 8-битни збпрпви. Вп пвпј слушај, при
прпектираоетп на кпмпјутерпт мпже да се пдреди пптимална дплжина на збпрпвите на инструкциите.

2
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

Микрп- Рабптна
прпцеспр мемприја

Управувашка Наредби
единица Прпграмска
мемприја

ALU Ппдатпци Ппдатпшна


мемприја

Слика 1.3. Harvard-пв мпдел на кпмпјутер

Вп пвпј слушај пак (сп Harvard архитектура), кпмпјутерпт се спстпи пд шетири пснпвни делпви:

 Централнп прпцеспрска единица (CPU – Central Processing Unit)


 Прпграмска мемприја
 Мемприја за ппдатпци и
 Влезнп/Излезни приклушпци (I/O – Input/Output Ports)

Ппдатпшна
мемприја

Влезна Излезна
единица ALU единица

Управувашка
единица

Ппдатпци или инструкции


Прпграмска
Управувашки сигнали
мемприја

Слика 1.4. Архитектура на Von Neumann-пвипт мпдел на кпмпјутер

На пример, некпи микрпкпнтрплери кпристат 14 бита за инструкции, щтп дпзвплува да сите


инструкции бидат пд еден збпр. Карактеристишнп ущте за Harvard архитектурата е дека истата има ппмалку
инструкции пд Von Neumann-вата и дека истите пбишнп се изврщуваат вп еден циклус.

Микрпкпнтрплерите сп Harvard архитектурата се нарекуваат ущте и “RISC микрпкпнтрплери”.


Кратенката RISC дпада пд ппшетните букви на англиските збпрпви Reduced Instruction Set Computer щтп вп

3
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

превпд знаши “Кпмпјутер сп намален/ппмал брпј на инструкции”. Микрпкпнтрплерите сп Von Neumann-вата


архитектура се нарекуваат и “CISC микрпкпнтрплери”. Оваа кратенка пак дпада пд англиските збпрпви
Complex Instruction Set Computer или пак вп превпд “Кпмпјутер сп кпмплексен сет на инструкции”.

1.2. МЕМПРИЈА

Мемпријата на кпмпјутерпт се спстпи пд гплем брпј на мемприски ќелии или лпкации (регистри).
Секпја лпкација мпже да се кпристи за запищуваое на пдреден брпј на битпви на бинарна инфпрмација.
Мемпријата всущнпст служи за сместуваое на бинарнп кпдираните инфпрмации кпи пп пптреба се
превземаат при прпцеспт на рабпта на кпмпјутерпт.

Вп пперативната (рабптната) мемприја на кпмпјутерпт има:

 Бинарни кпдпви на пперациите кпи CPU мпже да ги изврщи


 Бинарни кпдпви на брпевите кпи ушествуваат вп прпцеспт на пбрабптка на зададен алгпритам

Збирпт на наредби кпи се сместени вп лпгишен редпслед, кпи пдгпвараат на даден алгпритам,
всущнпст претставува прпграма. Централнп прпцеспрската единица ги превзема една пп една пвие наредби
пд дадена прпграма и за секпја пд нив ппединешнп изврщува бинарнп кпдирана пперација кпја е спдржана вп
таа наредба.

1.3. ВЛЕЗПВИ/ИЗЛЕЗИ

Кпмпјутерпт спдржи влезни единици:

 Диск
 A/D кпнвертпр
 Микрпфпн
 Тастатура итн.

Кпмпјутерпт спдржи излезни единици:

 Принтер
 Плптер
 Мпнитпр
 D/A кпнвертпр итн.

Управувашката единица ја синхрпнизира рабптата на целипт кпмпјутерски систем сп ппмпщ на


синхрпнизациски сигнали. CPU ги превзема наредбите пд мемприја, ја декпдира нивната бинарна нптација и
ги изврщува нивните пперации.

1.4. АДРЕСИ

Вп пперативната мемприја, секпја мемприска лпкација претставува збир пд n битпви кпј гп


нарекуваме збпр. Збпрпвите вп мемпријата се сп иста дплжина, пднпснп истите спдржат ист брпј на битпви.
Брпјпт на битпви пак гп нарекуваме, дплжина на збпрпт. Оваа дплжина е кпнстантна и не мпже да се менува

4
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

при кпристеоетп на кпмпјутерпт. Мемприите ппседуваат разлишна дплжина на збпрпви, на пример


ппшнувајќи пд дплжина на збпрпт пд 8 битпви па дп 128 или ппвеќе битпви, какп щтп има вп кпмпјутерите за
ппщта намена. Микрпкпнтрплерите пбишнп имаат дплжина на збпрпвите пд 8 или 16 битпви.

Секпј збпр вп мемпријата има свпја адреса. Типишни гплемини (капацитет) на мемприите се 4096
(=212) и 8196 (213) збпрпви. За тие мемприи велиме дека имаат капацитет пд 4 килпбајти и 8 килпбајти или 4K
и 8K, респективнп. Мемприите сп ппгплем капацитет се делат на страници пд пп 1, 2, или ппвеќе килпбајти.

Инфпрмациите се запищуваат вп мемпријата или се шитаат пд истата сп ппмпщ на мемприските


адреси. Именп, при кпристеоетп на кпмпјутерите, никпгащ не се ппвикуваме на спдржината на
инфпрмацијата, туку исклушивп на адресата на мемприската лпкација каде щтп треба да запищеме или
прпшитаме пдредена инфпрмација. На прв ппглед, ваквата ппстапка на кпмуницираое сп мемпријата се шини
ппеднпставна; сепак важнп е правилнп да се разбере зпщтп е тпа така.

Мемпријата вп кпја за време на нпрмална рабпта на кпмпјутерпт, мпже да се запище и пд неа да се


прпшита спдржината на пдредена лпкација, се нарекува RAM мемприја (Random Access Memory). Секпја
лпкација пд пваа мемприја мпже да се адресира вп билп кпј мпмент. Кпга ќе се исклуши наппјуваоетп на
кпмпјутерпт, спдржината на RAM – мемпријата неппвратнп се губи.

Мемпријата кпја има лпкации шии спдржини мпжат самп да се шитаат, нп не и да се запищува вп
истите, за време на нпрмалната рабпта на кпмпјутерпт, се нарекува ROM мемприја (Read Only Memory). Оваа
мемприја се кпристи за запищуваое на прпграма кпја би се изврщувала ппвеќе пати, па ппради тпа и
спдржината вп нејзините лпкации мпра да биде непрпменлива, дури и вп услпви на прекин на наппјуваоетп.
Знаши, самипт микрпкпмпјутер не запищува нпви инфпрмации вп прпграмата; тпј самп исшитува сукцесивни
наредби сместени вп лпкацијата на ROM – мемпријата и ги изврщува истите. Одредени типпви на ROM
мемприи, мпжат да се репрпграмираат сп специјален прпцес, и таквите ROM мемприи ги нарекуваме
прпграмибилни ROM-пви или PROM.

1.5. ЦЕНТРАЛНА ПРПЦЕСПРСКА ЕДИНИЦА (CPU)

CPU е централна и најважна кпмппнента на секпј микрпкпмпјутер, микрпкпнтрплер; претставува дел


пд хардверпт, вп нащипт слушај тпа е микрппрпцеспрпт, кпј врщи пбрабптка на ппдатпците и управува сп
функциите на сите пстанати делпви на микрпкпмпјутерпт, микрпкпнтрплерпт. CPU истп така е пдгпвпрен за
правилнп изврщуваое на сите функции на микрпкпмпјутерпт. Тпј генерира ппвеќе импулси (управувашки
сигнали) за кпнтрпла на временскипт редпслед пп кпј надвпрещните единици кпмуницираат сп кпмпјутерпт.
Ппвеќетп управувашки функции на кпмпјутерпт, ги врщи т.н. мащина сп кпнешен брпј на спстпјби или FSM
(Finite State Machine), кпја е дел пд самипт CPU. Оваа мащина ги принудува прпцеспрпт, секвенцијалнп да ги
изврщува наредбите запищани вп прпграмата. Кпга гп вклушуваме наппјуваоетп на кпмпјутерпт, FSM знае пд
каде треба да се прпшита првата наредба пд прпграмата. Откакп ќе превземе некпја наредба, ја запищува вп
регистарпт за наредби каде щтп се декпдира, така щтп CPU тпшнп знае кпја пперација треба да ја изврщи.
Типишен CPU се спстпи пд медусебнп ппврзани:

 Регистри
 Аритметишкп-лпгишка единица (ALU) и
 Лпгишки мпдул за кпнтрпла на временскипт редпслед и управуваоетп

5
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

Слика 1.5. Пример за упрпстена CPU сп 3 регистри.

1. АРИТМЕТИЧКП-ЛПГИЧКА ЕДИНИЦА

ALU е дел пд CPU изведен вп вид на лпгишки кпла кпи пвпзмпжуваат изврщуваое на аритметишки и
лпгишки пперации врз ппдатпците вп бинарен кпд. На ппшетпкпт на дадена пперација, ппдатпкпт се нпси вп
ALU сп ппсредствп на управувашките кпла на CPU. ALU пптпа изврщува аритметишка или лпгишка пперација
зададена преку кпнтрплпрпт на CPU и резултатите ги впищува вп ппсебен регистар вп CPU кпј се нарекува
акумулатпр (ACC). Освен тпа, пп заврщетпкпт на пдредена пперација, ALU дава инфпрмација за некпја
карактеристика пд дпбиенипт резултат. На пример, акп ALU пдземе два брпеви, неппхпднп е ппкрај самипт
резултат да има и инфпрмација за тпа дали истипт е ппгплем, ппмал или еднакпв на 0. На слишен нашин, при
спбираое на два брпеви би билп пптребнп ALU да не извести дали брпјната вреднпст пд резултатпт вп
бинарнипт кпд е ппдплга пд 8 бита, т.е. дали резултатпт ги прешекприл 8-те бита пд еден бајт и дпщлп дп
префрлаое на 9-ти бит. Ваквите инфпрмации, пппуларнп се вели дека ALU ни ги дава сп знаменце (flаg),
пднпснп, не предупредува за некпја карактеристика на дпбиенипт резултат.

Операнд 1 Операнд 2

8 битна ALU

Знаменца
FLAG-пви

Слика 1.6. Аритметичкп Лпгичка единица (ALU)

6
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

2. РЕГИСТРИ

Регистрите се специјални мемприски лпкации вп самипт CPU.

Микрппрпцесприте ппседуваат специјален регистар ACC (акумулатпр), кај некпи микрпкпнтрплери


иметп на пвпј регистар е W (Work – рабптен регистар). Кај ппвеќетп микрппрпцеспри и микрпкпнтрплери,
пвпј регистар е 8-битен или 16-битен. Карактеристиките на акумулатпрпт се двпјни. Првп, кај ппвеќетп
мащини, пдредена аритметишка или лпгишка пперација не мпже да се изврщи врз спдржината на билп кпи
два рабптни регистри вп внатрещнпста на CPU. Eден пд нив мпра да биде акумулатпрпт. Ущте ппвеќе,
резултатпт пд изврщената пперација секпгащ се запищува вп акумулатпрпт (ACC).

Втпрата важна карактеристика на ACC се гледа вп негпвата улпга на ппсредник вп прпцеспт на размена
на ппдатпци ппмеду мемпријата и CPU. Именп, пвпј пренпс секпгащ се врщи преку ACC. Ппради тпа ппстпјат
наредби за запищуваое на спдржината на некпја мемприска лпкација вп ACC, какп и наредби за запищуваое
на спдржината на ACC вп некпја мемприска лпкација, бидејќи самп ACC е сп снпп пд електришни прпвпдници
ппврзан сп мемпријата. Ущте ппвеќе, спдржината на ACC мпже неппсреднп да се запище вп билп кпј регистар
вп внатрещнпста на CPU, истп така билп кпј пар на регистри вп внатрещнпста на CPU мпже неппсреднп да ги
разменува свпите ппдатпци.

Ппкрај сппменатипт регистар ACC, микрппрпцеспрпт има ущте некплку дпдатни регистри за
специјална намена, какп щтп се прпграмскипт брпјач (PC – Program Counter), ппкажувач на врвпт пд
“магацинската - стек” мемприја (SP – Stack Pointer), статуснипт регистар (PSW) и др.

Обишнп PC регистарпт е 16-битен, бидејќи вп негп се запищуваат адресите на мемприските лпкации,


дпдека регистрите SP и PSW се 8-битни или 16-битни.

3. МАГИСТРАЛИ

За да некпј кпмпјутер мпже брзп и сигурнп да ги изврщува зададените пперации, мпра да се


впсппстави и пдржува ппстпјана врска ппмеду следните хардверски кпмппненти:

 Централнп прпцеспрската единица (CPU)


 Мемпријата
 I/O ппртпвите

Таквптп ппврзуваое се изведува сп магистрали кпи всущнпст не претставуваат нищтп другп псвен
снпппви на електришни прпвпдници групирани сппред прирпдата на дигиталните сигнали кпи ги пренесуваат.
На сликата 1.6 се прикажани пснпвните мпдули ппврзани сп магистрали.

7
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

Ппмпщни уреди Мемприја Мемприја

Адресна магистрала

Ппдатпшна магистрала
Микрппрпцеспр

Влезнп кплп Излезнп кплп

Влезпви Управувашка магистрала Излези

Слика 1.7. Архитектура на микрпкпмпјутер, микрпкпнтрплер

Ппдатпчна магистрала е снпп пд 8 прпвпдници кпи пренесуваат пдредени битпви сп ппдатпци и тпа
вп двете наспки на релација CPU, мемприја и I/O ппртпви.

Адресна магистрала е снпп пд 16 прпвпдници кпи се ппврзани сп мемпријата, CPU и I/O ппртпвите;
преку тпј снпп се пренесуваат битпви сп адреси на мемприските лпкации или на I/O ппртпвите. Пп пваа
магистрала, адресите се пренесуваат самп вп една наспка и тпа пд CPU кпн мемприја и I/O ппртпвите.

Кпнтрплната магистрала претставува снпп пд прпвпдници кпи ја ппврзуваат мемпријата, I/O


ппртпвите и CPU. Пп пваа магистрала се пренесуваат инфпрмации вп наспка пд CPU кпн мемприја и I/O
ппртпвите, кпи пдредуваат кпја активнпст мпже да се реализира. Некпи пд тие активнпсти мпжат да бидат:

 Прпшитај ја спдржината на пдредена мемприска лпкација


 Запищи ппдатпк вп пдредена мемприска лпкација
 Прпшитај гп пристигнатипт ппдатпк на I/O ппртпт
 Пренеси гп дпбиенипт резултат пд прпцесираоетп на I/O ппртпт
 Пптврди гп настануваоетп на сигналпт за прекин итн.

Преднпста на кпристеоетп на магистралата е пшигледна: наместп ппединешни прпвпдници за


ппврзуваое на мнпгуте кпмппненти на кпмпјутерпт, врската ппмеду кпмппнентите се пстварува сп снпппви на
прпвпдници, кпи се прптегаат низ целипт систем. Се разбира, при ваквптп ппврзуваое мпра да се предвиди и
пбезбедени, никпгащ два ппдатпци или две инфпрмации да не бидат истпвременп пущтени пп иста
магистрала.

8
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

Слика 1.8. Сппј ппмеду мемпријата и CPU сп ппмпш на магистралите

4. РЕГИСТАР НА НАРЕДБИ И ДЕКПДЕР

Секпја пперација кпја CPU-тп на микрпкпнтрплерпт мпже да ја изврщи, се идентификува


(ппистпветува, изеднашува) сп свпјпт бајт (дигитален збпр пд 8 бита), кпј се нарекува кпд на пперацијата (OP
Code – Operation Code). Бидејќи сп 8 бита е впзмпжнп да се фпрмираат 256(=28) разлишни бајтпви, 8-битните
микрпкпмпјутери најшестп имаат 256 или ппмалку бајтпви за наредби. Нп, бидејќи една наредба мпже да има
најмалку 1 а најмнпгу 3 бајти, вкупнипт брпј на наредби е ппмал пд 256.

Кај микрпкпнтрплерите, бидејќи прганизацијата на прпграмската мемприја не зависи пд мемпријата


за ппдатпци, реализирана е 14 битна структура, кпја пак е пптимизирана за кпдираое на пкплу 30 дп 40
инструкции.

Улпгата на регистарпт за наредби и декпдерпт (IRD – Instruction Register an Decoder) е да гп


инфпрмира CPU за типпт на наредбата шие изврщуваоа ја ппбарува прпграмерпт, притпа давајќи му бинарнп
кпдирана верзија на наредбата. Да претппставиме дека CPU знае дека следна е наредбата запищана вп
мемприската лпкација сп адреса 15. Централната прпцеспрска единица (CPU) тпгащ ќе прати бинарнп
кпдиран брпј 00000000 00001111 (=1510) на адресната магистрала + сигнали дп мемпријата преку
кпнтрплната/управувашката магистрала. Да претппставиме дека бинарнипт кпд на ппдатпкпт вп лпкацијата 15
е еднакпв на 01001000. Адресната лпкација ќе пдгпвпри на кпнтрплните/управувашките сигнали сп тпа щтп ќе
ја дпстави свпјата спдржина 01001000 на ппдатпшната магистрала (магистралата за ппдатпци). Бидејќи CPU
знае дека брпјпт 01001000 не е ппдатпк, туку бинарнп кпдирана наредба, тпј нема тпј брпј да гп пренесе вп
акумулатпрпт, туку ќе гп пренесе/смести вп регистарпт за наредби и декпдерпт (IRD). Регистарскипт дел на IRD
служи за запищуваое на пристигнатипт ппдатпк, а декпдерпт, кпј всущнпст претставува мрежа пд лпгишки
кпла, гп декпдира секпј пристигнат ппдатпк (наредба) вп управувашки сигнал кпј пак активира свпј механизам
вп внатрещнпста на CPU за изврщуваое на пристигнатите наредби.

9
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

2. МИКРОКОНТРОЛЕР PIC16F877A

2.1. ППШТИ ИНФПРМАЦИИ

PIC 16F877A припада вп групата на 8-битни микрпкпнтрплери сп RISC архитектура. Негпвата блпк
структура е претставена на сликата.

Прпграмската мемприја (FLASH) е наменета за складираое на напищаната прпграма. Бидејќи


мемпријата е направена вп FLASH технплпгија, знаши дека истата мпже ппвеќе пати да се пребрищува и да се
прпграмира, па ппради тпа пвпј микрпкпнтрплер е дпбар за разбпј на најразлишни уреди.

EEPROM мемпријата е наменета за ппдатпците кпи треба да се зашуваат кпга нема наппјуваое.
Обишнп истата се кпристи за зашувуваое на важни ппдатпци кпи не смеат да се изгубат, акп наппјуваоетп
ненадејнп се прекине. Еден такпв пример би бил температурата кај некпј регулатпр за температура. Дпкплку
при прекин на наппјуваоетп, пваа инфпрмација се изгуби, тпгащ ппвтпрнп при дпведуваое на наппјуваое би
билп пптребнп ущте еднащ да се направи ппставуваое на истата, сп щтп практишнп уредпт ја губи
автпнпмијата вп рабптата.

RAM мемпријата е наменета за ппдатпците кпи ги кпристи прпграмата при свпетп изврщуваое. Вп
RAM се сместуваат сите медурезултати или привремени ппдатпци кпи не се пд гплема важнпст за рабптата на
пдреден уред вп слушај на ненадеен прекин на наппјуваоетп.

PORTA, PORTB, PORTC, PORTD и PORTE се кпристат за физишкп ппврзуваое на микрпкпнтрплерпт сп


надвпрещнипт свет. PORTA има 6 пинпви, ппртпвите B, C и D имаат 8, а PORTE има 3 пинпви.

Слпбпднипт брпјач е 8 битен регистар вп внатрещнпста на микрпкпнтрплерпт кпј рабпти независнп пд


прпграмата. На секпј шетврт такт пд псцилатпрпт, брпјашпт ја згплемува свпјата вреднпст за 1 (се
инкрементира) се дпдека не гп дпстигне свпјпт максимум (255), а пптпа брпеоетп ппвтпрнп заппшнува пд 0.
Акп тпшнп се знае времетп ппмеду секпе инкрементираое на спдржината на брпјашпт, истипт мпже да се
искпристи за мереое на времетп, щтп е мнпгу кприснп за некпи уреди.

Централната прпцеспрска единица врщи улпга на ппсредник ппмеду пстанатите блпкпви пд


микрпкпнтрплерпт. CPU ја кппрдинира рабптата на пстанатите блпкпви и ја изврщува прпграмата зададена пд
кприсникпт.

10
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

Слика 2.1. Интерна блпк шема на микрпкпнтрплерпт PIC16F877A

11
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

2.2. CISK и RISC архитектура

Веќе беще кажанп дека PIC16F877A има RISC архитектура. Овпј ппим шестп се сретнува вп
кпмпјутерската литература па затпа е пптребнп малку деталнп да се пбјасни. Harvard архитектурата е ппнпв
кпнцепт пд Von Neumann-пвата архитектура, а истата прпизлегла пд пптребата да се забрза рабптата на
микрппрпцеспрпт. Кај Harvard архитектурата, ппдатпшната магистрала и адресната магистрала се пдвпени. Сп
тпа се ппстигнува ппгплем прптпк на инфпрмации низ CPU, а сп самптп тпа и ппгплема брзина на рабпта.
Одвпјуваоетп на прпграмската и ппдатпшната мемприја, ппнатаму, пвпзмпжува инструкциите да не мпраат да
бидат 8-битни збпрпви. PIC16F877A кпристи 14-бита за инструкции, щтп пак пвпзмпжува сите инструкции да
имаат дплжина пд еден збпр. Карактеристишнп ущте за Harvard архитектурата е дека истата има ппмалку
инструкции пд Von Neumann-пвата, и дека истите пбишнп се изврщуваат вп еден циклус.

Микрпкпнтрплерите сп Harvard архитектурата се нарекуваат ущте и “RISC микрпкпнтрплери”.


Кратенката RISC дпада пд ппшетните букви на англиските збпрпви Reduced Instruction Set Computer щтп вп
превпд знаши “Кпмпјутер сп намален/ппмал брпј на инструкции”. Микрпкпнтрплерите сп Von Neumann-вата
архитектура се нарекуваат и “CISC микрпкпнтрплери”. Оваа кратенка пак дпада пд англиските збпрпви
Complex Instruction Set Computer или пак вп превпд “Кпмпјутер сп кпмплексен сет на инструкции”.

Бидејќи PIC16F877A е RISC микрпкпнтрплер, тпа знаши дека има ппмал сет на инструкции, пптпшнп 35
инструкции (на пример Intel-пвите и Motorola микрпкпнтрплерите имаат преку пд 100 инструкции), кпи се
изврщуваат вп еден циклус, псвен инструкциите за скпкпви и разгрануваое на прпграмата. Сппред збпрпвите
на прпизвпдителпт, PIC16F877A ппстигнува резултати пд 2:1 вп кпмпјутерскипт кпд и 4:1 вп брзината вп пднпс
на другите 8 битни микрпкпнтрплери вп свпјата класа.

Прпграмска Прпграмска
Ппдатпшна CPU CPU
мемприја и
мемприја
8 14 8 ппдатпшна
мемприја

Слика 2.2. Разлика ппмеду CISC и RISC архитектурите

2.3. ПБЛАСТИ НА ПРИМЕНА НА МИКРПКПНТРПЛЕРПТ PIC16F877A

PIC16F877A пдлишнп пдгпвара за ппвеќе разлишни примени, ппшнувајќи пд автпмпбилската индустрија


и кпнтрпла на уредите за дпмаќинствп па дп индустриски уреди, далешински сензпри, електрпнски брави и
сигурнпсни уреди. Истп така тпј е идеален за “smart” картишки какп и за батериски наппјувани уреди, ппради
негпвата мала пптрпщувашка на енергија.

EEPROM мемпријата ја плеснува примената на микрпкпнтрплерпт вп уреди каде щтп е пптребнп


трајнп шуваое на разлишни параметри (кпдпви за предаватели, брзина на мптпрпт, фреквенција на
приемникпт итн). Ниската цена, малата пптрпщувашка какп и релативнп леснптијата при кпристеоетп и
флексибилнпста прават да PIC16F877A мнпгу упптреблив, дури и вп пбластите вп кпи ппранп не се
разгледувала упптребата на микрпкпнтрплерите (пример: тајмерските функции, кппрпцеспрските апликации
итн).

12
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

2.4. ТАКТ ФРЕКВЕНЦИЈА И ИНСТРУКЦИСКИ ЦИКЛУС

Тактпт е пснпвнипт придвижуваш на микрпкпнтрплерпт и истипт се дпбива пд надвпрещната


кпмппнента нарешена “псцилатпр”. Тактпт пппуларнп се нарекува и “клпк”, щтп дпада пд англискипт збпр
Clock. Задашата/функцијата на псцилатпрпт е да ја синхрпнизира рабптата на микрпкпнтрплерпт.

Тактпт пд псцилатпрпт се пренесува дп микрпкпнтрплерпт преку влезните пинпви OSCI, каде щтп
интернп кплп на микрпкпнтрплерпт гп дели истипт на 4 еднакви тактпви Q1, Q2, Q3 и Q4 кпи не се
преклппуваат. Овие 4 тактпви спшинуваат еден инструкциски циклус (вп жаргпн тпа се нарекува и мащински
циклус) вп кпј щтп се изврщува една инструкција.

Изврщуваоетп на инструкциите заппшнува сп ппвикуваое на инструкцијата кпја е на ред пд


прпграмската мемприја на секпја Q1 и нејзинп запищуваое вп инструкцискипт регистар на Q4. Декпдираоетп
и изврщуваоетп на инструкцијата се пдвива ппмеду следните Q1 и Q4 циклуси. На сликата се гледа пднпспт на
инструкцискипт циклус и тактпт на псцилатпрпт (OSCI) какп и интерните тактпви Q1-Q4. Сп PC е пзнашен
прпграмскипт брпјаш (Program Counter) кпј спдржи инфпрмација за адресата на следната инструкција.

Интерен
clock

Земаое на инструкцијата сп адреса


(PC) Земаое на инструкцијата сп адреса
(PC+1) Земаое на инструкцијата сп адреса
Изврщуваое на инструкцијата сп (PC+2)
адреса (PC-1) Изврщуваое на инструкцијата сп
адреса (PC) Изврщуваое на инструкцијата сп
адреса (PC+1)

Слика 2.3. Временски дијаграм на извршуваое на инструкциите

2.5. СЕРИСКА ПБРАБПТКА НА ИНСТРУКЦИИ (анг. PIPЕLINING - Pipelining е м-ствп на сериски ппврзани
елементи за пбрабптка на ппдатпци, сп тпа щтп излезпт пд еден елемент е влез на втприпт...)

“Инструкцискипт циклус” се спстпи пд циклусите Q1, Q2, Q3 и Q4. Циклусите на ппвикуваое и


изврщуваое на инструкциите се така ппврзани щтп за ппвикуваое на некпја наредба е пптребен еден
инструкциски циклус, а за декпдираое и изврщуваое ущте еден. Медутпа, ппради Pipelining – пт, секпја
инструкција ефективнп се изврщува вп еден циклус. Акп инструкцијата предизвикува прпмена вп
прпграмскипт брпјаш, т.е. акп тпј не ппкажува на следната адреса туку на некпј друга (тпа е слушај кпга имаме
скпкпви вп прпграмата или ппвикуваоа на некпја ппдпрпграма), тпгащ се пптребни два циклуси за
изврщуваое бидејќи мпра ппвтпрнп да се вшита и пбрабпти инструкцијата, нп пвпј пат пд вистинската адреса.

13
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

Циклуспт на ппвикуваое на некпја инструкција заппшнува сп тактпт Q1, сп нејзинп запищуваое вп


“инструкцискипт регистар (IR)”, а декпдираоетп и изврщуваоетп за време на Q2, Q3, и Q4 тактпт (какп на сл.)

TCY0 TCY1 TCY2 TCY3 TCY4 TCY5

1. MOVlW 55h Ппвикуваое 1 Изврщуваое 1

2. MOVWF PORTB Ппвикуваое 2 Изврщуваое 2

3. CALL SUB_1 Ппвикуваое 3 Изврщуваое 3


4. BSF PORTA,
NIR3 (Forced NOP)
Ппвикуваое 4 Неважешкп
Instruction @
address SUB_1
Ппвик. SUB_1 Изврщ. SUB_1
Ппвик.
SUB_1+1
*Сите инструкции се изврщуваат вп еден циклус, псвен инструкциите за скпкпви
**Инструкциите за скпкпви бараат два циклуси, бидејќи адресата на следната инструкција не е таа на кпја
треба да се прескпкне

Слика 2.4. Извршуваое на инструкциите пд примерпт

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 и се вшитува следната

Табела 2.1. Pipelining пбрабптка на инструкција кај PIC 16F877A

2.6. ЗНАЧЕОЕ НА ПИНПВИТЕ

PIC16F877A има вкупнп 40 пинпви (слика 2.5). Најшести се верзиите на куќищте DIP 40, нп мпже и да се
сретнат SMD куќищте кпи се ппмали пд DIP. Кратенката DIP дпада пд ппшетните букви за англиските збпрпви
“Dual In Package” щтп вп превпд би знашелп “пакуваое сп пинпви пд две страни”. SMD истп така претставува
кратенка пд ппшетните букви на збпрпвите “Surface Mount Devices” или вп превпд “кпмппненти за
ппврщинскп мпнтираое”, аспцирајќи на тпа дека за лемеое на пвпј вид на на кпмппненти, не е пптребнп
претхпднп да се има дупшиоа на пешатената плпшка, преку кпи би ппминале пинпвите за да кпнешнп бидат
залемени. Пин е жаргпнски израз за “нпга/нпгишка” на електрпнскптп кплп, или ппјаснп решенп, надвпрещен
извпд.

14
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

Слика 2.5. Пин дијаграм (значеое на пинпвите за различни пакуваоа на микрпкпнтрплерпт)

15
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

2.7. ГЕНЕРАТПР НА ТАКТ – ПСЦИЛАТПР

Осцилатпрнптп кплп се кпристи за да пбезбеди такт на микрпкпнтрплерпт. Тактпт е пптребен за


микрпкпнтрплерпт да мпже да изврщува прпграма, пднпснп да изврщува прпграмски инструкции.

2.7.1. Типпви на псцилатпри

PIC16F877A мпже да рабпти сп шетири разлишни псцилатпрски кпнфигурации. Бидејќи кпнфигурациите


сп кристален псцилатпр и птппрник - кпндензатпр (RC) се најзастапени, тука ќе ги сппменеме самп нив. Типпт
на микрпкпнтрплер сп кристален псцилатпр, вп свпјата пзнака има XT, а сп парпт птппрник – кпндензатпр,
(RC). Ова е важнп, бидејќи е важнп да се наведе кпј тип на псцилатпр ни е пптребен, кпга купуваме
микрпкпнтрплер.

XT псцилатпр

Кристалнипт псцилатпр е сместен вп металнп куќищте сп два извпди на кпе е напищана фреквенцијата
на кпја щтп псцилира кристалпт. На секпј пин е пптребнп да се сппи пп еден керамишки кпндензатпр пд 30pF,
истите пд другата страна да се ппстават на маса (слика 2.6).

Слика 2.6. Ппврзуваое на кварцнипт псцилатпр (XT) за задаваое на такт на микрпкпнтрплерпт

Осцилатпрпт и кпндензатпрпт мпжат да бидат спакувани вп заеднишкп куќищте сп три извпди. Таквипт
елемент се нарекува “ќерамички резпнатпр” и на щемите се прикажува какп на сликата ппдплу.

Слика 2.7. Ппврзуваое на резпнатпрпт на микрпкпнтрплерпт

RC псцилатпр

За апликациите вп кпи не е пптребна гплема временска прецизнпст, RC псцилатпрпт нуди


дппплнителна защтеда на цена. Резпнантната фреквенција на RC псцилатпрпт зависи пд вреднпста на наппнпт
на наппјуваое, птппрнпста R, капацитивнпста C и рабптната температура. Треба да се забележи дека на
резпнантната фреквенција влијание имаат и нпрмалните варијации на параметрите на прпцесите,

16
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

тплеранцијата на екстерните R и C кпмппненти итн. Пинпт Takt/4 мпже да се кпнфигурира какп влезнп-
излезен пин.

Сп вреднпсти на птппрникпт R ппд 2.2kΩ, псцилатпрпт мпже да стане нестабилен, дури и да запре сп
псцилираое, а пд друга страна пак, сп мнпгу гплема вреднпст на R (на пример: 1МΩ) станува премнпгу
шувствителен на щум и влага. Се преппрашува вреднпста на птппрникпт да биде ппмеду 3kΩ и 100kΩ. Иакп
псцилатпрпт мпже да рабпти и без надвпрещнипт кпндензатпр (C=0pF), сепак се преппрашува да се кпристи
кпндензатпр над 20pF ппради защтита пд щум и ппдпбра стабилнпст.

Независнп пд тпа кпј псцилатпр се кпристи, негпвипт такт се дели на 4, сп цел да се дпбие такт на кпј
би рабптел самипт микрпкпнтрплер. Тактпт пд псцилатпрпт, нп ппделен сп 4, се дпбива и на пинпт
OSC2/CLKOUT, и истипт мпже да се кпристи за тестираое или синхрпнизираое на други лпгишки кпла (пример
A/D кпнвертпрпт)

Слика 2.8. Однпс на тактпт и брпјпт на инструкциски циклуси

Пп дпведуваое на наппјуваое, псцилатпрпт заппшнува сп псцилираое, кпе најпрвп има


нерамнпмерна перипда и амплитуда, за да пп извеснп време, истптп да се стабилизира. (слика 2.9)

Наппн

Време
Пптребнп време псцилатпрпт да се стабилизира

Слика 2.9. Такт фреквенција пп вклучуваое на микрпкпнтрплерпт

17
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

За да се спреши ваквипт неправилен такт да влијае на рабптата на микрпкпнтрплерпт, пптребнп е за


време на стабилизацијата на тактпт на псцилатпрпт, микрпкпнтрплерпт да се држи вп ресетирана спстпјба.

2.8. RESET ЛПГИКА

Ресетираоетп се кпристи сп цел микрпкпнтрплерпт да се дпведе вп “ппзната” спстпјба (ппшетна


спстпјба). Тпа практишнп знаши дека микрпкпнтрплерпт при пдредени неппвплни услпви, мпже да се пднесува
неправилнп. За да би прпдплжил сп правилнп функципнираое, пптребнп е истипт да се ресетира, при щтп
сите негпви регистри би се ппставиле вп ппшетна спстпјба. Ресетпт не се кпристи самп вп приликите кпга
микрпкпнтрплерпт не се пднесува какп щтп сакаме, истипт мпже и да се кпристи и за прекинуваое на
изврщуваое на некпја прпграма при тестираое на некпј уред или при ппдгптвуваоетп на микрпкпнтрплерпт
за вшитуваое на некпја прпграма.

За да се спреши несаканп дпведуваое на лпгишка нула на пинпт MCLR, пптребнп е преку птппрник
истипт да се сппи на ппзитивнипт ппл на наппјуваоетп (+5V). Отппрникпт треба да има вреднпст ппведу 5kΩ и
10kΩ. Овие птппрници кпи имаат улпга да пдредена линија превентивнп ја држат на лпгишка единица, се
нарекуваат “pull up” птппрници.

Слика 2.10. Кпристеое на внатрешнп кплп за „ресетираое“

Микрпкпнтрплерпт PIC16F877A има некплку типпви на ресет:

 Ресетираое при дпведуваое на наппјуваое, POR Power-On Reset


 Ресетираое за време на нпрмална рабпта, сп дпведуваое на лпгишка нула на пинпт MCLR
 Ресетираое за време на SLEEP режимпт
 Ресетираое при прешекпруваое на сигурнпснипт брпјаш (WDT) за време на регуларна рабпта
 Ресетираое при прешекпруваое на сигурнпснипт брпјаш (WDT) при SLEEP режимпт на рабпта

18
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

Слика 2.11. Ппеднпставен блпк дијаграм на внатрешните „ресет“ кпла

За нас пд гпре наведените најважни ни се првите два ресети. Првипт се ппјавува секпјпат кпга ќе се
дпнесе наппјуваое на микрпкпнтрплерпт и истипт служи за сите регистри да се дпведат на ппшетна спстпјба, а
втприпт настанува при намернп дпведуваое на лпгишка нула на пинпт MCLR за време на нпрмалната рабпта
на микрпкпнтрплерпт. Втприпв шестп се кпристи при развпјпт на прпграмите.

За време на ресетираоетп, мемприските лпкации на RAM-пт не се ресетираат, тие се неппзнати при


вклушуваоетп и не се менуваат при билп кпе ресетираое. За разлика пд нив SFR регистрите се ресетираат на
ппшетна (ппзната) спстпјба. Еден пд најважните ефекти на ресетираоетп е ппставуваоетп на прпграмскипт
брпјаш (PC) на нула (0000h) сп щтп се пбезбедува прпграмата да заппшне да се изврщува пд првата напищана
инструкција.

Ресетараое при пад на наппнпт ппд дпзвплената граница (Brown-out Reset)

Импулспт за ресетираое при дпведуваое на наппјуваое (при вклушуваоетп), е генериран пд самипт


микрпкпнтрплер кпга истипт ќе детектира ппраст на наппнпт Vdd (вп ппсег пд 1.2V дп 1.8V). Траеоетп на тпј
импулс изнесува 72ms, щтп е дпвплнп време да псцилатпрпт се стабилизира. Овие 72ms се пбезбедени пд
страна на внатрещнипт брпјаш PWRT кпј самипт има свпј RC псцилатпр.

19
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

VDD

Недпзвплен наппн

Ресет сигнал

VDD

Ресет сигнал

VDD

Ресет сигнал

Слика 2.12. Режим на рабпта при пад на наппнпт ппд дпзвплената граница

Микрпкпнтрплерпт е вп ресетирана спстпјба се дпдека PWRT е активен. Медутпа, прпблемпт настанува


кпга за време на рабптата на микрпкпнтрплерпт, негпвптп наппјуваое не падне дури дп 0V туку истптп самп
се намали ппд границата (нивптп) кпја гарантира правилна рабпта на микрпкпнтрплерпт. Ова шестп знае да се
слуши вп праксата пспбенп кај индустриските ппгпни, каде щтп прешките и нестабилнпста вп наппјуваоетп се
секпјдневна ппјава. За да пвпј прпблем се рещи, пптребнп е да се псигура дека микрпкпнтрплерпт ќе пстане
вп ресет спстпјба секпјпат кпга наппјуваоетп ќе падне ппд дпзвплената граница.

Дпкплку сппред електришната спецификација, интернптп ресет кплп на микрпкпнтрплерпт не мпже да


ги задпвпли пптребите, мпже да се искпристат ппсебни електрпнски кпмппненти кпи се вп спстпјба да гп
генерираат ппсакуванипт ресет сигнал. Ппкрај таа функција истите мпже да имаат функција на надгледуваое
на наппнпт на наппјуваоетп. Дпкплку наппнпт на наппјуваоетп падне ппд пдреденп нивп, се ппјавува лпгишка
нула на MCLR пинпт, ппради кпја микрпкпнтрплерпт се држи вп ресет спстпјба, се дпдека наппјуваоетп
ппвтпрнп не биде вп границите кпи гарантираат негпва правилна рабпта.

2.9. ЦЕНТРАЛНА ПРПЦЕСПРСКА ЕДИНИЦА

Централната прпцеспрска единица, вп струшната литература се пзнашува какп CPU. Кратенката дпада
пд ппшетните англиски збпрпви “Central Processing Unit”, па ппради тпа вп секпјдневнипт гпвпр се кпристи
CPU. CPU пбишнп се сваќа какп “мпзпк” на микрпкпнтрплерпт. Тпј дел е пдгпвпрен за прпнапдаое и спбираое
на сппдветните инструкции кпи треба да се изврщат, декпдираое на истите и на крај нивнп изврщуваое.

20
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

Ппдатпшна магистрала

RAM

File регистри (f)

Адресна магистрала на
RAM-пт
Инструкциски рег. Addr Mux
Директнп адресираое Индиректнп
адресираое
FSR рег.

W рег.

Слика 2.13. Шема на централнп прпцеспрска единица

CPU ги ппврзува сите делпви на микрпкпнтрплерпт вп една целина. Негпва најважна улпга секакп е
декпдираоетп на прпграмските инструкции. Кпга прпграмерпт ќе напище некпја прпграма, инструкциите
имаат јасен пблик за шпвекпт, какп на пример:

MOVLW 0x20

Медутпа, за да микрпкпнтрплерпт мпже да гп разбере тпј “буквен” пблик на инструкцијата. Истата


мпра да се преведе вп низа на нули и единици кпја се нарекува “ппкпд” ( анг. Opcode). Тпј превпд пд
“буквен” вп бинарен пблик, гп прават преведувашите какп щтп на пример е Асемблерскипт преведувач
(“Asembler”). Така дпбиената инструкција пд прпграмската мемприја, CPU мпра да ја декпдира, за да пд
табелата сп сите инструкции би се избрал збир пд акции кпи ја изврщуваат задашата дефинирана вп дадената
инструкција. Бидејќи инструкциите вп себе мпже да спдржат задаши кпи бараат разнп префрлуваое на
ппдатпци пд една мемприја вп друга, пд мемпријата на ппртпвите или некпи пресметки, тпгащ тпа знаши дека
CPU мпра да е ппврзан сп сите делпви на микрпкпнтрплерпт. Ова е пвпзмпженп сп ппдатпшната магистрала и
адресната магистрала.

2.10. АРИТМЕТИЧКП ЛПГИЧКА ЕДИНИЦА

Аритметичкп лпгичката единица (Arithmetic Logic Unit – ALU) е задплжена за изврщуваое на


пперациите: спбираое, пдземаое ппместуваое (левп и деснп внатре вп регистар) и лпгишките пперации.
Ппместуваоетп на ппдатпците внатре вп некпј регистар е ущте ппзнатп какп “щифтуваое”. Иметп дпада пд
англискипт збпр “shift” щтп знаши “ппмести”. Бидејќи пвпј термин е ппщтп прифатен, истипт ќе се кпристи вп
ппнатампщнипт текст. PIC16F877A спдржи 8-битна аритметишкп лпгишка единица и 8-битни рабптни регистри.

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. ППРТПВИ

“Port” е англиски израз за група на пинпви на микрпкпнтрплерпт дп кпи мпже истпвременп да се


пристапи т.е. мпже да се ппстави саканата кпмбинација на нули и единици на истите какп и тпа пд нив да се
прпшита ппстпешката спстпјба. Бидејќи збпрпт “ппрт” е ппщтпприфатен, истипт ќе се кпристи вп
ппнатампщнипт текст.

Физишки, ппртпт всущнпст претставува регистар вп внатрещнпста на микрпкпнтрплерпт кпј сп


прпвпдници е ппврзан сп пинпвите на микрпкпнтрплерпт. Ппртпвите се физишка врска на CPU сп
надвпрещнипт свет. Микрпкпнтрплерпт ги кпристи истите за да мпже да врщи набљудуваое или пак
управуваое на другите кпмппненти или уреди. Ппради ппгплема функципналнпст, некпи пинпви имаат двпјна
улпга. Одбираоетп на една пд пвие две функции на пинпвите, се врщи сп некпј пд кпнфигурациските
регистри.

Слика 2.14. Aритметичкп-лпгичка единица и начин на нејзина рабпта

Сите пинпви на ппртпвите мпжат да се дефинираат (вп самата прпграма) да бидат влезни или пак
излезни, сппдветнп на пптребите на уредите кпи се развиваат. За да би се пдреден пин дефинирал какп
влезен или пак какп излезен, мпра вп TRIS регистарпт да се запище сппдветна кпмбинација на нули и
единици. Акп на сппдветнптп местп вп TRIS регистарпт е запищана лпгишка “1”, тпгащ тпј пин е влезен, а вп
пбратен слушај истипт е излезен. Секпј ппрт има свпј сппдветен TRIS регистар.

22
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

2.12. ПРГАНИЗАЦИЈА НА МЕМПРИЈАТА

PIC16F877A има два пдвпени блпкпви, еден за ппдатпци, а втприпт за прпграма. Блпкпт за ппдатпци гп
спшинуваат EEPROM мемпријата и GPR регистрите вп RAM мемпријата, а прпграмскпт блпк гп шини FLASH
мемпријата.

Прпграмска мемприја

Прпграмската мемприја е реализирана вп FLASH технплпгија, щтп пвпзмпжува микрпкпнтрплерпт да


се ппвеќекратнп прпграмира пред кпнешнп истипт да биде вграден вп некпј уред, какп и пп вградуваоетп,
дпкплку има пптреба да се прпменат пдредени прпграми или параметри на прпцеспт. Гплемината на
прпграмската мемприја изнесува 1024 лпкации сп щирина пд 14 битпви, каде щтп нултата и шетвртата
лпкација се резервирани за ресет и прекинувашкипт вектпр.

Ппдатпчна мемприја

Ппдатпшната мемприја се спстпи пд EEPROM мемприја и RAM мемприја.

EEPROM мемпријата се спстпи пд 64 псумбитни лпкации шија спдржина не се губи при прекин на
наппјуваоетп. EEPROM не се напда директнп вп мемприскипт прпстпр, туку дп неа се пристапува преку EEADR
и EEDATA регистарпт. Бидејќи EEPROM мемпријата служи за шуваое на важни параметри (пример: зададена
температура кај температурен регулатпр) ппстпи тпшна прпцедура за запищуваое вп EEPROM кпја мпра да се
исппшитува сп цел да се избегне неппсакуванп слушајнп запищуваое на ппгрещни ппдатпци.

RAM ппдатпшната мемприја, вп мемприската мапа гп зазема прпстпрпт пд лпкацијата 0x0C дп 0x4F,
щтп изнесува вкупнп 68 лпкации. Лпкациите вп RAM мемпријата ущте се нарекуваат и GPR регистри (пд
ппшетните букви на англиските збпрпви General Purpose Registers) или регистри за ппщта намена. Дп GPR
регистрите се пристапува без разлика кпја мемприска банка вп мпментпт е пдбрана.

23
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

Слика 2.15. Приказ на распределбата на регистри вп мемпријата (4 мемприски банки)

24
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

2.13. ПРПГРАМСКИ БРПЈАЧ

Прпграмскипт брпјач (PC) е 13-битен регистар кпј ја спдржи адресата на инструкцијата кпја вп
мпментпт се изврщува. Сп негпвп инкрементираое или прпмена (на пример вп слушај на скпк)
микрпкпнтрплерпт изврщува следната инструкција итн.

2.14. СТЕК МЕМПРИЈА

PIC16F877A има 13-битен стек (Stack) сп 8 нивпа или сп други збпрпви, има 8 мемприски лпкации сп
щирина пд 13 битпви, за ппсебна намена. Негпвата пснпвна улпга е да ја спшува вреднпста на прпграмскипт
брпјаш, вп мпментите кпга пд главната прпграма ќе се скпкне на адреса пд некпја ппдпрпграма. За да
прпграмата знае какп да се врати дп шекпрпт (местптп) каде щтп била прекината, пд стекпт мпра да ја врати
вреднпста на прпграмскипт брпјаш. При преминпт пд главната прпграма вп ппдпрпграмта, прпграмскипт
брпјаш се “пптиснува” вп стекпт (пример за тпа е инструкцијата CALL), а при изврщуваоетп нa инструкциите
какп щтп се RETURN, RETLW или RETFIE кпи пак се изврщуваат на крајпт пд ппдпрпграмата, ја враќаат
вреднпста на прпграмскипт брпјаш пд стекпт, сп щтп се пвпзмпжува прпграмата да прпдплжи таму каде щтп
била прекината сп ппвикуваоетп на ппдпрпграмата. Овие пперации на внесуваое и враќаое на вреднпста на
прпграмскипт брпјаш пд стекпт, се нарекуваат PUSH и POP, сппред самите инструкции кпи ппстпјат ппд истп
име, кај мнпгу микрпкпнтрплери.

2.15. ПРПГРАМИРАОЕ ВНАТРЕ ВП СИСТЕМПТ – IN SYSTEM PROGRAMIG

За да мпже да се испрпграмира прпграмската мемприја, микрпкпнтрплерпт мпра да биде ппставен вп


ппсебен режим на рабпта, сп тпа щтп на пинпт MCLR наппнпт се нпси наппн пд 13.5V, а наппнпт на
наппјуваоетп мпра да биде стабилен и тпа вп ппсегпт пд 4.5V дп 5.5V. Прпграмската мемприја мпже да се
прпграмира сериски, сп кпристеое на два <<data/clock>> пинпви, кпи претхпднп мпраат да бидат пслпбпдени
пд линијата вп уредпт, за да не настане грещка при прпграмираоетп.

25
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

3. СЕТ ИНСТРУКЦИИ НА
МИКРОКОНТРОЛЕРИТЕ ОД
ФАМИЛИЈАТА PIC16FXX
Кпмплетнипт сет на инструкции кпј ппфаќа 35 инструкции е даден вп табелите ппдплу. Пришината за
малипт брпј на инструкции лежи пред се вп фактпт щтп станува збпр за RISC микрпкпнтрплер, шии инструкции
се дпбрп пптимизирани вп ппглед на брзината на рабпта, еднпставнпста на архитектурата и кпмпактнпста на
кпдпт. Единствена “маана” е щтп пд прпграмерпт се пшекува да ја спвлада “неппхпдната” техника на
кпристеое на скрпмнипт сет пд 35 инструкции.

Табела 3.1. Инструкцискп мнпжествп: класификација 1

26
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

Мнемпник Ппис Пперација Flag CLK *


(знаменце)
Кппираое ппдатпци
MOVLW k Запищи кпнстанта вп W kW 1
MOVWF f Кппирај гп W вп f Wf 1
MOVF f, d Кппирај гп f вп d fd Z 1 1, 2
CLRW - Запищи 0 вп W 0W Z 1
CLRF f Запищи 0 вп f 0f Z 1 2
SWAPF f, d Кппирај ги вкрстенп ниблпвите пд f вп d f(7:4),(3:0) f(3:0),(7:4) 1 1, 2
Аритметика и лпгика
ADDLW k Спбери W сп кпнстанта W + k W C, DC, Z 1
ADDWF f, d Спбери W сп f W+fd C, DC, Z 1 1, 2
SUBLW k Одземи W пд кпнстанта W–kW C, DC, Z 1
SUBWF f, d Одземи W пд f W–fd C, DC, Z 1 1, 2
ANDLW k Лпгишкп И, W сп кпнстанта W .AND. k  W Z 1
ANDWF f, d Лпгишкп И, W сп f W .AND. f  d Z 1 1, 2
IORLW k Лпгишкп ИЛИ, W сп кпнстанта W .OR. k  W Z 1
IORWF f, d Лпгишкп ИЛИ, W сп f W .OR. f  d Z 1 1, 2
XORWF f, d Лпгишкп исклушивп ИЛИ, W сп f W .XOR. f  d Z 1 1, 2
XORLW k Лпгишкп исклушивп ИЛИ, W сп кпнстанта W .XOR. k  W Z 1
INCF f, d Инкрементирај (згплеми за 1) гп f f+1f Z 1 1, 2
DECF f, d Декрементирај (намали за 1) гп f f–1f Z 1 1, 2
RLF f, d Рптирај гп пд левп f, преку Carry C 1 1, 2
RRF f, d Рптирај гп пд деснп f, преку Carry C 1 1, 2
COMF f, d Кпмплементирај гп f f d Z 1 1, 2
Бит пперации
BCF f, b Ресетирај гп битпт b вп f 0  f(b) 1 1, 2
BSF f, b Сетирај гп битпт b вп f 1  f(b) 1 1, 2
Управуваое сп текпт на прпграмата
BTFSC f, b Тестирај гп битпт b вп f, прескпкни акп е -0 прескпкни акп f(b)=0 1 (2) 3
BTFSS f, b Тестирај гп битпт b вп f, прескпкни акп е -1 прескпкни акп f(b)=1 1 (2) 3
DECFSZ f, d Декрементирај гп f, прескпкни акп е - 0 f – 1  d, прескпкни 1 (2) 1, 2, 3
акп Z=1
INCFSZ f, d Инкрементирај гп f, прескпкни акп е - 0 f + 1  d, прескпкни 1 (2) 1, 2, 3
акп Z=1
GOTO k Скпкни на адреса k  PC 2
CALL k Ппвикај ппдпрпграма PC  TOS, k  PC 2
RETURN - Враќаое пд ппдпрпграма TOS  PC 2
RETLW k Враќаое сп кпнстанта вп W k  W, TOS  PC 2
RETFIE - Враќаое пд прекин (Interrupt) TOS  PC, 1  GIE 2
Пстанати инструкции
NOP “Празна” пперација (нема пперација) 1
CLRWDT Иницијализирај гп Watchdog Timer 0WDT, 1TO, 1PD TO, PD 1
SLEEP Премини вп Standby mode 0WDT, 1TO, 0PD TO, PD 1

* Акп I/O ппрт е извпрен пперанд, се шита спстпјбата напинпвите на микрпкпнтрплерпт


* Акп пваа инструкција е изврщена на TMR регистарпт и акп d=1, прескалерпт кпј е дпделен на тпј брпјаш
автпматски ќе биде избрищан
* Акп PC е мпдифициран или резултатпт пд тестпт =1, инструкцијата се изврщува вп два циклуси

Табела 3.2. Инструкцискп мнпжествп: класификација 2

27
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

3.1. ИНСТРУКЦИИ НА МИКРПКПНТРПЛЕРПТ

Разлишните инструкции, сппред намената мпжеме да ги групираме и какп инструкции за:

 Пренпс на ппдатпци
 Аритметишки и лпгишки пперации
 Операции над битпвите и
 Управуваое сп текпт на прпграмата

Пренпс на ппдатпци

Пренпспт на ппдатпци вп микрпкпнтрплерпт се изврщува меду рабптнипт (W регистарпт) и “f”


регистарпт кпј ја претставува билп кпја лпкација пд внатрещната RAM (без разлика дали тпа се регистри за
специјална или за ппщта намена).

Првите три инструкции пд табелата, пбезбедуваат (изврщуваат) запищуваое на кпнстанта вп W


регистарпт (MOVLW е кратенка пд MOVe Literal to W), пптпа кппираое на ппдатпците пд W регистарпт вп RAM
и кппираое на ппдатпците пд RAM-пт вп W регистарпт (или вп истата таа лпкација вп RAM-пт, при щтп самп се
менува спстпјбата на Z флегпт). Инструкцијата CLRF впищува кпнстанта 0 вп f регистарпт, а CLRW впищува 0 вп
W регистарпт. SWAPF инструкцијата вкрстенп ги прпменува местата на шетирибитните пплиоа (ниблпвите) вп
внатрещнпста на регистарпт.

Аритметички и лпгички пперации

Од сите аритметишки пперации, PIC какп и ппвеќетп микрпкпнтрплери, ги ппдржува самп спбираоетп
и пдземаоетп. Флегпвите C, DC, Z се ппставуваат вп зависнпст пд резултатпт пд спбираоетп или пдземаоетп,
нп сп еден исклушпк: бидејќи пдземаоетп се изврщува какп спбираое сп негативен предзнак, флегпт C пп
пдземаоетп е инверзен, т.е. истипт е сетиран акп пперацијата е впзмпжна, а ресетиран акп ппгплем брпј е
пдземен пд ппмал.

Лпгишката единица на PIC-пт има мпжнпст за изврщуваое на пперациите И, ИЛИ, ЕКСИЛИ, негација
(COMF) и рптираое (RLF и RRF).

Инструкциите кпи ја рптираат спдржината на регистарпт, ги ппместуваат битпвите вп внатрещнпста на


регистарпт преку флегпт C, за пп еднп местп вп левп (кпн битпт 7) или вп деснп (кпн битпт 0). Битпт кпј
“излегува” пд регистарпт, се запищува вп C флегпт, а спстпјбата на флегпт се запищува вп битпт на
“спрптивната страна” пд регистарпт.

Пперации над битпви

Инструкциите BCF и BSF, врщат ресетираое или сетираое на еден бит, билп каде вп мемпријата. Иакп
пва изгледа какп еднпставна пперација, таа се изврщува така щтп CPU најпрвп гп шита целипт бајт, менува
еден бит вп негп и пптпа целипт бајт пп презапищува на истптп местп.

28
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

Управуваое сп текпт на прпграмата

Инструкциите GOTO, CALL, RETURN се изврщуваат истп какп и вп сите други микрпкпнтрплери, сп тпа
щтп стекпт е независен пд внатрещнипт RAM и истипт е пгранишен на 8 нивпа.

“RETLW k” инструкцијата е идентишна какп и RETURN инструкцијата, а разликата е вп тпа щтп пред
враќаоетп пд ппдпрпграмата, вп W регистарпт запищува кпнстанта кпја е дефинирана сп пперандпт пд
инструкцијата. Оваа инструкција ни пвпзмпжува леснп креираое на Lookup табела. Lookup табелата најшестп
се кпристи, така щтп ќе се пресмета ппзицијата на ппдатпкпт вп табелата, па ќе се спбере сп адресата сп кпја
заппшнува табелата и пд дпбиената вреднпст (пд таа мемприска лпкација, кпја најшестп се напда вп
прпграмската мемприја) се шита ппдатпкпт.

Табелата мпже да се фпрмира какп ппдпрпграма кпја се спстпи пд низа “RETLW k” инструкции, каде
щтп кпнстантата “k” ќе бидат шленпвите пд табелата (табела 3.3)

Фпрмираое на Lookup табела


Main movlw 2
call Lookup
Lookup addwf PCL, f
retlw k
retlw k1
retlw k2
retlw k3
:
:
retlw kn

Табела 3.3. Фпрмираое на Lookup табела

Ппзицијата на шленпвите на табелата ја запищуваме вп W регистарпт и сп инструкцијата CALL ја


ппвикуваме ппдпрпграмата кпја всущнпст ни ја претставува Lookup табелата. Првипт ред пд ппдпрпграмата
addwf PCL, f, ја спбира ппзицијата на шленпт вп W регистарпт сп ппшетната адреса на табелата кпја се напда вп
PCL регистарпт и на тпј нашин ја дпбиваме вистинската адреса на ппдатпкпт вп прпграмската мемприја. При
враќаоетп пд ппдпрпграмата вп W регистарпт ќе ја имаме спдржината на адресиранипт шлен пд табелата. Вп
претхпднипт пример, пп враќаоетп пд ппдпрпграмата вп W регистарпт ќе биде кпнстантата “k2”.

Кпристени термини вп асемблер

f Билп кпја мемприска лпкација на микрпкпнтрплерпт


W Рабптен регистар
B Ппзиција на бит вп регистарпт
D Одредищен бит
label Наслпв сп најмнпгу 8 карактери кпј пзнашува ппшетнипт дел на прпграмата (или
ппдпрпграмата)
TOS Врвпт на стекпт (Top Of Stack)
[] Опција
<> Ппле на бит вп регистарпт

29
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

Детален ппис на инструкциите на PIC16F877A


MOVLW Запиши кпнстанта вп рабптнипт регистар W

Синтакса: [labela] MOVLW k


Ппис: 8 битната кпнстанта k ја запищува вп W регистарпт
Пперација: k => (W)
Пперанд: 0 ≤ k ≤ 255
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: MOVLW 0x5A
Пп изврщуваое на инструкцијата: W=0x5A
Пример 2: MOVLW REGISTAR
Пред изврщуваое на инструкцијата: W=0x10 и REGISTAR=0x40
Пп изврщуваое на инструкцијата: W=0x40

MOVWF Кппирај гп W вп f

Синтакса: [labela] MOVWF f


Ппис: Спдржината на W регистарпт се кппира вп f регистарпт
Пперација: (W) => f
Пперанд: 0 ≤ f ≤127
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: MOVWF OPTION_REG=0x20
Пред изврщуваое на инструкцијата: OPTION_REG=0x20 и W=0x40
Пп изврщуваое на инструкцијата: OPTION_REG=0x40 и W=0x40
Пример 2: MOVWF INDF
Пред изврщуваое на инструкцијата:
W=0x17, FSR=0xC2, спдржината на адресата 0xC2=0x00
Пп изврщуваое на инструкцијата:
W=0x17, FSR=0xC2, спдржината на адресата 0xC2=0x17

30
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

MOVF Кппирај гп f вп d

Синтакса: [labela] MOVF f,d


Ппис: Спдржината пд f регистарпт се сместува вп лпкација кпја е пдредена пд пперандпт
d.
Дпкплку d=0, пдредищте е W регистарпт
Дпкплку d=1, пдредищте е самипт f регистар
Опцијата d=1 се кпристи за тестираое на спдржината на f регистарпт, бидејќи
изврщуваоетп на пваа инструкција влијае на Z флегпт вп STATUS регистарпт
Пперација: (f) => d
Пперанд: 0 ≤ f ≤ 127
d =[0,1]
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: MOVF FSR, 0
Пред изврщуваое на инструкцијата: FSR=0xC2 и W=0x00
Пп изврщуваое на инструкцијата: W=0xC2 и Z=0
Пример 2: MOVF INDF, 0
Пред изврщуваое на инструкцијата: W=0x17, FSR=0xC2 и спдржината на адресата
0xC2=0x00
Пп изврщуваое на инструкцијата: W=0x17, FSR=0xC2, спдржината на адресата
0xC2=0x00, Z=1

CLRW Запиши 0 вп W

Синтакса: [labela] CLRW


Ппис: Спдржината на W се израмнува на 0, а Z флегпт вп STATUS регистарпт станува 1
Пперација: 0 => W
Пперанд:
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: CLRW
Пред изврщуваое на инструкцијата: W=0x55
Пп изврщуваое на инструкцијата: W=0x00 и Z=1

CLRF Запиши 0 вп f

Синтакса: [labela] CLRF f


Ппис: Спдржината на f регистарпт се изеднашува на 0, а Z флегпт вп STATUS регистарпт се
сетира на 1
Пперација: 0 => f
Пперанд:
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: CLRF STATUS
Пред изврщуваое на инструкцијата: STATUS=0xC2
Пп изврщуваое на инструкцијата: STATUS=0x00 и Z=1
Пример 2: CLRF INDF
Пред изврщуваое на инструкцијата: FSR=0xC2, спдржината на адресата 0xC2=0x33
Пп изврщуваое на инструкцијата: FSR=0xC2, спдржината на адресата 0xC2=0x00, Z=1

31
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

Замени ги местата на гпрната и дплната пплпвина пд бајтпт (пплпвина бајт е


SWAPF нибл – замени ги местата на гпрнипт и дплнипт нибл)
Синтакса: [labela] CLRF f, d
Ппис: Гпрната и дплната пплпвина пд f регистарпт ги заменуваат местата
Акп d=0, резултатпт се сместува вп W регистарпт
Акп d=1, резултатпт се сместува вп f регистарпт
Пперација: f <0:3> => d <4:7>, f <4:7> => d <0:3>
Пперанд: 0 ≤ f ≤ 127
d = [0,1]
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: SWAPF REG, 0
Пред изврщуваое на инструкцијата: REG=0xF3
Пп изврщуваое на инструкцијата: REG=0x3F, W=0x3F
Пример 2: SWAPF REG, 1
Пред изврщуваое на инструкцијата: REG=0xF3
Пп изврщуваое на инструкцијата: REG=0x3F

ADDLW Спбери W сп кпнстанта

Синтакса: [labela] ADDLW k


Ппис: Спдржината на W регистарпт се спбира сп 8 битна кпнстанта k и резултатпсе
сместува вп W регистарпт
Пперација: (W) + k => W
Пперанд: 0 ≤ k ≤ 255
Flag (Знаменце): C, DC, Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: ADDLW 0x15
Пред изврщуваоетп на инструкцијата: W=0x10
Пп изврщуваое на инструкцијата: W=0x25
Пример 2: ADDLW REG
Пред изврщуваоетп на инструкцијата: W=0x10, спдржината на регистарпт REG=0x37
Пп изврщуваое на инструкцијата: W=0x47

32
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

ADDWF Спбери W сп f

Синтакса: [labela] ADDWF f, d


Ппис: Се спбираат спдржината на W регистарпт и спдржината на f регистарпт
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Пперација: (W) + f => d
Пперанд: 0 ≤ f ≤ 127
d = [0,1]
Flag (Знаменце): C, DC, Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: ADDWF FSR, 0
Пред изврщуваоетп на инструкцијата: W=0x17, FSR=0xC2
Пп изврщуваоетп на инструкцијата: W=0xD9, FSR=0xC2
Пример 2: ADDWF INDF, 1
Пред изврщуваоетп на инструкцијата: W=0x17, FSR=0xC2, спдржината на адресата
0xC2=0x20
Пп изврщуваоетп на инструкцијата: W=0x17, FSR=0xC2, спдржината на адресата
0xC2=0x37

SUBLW Пдземи W пд кпнстанта

Синтакса: [labela] SUBLW k


Ппис: Спдржината пд W регистарпт се пдзема пд кпнстантата k и резултатпт се сместува
вп W регистарпт
Пперација: k – (W) => W
Пперанд: 0 ≤ k ≤ 255
Flag (Знаменце): C, DC, Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: SUBLW 0x03
Пред изврщуваоетп на инструкцијата: W=0x01, C=x, Z=x
Пп изврщуваоетп на инструкцијата: W=0x02, C=1, Z=0 резултатпт е ппзитивен

Пред изврщуваоетп на инструкцијата: W=0x03, C=x, Z=x


Пп изврщуваоетп на инструкцијата: W=0x00, C=1, Z=1 резултатпт е нула

Пред изврщуваоетп на инструкцијата: W=0x04, C=x, Z=x


Пп изврщуваоетп на инструкцијата: W=0xFF, C=0, Z=0 резултатпт е негативен
Пример 2: SUBLW REG
Пред изврщуваоетп на инструкцијата: W=0x10, спдржината на REG=0x37
Пп изврщуваоетп на инструкцијата: W=0x27, C=1 резултатпт е ппзитивен

33
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

SUBWF Пдземи W пд f

Синтакса: [labela] SUBWF f, d


Ппис: Спдржината на W регистарпт се пдзема пд спдржината на f регистарпт
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Пперација: (f) – (W) => d
Пперанд: 0 ≤ f ≤ 127
d=[0,1]
Flag (Знаменце): C, DC, Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: SUBWF REG, 1
Пред изврщуваоетп на инструкцијата: REG=3, W=2, C=x, Z=x
Пп изврщуваоетп на инструкцијата: REG=1, W=2, C=1, Z=0 резултатпт е ппзитивен

Пред изврщуваоетп на инструкцијата: REG=2, W=2, C=x, Z=x


Пп изврщуваоетп на инструкцијата: REG=0, W=2, C=1, Z=1 резултатпт е нула

Пред изврщуваоетп на инструкцијата: REG=1, W=2, C=x, Z=x


Пп изврщуваоетп на инструкцијата: REG=0xFF, W=2, C=0, Z=0 резултатпт е негативен

ANDLW Лпгичкп И, W сп кпнстанта

Синтакса: [labela] ANDLW k


Ппис: Врщи пперација, лпгишкп И, над спдржината на W регистарпт и кпнстантата k.
Резултатпт се сместува вп W регистарпт
Пперација: (W) .AND. k => W
Пперанд: 0 ≤ k ≤ 255
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: ANDLW 0x5F
Пред изврщуваоетп на инструкцијата: W=0xA3 ; 0101 1111 (0x5F)
Пп изврщуваоетп на инструкцијата: W=0x03 ; 1010 0011 (0xA3)
; 0000 0011
Пример 2: ANDLW REG
Пред изврщуваоетп на инструкцијата: W=0xA3 ; 1010 0011 (0xA3)
REG=0x37; 0011 0111 (0x37)
Пп изврщуваоетп на инструкцијата: W=0x23 ; 0010 0011 (0x23)

34
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

ANDWF Лпгичкп И, W сп f

Синтакса: [labela] ANDLW f, d


Ппис: Врщи пперација, лпгишкп И, над спдржината на W и f регистрите
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Пперација: (W) .AND. (f) => d
Пперанд: 0 ≤ f ≤ 127
d=[0,1]
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: ANDWF FSR, 1
Пред изврщуваоетп на инструкцијата: W=0x17, FSR=0xC2; 0001 0111 (0x17)
Пп изврщуваоетп на инструкцијата: W=0x17, FSR=0x02 ; 1100 0010 (0xC2)
; 0000 0010 (0xC2)
Пример 2: ANDWF FSR, 0
Пред изврщуваоетп на инструкцијата: W=0x17, FSR=0xC2; 0001 0111 (0x17)
Пп изврщуваоетп на инструкцијата: W=0x17, FSR=0x02 ; 1100 0010 (0xC2)
; 0000 0010 (0xC2)

IORLW Лпгичкп ИЛИ, W сп кпнстанта

Синтакса: [labela] IORLW k


Ппис: Над спдржината на W регистарпт и 8 битната кпнстанта k се врщи пперацијата,
лпгишкп ИЛИ и резултатпт се сместува вп W регистарпт
Пперација: (W) .OR. k => W
Пперанд: 0 ≤ k ≤ 255
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: IORLW 0x35
Пред изврщуваоетп на инструкцијата: W=0x9A
Пп изврщуваоетп на инструкцијата: W=0xBF, Z=0
Пример 2: IORLW REG
Пред изврщуваоетп на инструкцијата: W=0x9A, REG=0x37
Пп изврщуваоетп на инструкцијата: W=0xBF, Z=0

35
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

IORWF Лпгичкп ИЛИ, W сп f

Синтакса: [labela] IORLW f, d


Ппис: Над спдржините на W и f регистрите, се врщи пперацијата лпгишкп ИЛИ
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Пперација: (W) .OR. (f) => d
Пперанд: 0 ≤ f ≤ 127
d=[0,1]
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: IORLW REG, 0
Пред изврщуваоетп на инструкцијата: REG=0x13, W=0x91
Пп изврщуваоетп на инструкцијата: REG=0x13, W=0x93, Z=0
Пример 2: IORLW REG, 1
Пред изврщуваоетп на инструкцијата: REG=0x13, W=0x91
Пп изврщуваоетп на инструкцијата: REG=0x93, W=0x91, Z=0

XORLW Лпгичкп исклучивп ИЛИ, W сп кпнстанта

Синтакса: [labela] XORLW k


Ппис: Над спдржината на W регистарпт и кпнстантата k се врщи пперацијата, исклушивп
ИЛИ и резултатпт се сместува вп W регистарпт
Пперација: (W) .XOR. k => W
Пперанд: 0 ≤ k ≤ 255
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: XORLW 0xAF
Пред изврщуваоетп на инструкцијата: W=0xB5; 1010 1111 (0xAF)
Пп изврщуваоетп на инструкцијата: W=0x1A ; 1011 0101 (0xB5)
; 0001 1010 (0x1A)
Пример 2: XORLW REG
Пред изврщуваоетп на инструкцијата: W=0xAF; 1010 1111 (0xAF)
REG=0x37; 0011 0111 (0x37)
Пп изврщуваоетп на инструкцијата: W=0x98 ; 1001 1000 (0x98), Z=0

36
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

XORWF Лпгичкп исклучивп ИЛИ, W сп f

Синтакса: [labela] XORWF f, d


Ппис: Над спдржината на W и f регистрите се врщи лпгишката пперација, исклушивп ИЛИ
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Пперација: (W) .XOR. (f) => d
Пперанд: 0 ≤ f ≤ 127
d=[0,1]
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1:
Пример 2:

INCF Инкрементирај гп (згплеми за 1) f

Синтакса: [labela] INCF f, d


Ппис: Згплеми ја спдржината на f регистарпт за 1
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Пперација: (f) + 1 => d
Пперанд: 0 ≤ f ≤ 127
d=[0,1]
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: INCF REG, 1
Пред изврщуваоетп на инструкцијата: REG=0xFF, Z=0
Пп изврщуваоетп на инструкцијата: REG=0x00, Z=1
Пример 2: INCF REG, 0
Пред изврщуваоетп на инструкцијата: REG=0x10, W=x, Z=0
Пп изврщуваоетп на инструкцијата: REG=0x10, W=0x11, Z=0

DECF Декрементирај гп (намали за 1) f

Синтакса: [labela] DECF f, d


Ппис: Намали ја спдржината на f регистарпт за 1
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Пперација: (f) - 1 => d
Пперанд: 0 ≤ f ≤ 127
d=[0,1]
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: DECF REG, 1
Пред изврщуваоетп на инструкцијата: REG=0x01, Z=0
Пп изврщуваоетп на инструкцијата: REG=0x00, Z=1
Пример 2: INCF REG, 0
Пред изврщуваоетп на инструкцијата: REG=0x13, W=x, Z=0
Пп изврщуваоетп на инструкцијата: REG=0x10, W=0x12, Z=0

37
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

RLF Рптирај гп пд левп f, преку Carry


Синтакса: [labela] RLF f, d
Ппис: Спдржината на f регистарпт се рптира за еднп местп вп левп преку C (Carry) флегпт
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Пперација: (f<n>) => d <n+1>, (f<7>) => C, C => d<0>
Пперанд: 0 ≤ f ≤ 127
d=[0,1]
Flag (Знаменце): C
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: RLF REG, 0
Пред изврщуваоетп на инструкцијата: REG=1110 0110, C=0
Пп изврщуваоетп на инструкцијата: REG= 1110 0110, W=11001100, C=1
Пример 2: RLF REG, 1
Пред изврщуваоетп на инструкцијата: REG=1110 0110, C=0
Пп изврщуваоетп на инструкцијата: REG=1100 1100, C=1

RRF Рптирај гп пд деснп f, преку Carry

Синтакса: [labela] RRF f, d


Ппис: Спдржината на f регистарпт се рптира за еднп местп вп деснп преку C (Carry) флегпт
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Пперација: (f<n>) => d <n-1>, (f<0>) => C, C => d<7>
Пперанд: 0 ≤ f ≤ 127
d=[0,1]
Flag (Знаменце): C
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: RLF REG, 0
Пред изврщуваоетп на инструкцијата: REG=1110 0110, W=x, C=0
Пп изврщуваоетп на инструкцијата: REG= 1110 0110, W=0111 0011, C=0
Пример 2: RLF REG, 1
Пред изврщуваоетп на инструкцијата: REG=1110 0110, C=0
Пп изврщуваоетп на инструкцијата: REG=0111 0011, C=0

38
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

COMF Кпмплементирај гп f

Синтакса: [labela] COMF f, d


Ппис: Спдржината на f регистарпт се кпмплементира
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Пперација: (f)  d
Пперанд: 0 ≤ f ≤127
d=[0,1]
Flag (Знаменце): Z
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: COMF REG, 0
Пред изврщуваоетп на инструкцијата: REG=0x13; 0001 0011 (0x13)
; кпмплементирај
Пп изврщуваоетп на инструкцијата: REG=0x13;-----------------------------
W=0xEC; 1110 1100 (0xEC)
Пример 2: COMF INDF, 1
Пред изврщуваоетп на инструкцијата: FSR=0xC2, спдржината на адресата
(FSR)=0xАА
Пп изврщуваоетп на инструкцијата: FSR=0xC2, спдржината на адресата (FSR)=0x55

BCF Ресетирај гп битпт b вп f

Синтакса: [labela] BCF f, b


Ппис: Ресетирај гп битпт b вп регистарпт f
Пперација: (0)=> f<b>
Пперанд: 0 ≤ f ≤ 127
0≤b≤7
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: BCF REG, 7
Пред изврщуваоетп на инструкцијата: REG=0xC7; 1100 0111 (0xC7)
Пп изврщуваоетп на инструкцијата: REG=0x47; 0100 0111 (0x47)
Пример 2: BCF INDF, 3
Пред изврщуваоетп на инструкцијата: W=0x17. FSR=0xC2, спдржината на адресата
(FSR)=0x2F
Пп изврщуваоетп на инструкцијата: W=0x17, FSR=0xC2, спдржината на адресата
(FSR)=0x27

39
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

BSF Сетирај гп битпт b вп f

Синтакса: [labela] BSF f, b


Ппис: Сетирај гп битпт b вп регистарпт f
Пперација: (1)=>f<b>
Пперанд: 0 ≤ f ≤ 127
0≤b≤7
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: BSF REG, 7
Пред изврщуваоетп на инструкцијата: REG=0x07; 0000 0111 (0x07)
Пп изврщуваоетп на инструкцијата: REG=0x87; 1000 0111 (0x87)
Пример 2: BSF INDF, 3
Пред изврщуваоетп на инструкцијата: W=0x17, FSR=0xC2, спдржината на адресата
(FSR)=0x20
Пп изврщуваоетп на инструкцијата: W=0x17, FSR=0xC2, спдржината на адресата
(FSR)=0x28

BTFSC Тестирај гп битпт b вп f, прескпкни акп е =0

Синтакса: [labela] BTFSC f, b


Ппис: Акп битпт b вп регистарпт f, еднакпв на 0, тпгащ се преминува на следна
инструкција. Дпкплку битпт b е еднакпв на нула, за време на изврщуваоетп на
текпвната инструкција, се пневпзмпжува изврщуваое на следната инструкција, па
наместп неа се изврщува NOP инструкцијата, правејќи ја сп тпа текпвната
инструкција, двпциклусна
Пперација: Ја прескпкнува следната инструкција акп (f<b>)=0
Пперанд: 0 ≤ f ≤ 127
0≤b≤7
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 1 или 2, вп зависнпст пд битпт b
Пример 1: LAB_01 BTFSC REG, 1 ; тестирај гп битпт брпј еден вп REG
LAB_02 ……… ; прескпкни ја пваа линија, акп е =0
LAB_03 ........ ; Овде скпкни акп е =0
Пред инструкцијата, прпграмскипт брпјаш бил на адреса LAB_01
Пп инструкцијата, акп вп REG првп билп 0, прпграмскипт брпјаш прпдплжува на
адреса LAB_03
Акп вп REG регистарпт првп билп еден, прпграмскипт брпјаш ппкажува на LAB_02

40
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

BTFSS Тестирај гп битпт b вп f, прескпкни акп е =1

Синтакса: [labela] BTFSS f, b


Ппис: Акп битпт b вп регистарпт f, еднакпв на 1, тпгащ се преминува на следна
инструкција. Дпкплку битпт b е еднакпв на еден, за време на изврщуваоетп на
текпвната инструкција, се пневпзмпжува изврщуваое на следната инструкција, па
наместп неа се изврщува NOP инструкцијата, правејќи ја сп тпа текпвната
инструкција, двпциклусна
Пперација: Ја прескпкнува следната инструкција акп (f<b>)=1
Пперанд: 0 ≤ f ≤ 127
0≤b≤7
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 1 или 2, вп зависнпст пд битпт b
Пример 1: LAB_01 BTFSS REG, 1 ; тестирај гп битпт брпј еден вп REG
LAB_02 ……… ; прескпкни ја пваа линија, акп е =1
LAB_03 ........ ; Овде скпкни акп е =1
Пред инструкцијата, прпграмскипт брпјаш бил на адреса LAB_01
Пп инструкцијата, акп вп REG првп билп 1, прпграмскипт брпјаш прпдплжува на
адреса LAB_03
Акп вп REG регистарпт првп билп нула, прпграмскипт брпјаш ппкажува на LAB_02

DECFSZ Декрементирај гп f, прескпкни акп е 0

Синтакса: [labela] DECFSZ f, d


Ппис: Спдржината на f регистарпт се намалува за еден
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Дпкплку резултатпт е =0, следната инструкција се изврщува какп NOP, правејќи ја сп
тпа текпвната инструкција двпциклусна
Пперација: (f) – 1=>d
Пперанд: 0 ≤ f ≤ 127
0≤b≤7
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 1 или 2, вп зависнпст пд резултатпт
Пример 1: LAB_01 DECFSZ CNT, 1 ; намали ја спдржината на регистарпт за 1
LAB_02 ……… ; прескпкни ја пваа линија, акп е =0
LAB_03 ........ ; Овде скпкни акп е =0
Спдржината на прпграмскипт брпјаш пред инструкцијата, PC=адреса LAB_01
Спдржината на CNT регистарпт, пп изврщуваое на инструкцијата е CNT=CNT+1,
дпкплку е CNT=0, прпграмскипт брпјаш ппкажува на адресата на лабелата LAB_03.
Вп спрптивнп, прпграмскипт брпјаш ќе ппкажува на адресата на следната
инструкција т.е. на LAB_02

41
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

INCFSZ Инкрементирај гп f, прескпкни акп е 0

Синтакса: [labela] INCFSZ f, d


Ппис: Спдржината на f регистарпт се згплемува за еден
Акп d=0 резултатпт се сместува вп W регистарпт
Акп d=1 резултатпт се сместува вп f регистарпт
Дпкплку резултатпт е =0, следната инструкција се изврщува какп NOP, правејќи ја сп
тпа текпвната инструкција двпциклусна
Пперација: (f) + 1=>d
Пперанд: 0 ≤ f ≤ 127
0≤b≤7
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 1 или 2, вп зависнпст пд резултатпт
Пример 1: LAB_01 INCFSZ REG, 1 ; згплеми ја спдржината на регистарпт за 1
LAB_02 ……… ; прескпкни ја пваа линија, акп е =0
LAB_03 ........ ; Овде скпкни акп е =0
Спдржината на прпграмскипт брпјаш пред инструкцијата, PC=адреса LAB_01
Спдржината на REG регистарпт, пп изврщуваое на инструкцијата е REG=REG+1,
дпкплку е REG=0, прпграмскипт брпјаш ппкажува на адресата на лабелата LAB_03.
Вп спрптивнп, прпграмскипт брпјаш ќе ппкажува на адресата на следната
инструкција т.е. на LAB_02

GOTO Скпкни на адреса

Синтакса: [labela] GOTO k


Ппис: Безуслпвен скпк на адресата k
Пперација: (k)=>PC <10:0> (PCLATCH <4:3>)=>PC <12:11>
Пперанд: 0 ≤ k ≤ 2048
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 2
Пример 1: LAB_00 GOTO LAB_01 ; скпкни на лабелата LAB_01
:
:
LAB_01 ………
Пред инструкцијата PC= адресата на LAB_00
Пп инструкцијата PC= адреса LAB_01

42
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

CALL Ппвикај ппдпрпграма

Синтакса: [labela] CALL k


Ппис: Инструкцијата ппвикува ппдпрпграма. Првп, адресата за враќаое (PC+1) се
сместува вп стек, а пптпа 11 битнипт директен пперанд k, кпј ја спдржи адресата на
ппдпрпграмата, се сместува вп прпграмскипт брпјаш
Пперација: (PC)+1=> врв на стекпт (анг. Top Of Stack – TOS)
k=>PC <10:0>, (PCLATCH <4:3>) => PC <12:11>
Пперанд: 0 ≤ k ≤2048
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 2
Пример 1: LAB_01 CALL LAB_02; Ппвикај ја ппдпрпграмата LAB_02
:
:
LAB_02 …………
Пред изврщуваоетп на инструкцијата: PC=адреса LAB_01, TOS (врв на стекпт)=x
Пп изврщуваоетп на инструкцијата: PC=адреса LAB_02, TOS (врв на стекпт)=LAB_01

RETURN Враќаое пд ппдпрпграма

Синтакса: [labela] RETURN


Ппис: Спдржината пд врвпт на стекпт се сместува вп прпграмскипт брпјаш (PC)
Пперација: TOS => прпграмски брпјаш PC
Пперанд: /
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 2
Пример 1: RETURN
Пред изврщуваоетп на инструкцијата: PC=x, TOS=x
Пп изврщуваоетп на инструкцијата: PC=TOS, TOS=TOS-1

RETLW Враќаое пд ппдпрпграма сп кпнстанта вп W

Синтакса: [labela] RETLW k


Ппис: 8 битна кпнстанта k се сместува вп W регистарпт, а вп прпграмскипт брпјаш се
сместува вреднпста пд врвпт пд стекпт
Пперација: (k)=>W; врвпт на стекпт (TOS)=> PC
Пперанд: 0 ≤ k ≤255
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 2
Пример 1: RETLW 0x43
Пред изврщуваоетп на инструкцијата: W=x, PC=x, TOS=x
Пп изврщуваоетп на инструкцијата: W=0x43, PC=TOS, TOS=TOS-1

43
[МИКРПКПНТРПЛЕРИ PIC16F877A] Асс. Бранислав Геразпв

RETFIE Враќаое пд прекин (Interrupt)

Синтакса: [labela] RETIE


Ппис: Враќаое пд ппдпрпграма. Вреднпста пд TOS се сместува вп прпграмскипт брпјаш
PC. Прекините (Interrupt) се пвпзмпжуваат сп сетираое на GIE – битпт. (анг. Global
Interrupt Enable – GIE)
Пперација: (TOS)=> PC; 1=>GIE
Пперанд: /
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 2
Пример 1: RETFIE
Пред изврщуваоетп на инструкцијата: PC=x, GIE (битпт за дпзвпла на прекините вп
STATUS регистарпт = 0
Пп изврщуваоетп на прпграмата: PC=TOS (Врв на стекпт), GIE=1

NOP “Празна пперација” (нема пперација)

Синтакса: [labela] NOP


Ппис: Не изврщува ни една пперација, нити пак влијае на билп кпј флег
Пперација: /
Пперанд: /
Flag (Знаменце): /
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: NOP
Пред изврщуваоетп на инструкцијата: PC=x,
Пп изврщуваоетп на прпграмата: PC=x+1

CLRWDT Иницијализирај гп Watchdog Timer-пт

Синтакса: [labela] CLRWDT


Ппис: Гп ресетира Watchdog Timer-пт. Истп така се ресетира и прескалерпт на Watchdog
Timer-пт, а статусните битпви TO и PD се сетираат
Пперација: 0=>WDT
0=>WDT прескалер
1=>TO
1=>PD
Пперанд: /
Flag (Знаменце): TO, PD
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: CLRWDT
Пред изврщуваоетп на инструкцијата: WDT брпјаш=x, WDT прескалер=1:128
Пп изврщуваоетп на прпграмата: WDT брпјаш=0x00, WDT прескалер брпјаш=0, TO=1,
PD=1, WDT прескалер=1:128

44
Прпф. Д-р Љупшп Карачинпв [МИКРПКПНТРПЛЕРИ PIC16F877A]

SLEEP Премини вп Standby mode

Синтакса: [labela] SLEEP


Ппис: Прпцеспрпт влегува вп мпд на ниска пптрпщувашка. Осцилатпрпт е запрен. PD
(Power Down) статуснипт бит е ресетиран. TO (Time Out) битпт е сетиран. WDT
(Watchdog Timer) и негпвипт прескалер се ресетирани.
Пперација: 0=>WDT
0=>WDT прескалер
1=>TO
1=>PD
Пперанд: /
Flag (Знаменце): TO, PD
Брпј на збпрпви: 1
Брпј на циклуси: 1
Пример 1: SLEEP
Пред изврщуваоетп на инструкцијата: WDT брпјаш=x, WDT прескалер=x
Пп изврщуваоетп на прпграмата: WDT брпјаш=0x00, WDT прескалер брпјаш=0, TO=1,
PD=0

45

You might also like