ЗНАЕТЕ ИНТУИТ, Лекция, Специални функции и командна система на 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.

специални

Бележки към таблицата:

  1. Ако I/O регистърът е модифициран (например MOVF PORTB, 1), тогава се използва стойността, прочетена от щифтовете. Например, ако изходният резе на порта, свързан към входа, съдържа „1“ и външното устройство генерира „0“ на този щифт, тогава „0“ ще бъде записано в бита за данни.
  2. Ако операндът на инструкцията е съдържанието на регистъра TMRO (и ако е приложимо, d = 1), тогава предкаскалът, ако е свързан към TMRO, ще бъде изчистен.
  3. Ако в резултат на изпълнението на командата се промени броячът на команди или се извърши скок за проверка на състоянието, командата се изпълнява в два цикъла. Вторият цикъл се изпълнява като NOP .

5.3.2. Байтови команди

За изчистване на МК регистрите се използват специални команди CLRF f и CLRW. Командата CLRF f записва нула в посочения регистър, а командата CLRW записва в работния регистър. Трябва да се помни, че те също така задават съответната стойност на нулевия бит.

Най-често използваната аритметична операция е събирането, което се извършва от инструкцията ADDWF f, d. Тази операция може да промени всички битове за състояние. Бит нула е зададен на 1, ако логическата операция И върху резултата и числото 0x0FF (255) води до нула. Носещият бит е зададен на 1, ако резултатът е по-голям от 0x0FF. Десетичният бит за пренасяне е зададен на 1, ако сумата от четирите най-малко значими бита на резултата е по-голяма от 0x0F (15).