ЗНАЕТЕ ИНТУИТ, Лекция, Специални функции и командна система на PIC микроконтролери
5.3. Набор от инструкции за подгрупа на микроконтролера PIC16F8X
5.3.1. Списък и формати на команди
Микроконтролерите в подгрупата PIC16F8X имат прост и ефективен набор от инструкции от само 35 инструкции.
Всяка MK инструкция на подгрупата PIC16F8X е 14-битова дума, разделена на операционен код (OPCODE) и поле за един или повече операнди, които могат или не могат да участват в тази инструкция. Наборът от инструкции PIC16F8X е ортогонален и включва байтови инструкции, битови инструкции и постоянни и контролни инструкции. Таблица 5.10 показва описанията на командните полета.
d = 0 - резултат в регистър w
d = 1 - резултат в регистър f
По подразбиране d = 1
За да работят команди с байтове, f означава регистъра, с който се извършва действието; d е малко, което определя къде да се постави резултатът. Ако d = 0, тогава резултатът ще бъде поставен в w регистъра, с d = 1 резултатът ще бъде поставен в регистъра "f", споменат в командата.
За битови инструкции b означава номера на бита, включен в командата, а f е регистърът, в който се намира този бит.
За команди за прехвърляне на управление и постоянни операции, k означава осем- или единадесет битова константа.
Почти всички команди се изпълняват в рамките на един команден цикъл. В два случая изпълнението на командата отнема два командни цикъла:
- проверка на състоянието и преход;
- промяна на брояча на програмата в резултат на изпълнение на команда.
Един команден цикъл се състои от четири генераторни периода. По този начин за генератор с честота 4 MHz времето за изпълнение на командния цикъл ще бъде 1 μs.
Основните формати на MK команди са показани на фиг. 5.15.
Командната система на подгрупата MK PIC16F8X е дадена в табл. 5.11.

Бележки към таблицата:
- Ако I/O регистърът е модифициран (например MOVF PORTB, 1), тогава се използва стойността, прочетена от щифтовете. Например, ако изходният резе на порта, свързан към входа, съдържа „1“ и външното устройство генерира „0“ на този щифт, тогава „0“ ще бъде записано в бита за данни.
- Ако операндът на инструкцията е съдържанието на регистъра TMRO (и ако е приложимо, d = 1), тогава предкаскалът, ако е свързан към TMRO, ще бъде изчистен.
- Ако в резултат на изпълнението на командата се промени броячът на команди или се извърши скок за проверка на състоянието, командата се изпълнява в два цикъла. Вторият цикъл се изпълнява като NOP .
5.3.2. Байтови команди
За изчистване на МК регистрите се използват специални команди CLRF f и CLRW. Командата CLRF f записва нула в посочения регистър, а командата CLRW записва в работния регистър. Трябва да се помни, че те също така задават съответната стойност на нулевия бит.
Най-често използваната аритметична операция е събирането, което се извършва от инструкцията ADDWF f, d. Тази операция може да промени всички битове за състояние. Бит нула е зададен на 1, ако логическата операция И върху резултата и числото 0x0FF (255) води до нула. Носещият бит е зададен на 1, ако резултатът е по-голям от 0x0FF. Десетичният бит за пренасяне е зададен на 1, ако сумата от четирите най-малко значими бита на резултата е по-голяма от 0x0F (15).