PIC нұсқаулықтарының тізімдері - PIC instruction listings

The PIC нұсқаулар жинағы нұсқаулар жиынтығына сілтеме жасайды Microchip технологиясы PIC немесе dsPIC микроконтроллер тіректер. Нұсқаулар әдетте бағдарламаланған Флэш-жад процессордың және микроконтроллер іске қосқан кезде автоматты түрде орындалады.

PICmicro чиптерінде а Гарвард сәулеті және нұсқаулық сөздері ерекше өлшемдер болып табылады. Бастапқыда 12-биттік нұсқаулықта оперативті жадты көрсетуге арналған 5 адрестік бит және 9-разрядты тармақталған бағыттар бар. Кейінірек түзетулер қосымша мекенжай биттеріне мүмкіндік беретін опкод биттерін қосты.

Нұсқаулықтар кестесінде регистр нөмірлері «f», ал тұрақтылар «k» деп аталады. Бит сандары (0-7) «b» таңдалады. «D» биті тағайындалған орынды таңдайды: 0 W, ал 1 нәтиже f регистріне қайта жазылатынын білдіреді. C және Z күйінің жалаулары нәтижеге байланысты орнатылуы мүмкін; әйтпесе олар өзгертілмеген. С-ны орнататын нұсқаулықтарды қосыңыз және алып тастаңыз (бірақ айналдырмаңыз) сонымен қатар тұрақты (сандық тасымалдау) жалаушасын орнатыңыз, тасымалдау 3-биттен 4-битке дейін пайдалы, бұл BCD арифметикалық.

Сәулет

Жад операндтары «регистрлер» деп те аталады. Олардың көпшілігі қарапайым мақсаттағы жад (RAM), ал кейбір орындарға арналған арнайы функция регистрлері. Бір аккумулятордан басқа (деп аталады) W), қалған барлық регистрлер жадпен бейнеленген, тіпті регистрлер сияқты бағдарлама санағышы және ALU күй регистрі. (Жадпен салыстырылмайтын басқа ерекшеліктер - қайтарылатын мекен-жайлар стегі және үш мемлекет теңшеу үшін қолданылатын регистрлер GPIO түйреуіштер.)

Нұсқаулар жиынтығында шартты тармақталған нұсқаулар жоқ. Оның орнына келесі нұсқаулықты елемеуге себеп болатын шартты өткізіп жіберу нұсқаулары бар. Шартты скип, одан кейін сөзсіз тармақ шартты тармақты орындайды. Өткізіп жіберу нұсқаулығы кез-келген регистрдің кез-келген бөлігін тексереді. ALU мәртебесін тіркеу - бұл бір мүмкіндік.

Жад операндтары көрсетілген абсолютті мекен-жай; орналасқан жері белгіленген жинақтау уақыты. Жанама адрестеуді қамтамасыз ету үшін арнайы функциялар регистрінің жұбы ұсынылады:

  • The файлды таңдау регистрі (FSR) қажетті жад операндының адресі бойынша жазылады, содан кейін
  • The жанама файл тіркелу (INDF) айналады бүркеншік ат операнд үшін нұсқады FSR.

Бұл механизм сонымен қатар, егер командалар жинағы 5 немесе 7 биттік операндаларға ғана рұқсат етсе де, 256 байтқа дейінгі жадыны шешуге мүмкіндік береді. Нұсқаулыққа қарағанда көбірек регистрлері бар модельдер (арнайы функционалды регистрлер және жедел жады) бірнеше жад банктерін қамтамасыз етеді және оларға қол жеткізудің екі механизмінің бірін пайдаланады:

  1. Бастапқы негізгі құрылғылардың көпшілігі және кейбір орта деңгейлі негізгі құрылғылар ағымдағы регистр банкін таңдау үшін файлдарды таңдау регистрінің жоғары ретті биттерін пайдаланады.
  2. Жақында шығарылған модельдердің жеке бөлімі бар банк таңдау тізіліміжәне а MOVLB оны орнату туралы нұсқаулық.

Бағдарламаның 256 сөзден асатын PIC процессорлары беттік жадты қолданады. Бағдарламаның ішкі есептегіші және қайтару стегі барлық жадты шешу үшін қажет болғанша кең, бірақ тек төмен 8 бит қана бағдарламалық жасақтамаға көрінеді PCL («ДК төмен») тіркеу. Қосымша бар PCLATH («PC latch high») регистр, оны тек бағдарламалық жасақтама өзгертеді. Толық тағайындалған мекен-жайды көрсетпейтін кез-келген операция (мысалы, 9 биттік) БАРУ немесе ДК регистріне 8-биттік жазу) PCLATH сәйкес бөлігінен қосымша жоғары биттерді толтырады. (Кейбір PIC18 процессорлары PCLATU регистрімен 16 биттен асып, 16–23 биттерді жеткізеді.)

Негізгі ядролық құрылғылар (12 бит)

12 биттік PIC нұсқаулар жинағы
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
Сипаттама
0000000опкодӘр түрлі нұсқаулар
000000000000ЖОҚОперация жоқ (MOVW 0, W)
000000000010ОПЦИЯW-ті OPTION тіркеліміне көшіріңіз
000000000011ҰЙҚЫКүту режиміне өтіңіз
000000000100CLRWDTҚарауыл таймерін қайта қосыңыз
0000000001fТРИС fW-ді үш регистрге көшіру (f = 1, 2 немесе 3)
000000010кMOVLB к*Банк таңдау регистрін орнатыңыз к
000000011110ҚАЙТУБағдарламадан оралу, W өзгертілмеген
000000011111RETFIEҮзілістен оралу; қайтару және үзілістерді қосу
00опкодг.тіркелуALU операциялары: dest ← OP (f, W)
0000001fMOVWF ff ← ​​W
000001г.fCLR f,г.Зdest ← 0, әдетте CLRW немесе CLRF жазылады f
000010г.fSUBWF f,г.CЗdest ← f − W (dest ← f + ~ W + 1)
000011г.fDECF f,г.Зdest ← f − 1
000100г.fIORWF f,г.Зdest ← f | W, қисынды немесе
000101г.fANDWF f,г.Зdest ← f & W, логикалық және
000110г.fXORWF f,г.Зdest ← f ^ W, логикалық эксклюзивті немесе
000111г.fADDWF f,г.CЗdest ← f + W
001000г.fMOVF f,г.Зdest ← f
001001г.fCOMF f,г.Зdest ← ~ f, биттік толықтауыш
001010г.fINCF f,г.Зdest ← f + 1
001011г.fDECFSZ f,г.dest ← f − 1, содан кейін нөлге өтіңіз
001100г.fRRF f,г.Cdest ← CARRY << 7 | f >> 1, тасымалдау арқылы айналдырыңыз
001101г.fRLF f,г.Cdest ← F << 1 | ТАСЫҢЫЗ, тасымалдау арқылы солға бұраңыз
001110г.fSWAPF f,г.dest ← f << 4 | f >> 4, ниблдерді ауыстыру
001111г.fINCFSZ f,г.dest ← f + 1, содан кейін нөлге өтіңіз
01оптбиттіркелуБит операциялары
0100битfBCF f,бF-тің b биті таза
0101битfBSF f,б$ F $ битін қойыңыз
0110битfBTFSC f,бЕгер f-тің биті анық болса, өткізіп жіберіңіз
0111битfБТФСС f,бЕгер f битінің биті орнатылса, өткізіп жіберіңіз
10опткТрансферттерді басқару
1000кRETLW кW ← k орнатыңыз, содан кейін ішкі бағдарламадан оралыңыз
1001кҚОҢЫРАУ кБағдарламалық жасақтамаға қоңырау шалыңыз, 8-разрядты адрес k
101кБАРУ к9-биттік мекен-жайға өту k[1]
11опт8 бит дереуW және 8-биттік әріптермен жұмыс: W ← OP (k, W)
1100кMOVLW кW ← k
1101кIORLW кЗW ← k | W, қисынды логикалық немесе
1110кANDLW кЗW ← k & W, биттік және
1111кXORLW кЗW ← k ^ W, биттік эксклюзивті немесе
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
Сипаттама

*: Кеңейтілген нұсқаулық, көптеген 12 биттік PIC-терде жоқ. Ұзартылған оперативті жады бар модельдердің көпшілігі (мысалы, 16C5x, 16F5x) регистрдің мекен-жай кеңістігін FSR жоғары ретті биттерін қолдана отырып кеңейтеді. Бірнешеуінде (мысалы, PIC12F529T39A) осы нұсқаулықпен орнатылатын жеке банктік таңдау регистрі бар.
†: кеңейтілген нұсқаулық, тек «жақсартылған базалық сызбада» қол жетімді. Бұл нұсқаулықты тек қана үзілісті қолдаумен (және 4 деңгейлі стекпен) аз ғана модельдер (16F527, 16F570, MCV20A) қамтиды. Барлық осындай модельдерге MOVLB кіреді.

ELAN микроэлектроника клондары (13 бит)

ELAN Microelectronics Corp. 13 биттік командалық сөзі бар PICmicro тәрізді микроконтроллерлер қатарын жасаңыз.[2] Нұсқаулар көбінесе орта ауқымдағы 14 биттік нұсқаулар жиынтығымен үйлеседі, бірақ 6 биттік регистр мекен-жайы (16 арнайы регистр және 48 байт жедел жады) және 10 биттік (1024 сөз) бағдарлама кеңістігімен шектеледі.

Бағдарламаның 10-биттік есептегішіне R2 ретінде қол жетімді. Тек төмен биттерге қол жеткізеді, ал жоғары биттерді анық жазады. 8 және 9 биттерін сақтай отырып, төменгі байтты өзгертетін TBL нұсқауы ерекше жағдай.

Аккумуляторға жедел 7 нұсқаулық 14-биттік PICmicro-ге қатысты қайта нөмірленеді, олар 4 емес, 3 опкодтық биттерге сәйкес келеді, бірақ олардың бәрі де бар, сонымен қатар қосымша бағдарламалық жасақтаманы үзуге арналған нұсқаулық.

Бірнеше қосымша нұсқаулар бар, және терминологияда кейбір өзгерістер бар (PICmicro OPTION регистрі CONTrol регистрі деп аталады; PICmicro TRIS 1-3 регистрлері 5-7 енгізу-шығару бақылау регистрлері деп аталады), бірақ олардың баламалары айқын.

13 биттік EM78 нұсқаулар жинағы[3][4]
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
Сипаттама
0000000опкодӘр түрлі нұсқаулар
0000000000000ЖОҚ*Операция жоқ (MOVW 0, W)
0000000000001ДААCҚосқаннан кейін ондық реттеу
0000000000010CONTW*CONT регистрін жазыңыз (CONT ← W)
0000000000011ҰЙҚЫ*Күту режиміне өтіңіз (WDT ← 0, тоқтату сағаты)
0000000000100WDTC*Қарауыл таймерін қайта қосу (WDT ← 0)
000000000fIOW fW-ді енгізу-шығару тізіліміне көшіру (f = 5–7, 11–15)
0000000010000ENIҮзілістерді қосыңыз
0000000010001ДИСИҮзілістерді өшіру
0000000010010RETБағдарламадан оралу, W өзгертілмеген
0000000010011RETIҮзілістен оралу; қайтару және үзілістерді қосу
0000000010100БАСҚАРУCONT регистрін оқыңыз (W ← CONT)
000000001fIOR fI / O басқару регистрін W (көшіріңіз)f = 5–7, 11–15)
0000000100000ТБЛCЗPCL + = W, компьютердің 8 және 9 биттерін сақтаңыз
00опкодг.тіркелуALU операциялары 12 және 14 биттік PIC сияқты
01оптбиттіркелуБит операциялары 12 және 14 биттік PIC сияқты
10вк14-разрядты PIC сияқты трансферттер
11опкод8 бит дереуW және 8-биттік әріптермен жұмыс: W ← OP (k, W)
110опкMOV / IOR / AND / XOR, 12-разрядты PIC сияқты
11100кRETLW кW ← k, содан кейін ішкі бағдарламадан оралыңыз
11101кSUBLW кCЗW ← k − W (W ← k + ~ W + 1)
111100кINT кДК, ДК ← k (бағдарламалық жасақтама үзіледі, әдетте k = 1)
11111кADDLW кCЗW ← k + W
111101опкодкКеңейтімдер (INT-ті ауыстыру) к үшін кLater128 кейінгі модельдерде)[4][5][6]
111101000кБЕТ кROM бетін таңдаңыз к (MOVLP сияқты к)
111101001кБАНК кRAM банкін таңдаңыз к
111101010кLCALL к17-биттік адресімен ұзақ қоңырау (2 сөзден тұратын нұсқаулық)
111101011кLJMP к17-биттік адресі бар ұзындыққа секіру (2 сөзден тұратын нұсқаулық)
1111011fTBRD fRH-ді TBHP-де оқыңыз: TBLP көрсетілген реестрде
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
Сипаттама

*: 12 биттік PIC-пен бірдей опкод
†: PIC эквиваленті жоқ EM78 нұсқауларына арналған нұсқаулық

Кейбір модельдер басқа PIC микроконтроллерлеріне ұқсас бірнеше ROM немесе RAM банктерін қолдайды.

Сондай-ақ, командалар жиынтығының 15-биттік нұсқасы бар, ол бірдей, тек регистр нөмірлері 8 битке дейін, ал қоңырау және секіру мекен-жайы 12 битке дейін ұлғайтылған. Басқа айырмашылықтар:[7]

  • CONTW, IOW, CONTR, IOR және INT нұсқаулары жойылады,
  • 8-биттік әріптермен орындалатын амалдарда 8 және 9 биттер ретінде екі 0 бит қосылады,
  • 4 биттік әріптік кеңейтулерде 4 және 5 биттер ретінде екі 0 бит қосылады, және
  • PAGE және BANK нұсқаулары SBANK және GBANK болып өзгертіледі және сәйкесінше арнайы функционалдық регистрлер мен жалпы мақсаттағы оперативті жедел жадыда банктік коммутацияны орындайды.

Екінші буынның 15-биттік нұсқаулар құрамына бірнеше қосымша нұсқаулар кіреді:

15 биттік нұсқаулық EM78 / EM88 кеңейтімдері[8][9]
1
4
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
Сипаттама
00000000опкодӘр түрлі нұсқаулар
000000000000000ЖОҚ*Операция жоқ (MOVW 0, W)
000000000000001ДАА*CҚосқаннан кейін ондық реттеу
000000000000011ҰЙҚЫ*Күту режиміне өтіңіз (WDT ← 0, тоқтату сағаты)
000000000000100WDTC*Қарауыл таймерін қайта қосу (WDT ← 0)
000000000000101КӨП8 × 8 → 16 биттік көбейту
000000000000110DIVW8 ÷ 8 → 8,8 биттік бөлу
000000000010000ENI*Үзілістерді қосыңыз
000000000010001ДИСИ*Үзілістерді өшіру
000000000010010RET*Бағдарламадан оралу, W өзгертілмеген
000000000010011RETI*Үзілістен оралу; қайтару және үзілістерді қосу
000000000010110ҚАЛПЫНА КЕЛТІРУБағдарламалық жасақтаманы қалпына келтіру
000000000010111TBWRFlash ROM жазу
000000001кINT кБағдарламалық жасақтама 2 × к мекен-жайы бойынша үзіледі
00000001битfBTG f,бB битін төңкеру (ауыстыру) (шектеулі адрес ауқымы)
00опкодг.тіркелуALU операциялары EM78 және PIC сияқты
01оптбиттіркелуБит операциялары EM78 және PIC сияқты
10вкEM78 және 14-разрядты PIC сияқты трансферттер
11опкод008 бит дереу8 биттік сөзбе-сөз EM78 сияқты операциялар (INT қоспағанда)
11опкодтіркелу немесе дереуНұсқаулық кеңейтімдері
1100001fДже рЕгер W = f болса, өткізіп жіберіңіз
1100010fJGE рЕгер W> f болса, өткізіп жіберіңіз
1100011fJLE рЕгер W
1100101кДже кЕгер W = k болса, өткізіп жіберіңіз
1100110к(сақталған)
1100111fTBRDA fTBHP-де ROM оқыңыз: TBLP f-ге; msbits W
1101001кSJC мекен-жайыPC + секстіне өту (к) егер тасымалдау жиынтығы болса
1101010кSJNC мекен-жайыPC + секстіне өту (к) егер таза болса
1101011кSJZ мекен-жайыPC + секстіне өту (к) егер жалауша нөлдік болса
1101101кSJNZ мекен-жайыPC + секстіне өту (к) егер жалауша нөлдік болса
110111г.fRR f/ RRAdest ← f << 7 | f >> 1, тасымалдаусыз оңға бұрылыңыз
1110001fXCH fF ↔ W алмасу
111001г.fRL f/ RLAdest ← f << 1 | f >> 7, жүріссіз солға айналдырыңыз
1110101fМҰЛ fPRODH: PRODL ← f × W
111011хк(сақталған)
111100г.fSUBBCЗdest ← f + ~ W + C, тасымалдаумен алып тастаңыз
11110100000кБАНК к*Арнайы функцияларды тіркеу банкін таңдаңыз к
11110100100кГБАНК к*RAM банкін таңдаңыз к
11110101000кLCALL к*19-разрядты адресімен ұзақ қоңырау (2 сөзден тұратын нұсқаулық)
11110101100кLJMP к*19-разрядты адреспен ұзындыққа секіру (2 сөзден тұратын нұсқаулық)
1111011fTBRD f*ROM-ді TBHP-де оқыңыз: TBLP f
1111101fNEG fCЗf ← ​​−f (f ← ~ f + 1), жоққа шығару
111111г.fADC fCЗdest ← f + W + C, тасымалдаумен қосыңыз

*: 13 биттік EM78 сияқты опкод
†: Тек EM89F768N бойынша; операндтар және арнайы регистрлерде нәтижелер
‡: Тек EM88F794N, MTF213 және MTF351

Орташа деңгейлі негізгі құрылғылар (14 бит)

Бұл құрылғыларда 14 бит кең код жады және жақсартылған 8 деңгейлі терең қоңырау стегі бар. Нұсқаулық жиынтығы бастапқы құрылғылардан өте аз ерекшеленеді, бірақ 2 қосымша опкод биті 128 регистр мен 2048 сөз кодын тікелей адрестеуге мүмкіндік береді. Бірнеше қосымша нұсқаулар бар, және екі қосымша 8-биттік әріптік нұсқаулар қосыңыз және азайтыңыз. Орташа деңгейлі ядро ​​PIC12 және PIC16 таңбаланған құрылғылардың көпшілігінде қол жетімді.

14-разрядты PIC нұсқаулар жинағы
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
Сипаттама
0000000опкодӘр түрлі нұсқаулар
00000000000000ЖОҚОперация жоқ (MOVW 0, W)
00000000001000ҚАЙТУБағдарламадан оралу, W өзгертілмеген
00000000001001RETFIEҮзілістен оралу
00000001100010ОПЦИЯW-ті OPTION тіркеліміне көшіріңіз (ескірген)
00000001100011ҰЙҚЫКүту режиміне өтіңіз
00000001100100CLRWDTҚарауыл таймерін қайта қосыңыз
000000011001fТРИС fW-ді үш регистрге көшіру (f = 1, 2 немесе 3) (ескірген)
00опкодг.тіркелуALU операциялары: dest ← OP (f, W)
0000001fMOVWF ff ← ​​W
000001г.fCLR f,г.Зdest ← 0, әдетте CLRW немесе CLRF жазылады f
000010г.fSUBWF f,г.CЗdest ← f − W (dest ← f + ~ W + 1)
000011г.fDECF f,г.Зdest ← f − 1
000100г.fIORWF f,г.Зdest ← f | W, қисынды немесе
000101г.fANDWF f,г.Зdest ← f & W, логикалық және
000110г.fXORWF f,г.Зdest ← f ^ W, логикалық эксклюзивті немесе
000111г.fADDWF f,г.CЗdest ← f + W
001000г.fMOVF f,г.Зdest ← f
001001г.fCOMF f,г.Зdest ← ~ f, биттік толықтауыш
001010г.fINCF f,г.Зdest ← f + 1
001011г.fDECFSZ f,г.dest ← f − 1, содан кейін нөлге өтіңіз
001100г.fRRF f,г.Cdest ← CARRY << 7 | f >> 1, тасымалдау арқылы оңға бұраңыз
001101г.fRLF f,г.Cdest ← f << 1 | ТАСЫҢЫЗ, тасымалдау арқылы солға бұраңыз
001110г.fSWAPF f,г.dest ← f << 4 | f >> 4, ниблдерді ауыстыру
001111г.fINCFSZ f,г.dest ← f + 1, содан кейін нөлге өтіңіз
01оптбиттіркелуБит операциялары
0100битfBCF f,бF-тің b биті таза
0101битfBSF f,б$ F $ битін қойыңыз
0110битfBTFSC f,бЕгер f-тің биті анық болса, өткізіп жіберіңіз
0111битfБТФСС f,бЕгер f битінің биті орнатылса, өткізіп жіберіңіз
10вкТрансферттерді басқару
100кҚОҢЫРАУ кБағдарламаны шақыру
101кБАРУ кK мекен-жайына өту
11опкод8 бит дереуW және 8-биттік әріптермен жұмыс: W ← OP (k, W)
1100ххкMOVLW кW ← k
1101ххкRETLW кW ← k, содан кейін ішкі бағдарламадан оралыңыз
111000кIORLW кЗW ← k | W, қисынды логикалық немесе
111001кANDLW кЗW ← k & W, биттік және
111010кXORLW кЗW ← k ^ W, биттік эксклюзивті немесе
111011к(сақталған)
11110хкSUBLW кCЗW ← k − W (dest ← k + ~ W + 1)
11111хкADDLW кCЗW ← k + W
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
Сипаттама

Жақсартылған орта деңгейлі негізгі құрылғылар (14 бит)

Жақсартылған орта ауқымды ядролық құрылғылар тереңірек аппараттық стек, ысырудың қосымша әдістері, 14 қосымша нұсқаулық және C бағдарламалау тілі оңтайландыру.[10] Соның ішінде. олар екеу INDF регистрлері (INDF0 және INDF1), ал екеуі сәйкес келеді FSR жұптарды тіркеу (FSRnL және FSRnH). Арнайы нұсқауларды қолданыңыз FSRn мекен-жай регистрлері сияқты регистрлер, әр түрлі мекенжай режимдері.

14-биттік жақсартылған PIC қосымша нұсқаулары
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
Сипаттама
0000000опкодӘр түрлі нұсқаулар
00000000000001ҚАЛПЫНА КЕЛТІРУБағдарламалық жасақтаманы қалпына келтіру
00000000001010CALLWДК басыңыз, содан кейін PCLATH секіріңіз: W
00000000001011BRWДК ← ДК + W, W көмегімен салыстырмалы секіру
00000000010n00MOVIW ++ FSRnЗFSR өсуіn, содан кейін W ← INDFn
00000000010n01MOVIW −−FSRnЗFSR төмендетуn, содан кейін W ← INDFn
00000000010n10MOVIW FSRn++ЗW ← INDFn, содан кейін FSR өседіn
00000000010n11MOVIW FSRn−−ЗW ← INDFn, содан кейін FSR декрементіn
00000000011nмFSR қолданатын MOVWInINDFn ← W, MOVIW сияқты режимдер
000000001кMOVLB кBSR ← k, сөзбе-сөз банктік таңдау регистріне көшіңіз
11опкодг.тіркелуALU операциялары: dest ← OP (f, W)
110101г.fLSLF f,г.CЗdest ← f << 1, логикалық жылжу солға
110110г.fLSRF f,г.CЗdest ← f >> 1, оңға жылжу
110111г.fASRF f,г.CЗdest ← f >> 1, арифметикалық жылжу оңға
111011г.fSUBWFB f,г.CЗdest ← f + ~ W + C, тасымалдаумен алып тастаңыз
111101г.fADDWFC f,г.CЗdest ← f + W + C, тасымалдаумен қосыңыз
11опкодкСөзбе-сөз қолданыстағы операциялар к
1100010nкADDFSR FSRn,кFSRn ← FSRn + k, 6-биттік қол қойылған офсетті қосыңыз
1100011кMOVLP кPCLATH ← k, 7-биттік сөзбе-сөз жоғары деңгейге жылжытыңыз
11001кBRA кДК ← ДК + к, тармақтық туыстық, 9-разрядты офсетті қолданады
1111110nкКИНО к[FSRn]ЗW ← [FSRn+к], 6-биттік қол қойылған жылжу
1111111nкMOVWI к[FSRn][FSRn+к] ← W, 6-биттік қол қойылған жылжу
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
Сипаттама

Холтек клоны (14 немесе 16 бит)

Холтек 14-биттік нұсқау сөзімен (кеңейтілген емес) орта диапазонды ядроға баламалы 8-биттік микроконтроллерлер жасаңыз. Нұсқаулық кодтауларының барлығы 14 битке сәйкес келеді және операндтық адрестерді ұсынады, бірақ ROM бағдарламасының 4K немесе 8K сөздері бар модельдер ені 15 немесе 16 биттік ROM береді және негізгі 11-разрядты адресті 14-15 биттер арқылы кеңейтеді. нұсқаулық мекен-жайдың 11-12 биттері ретінде. Кейбір модельдер оперативті адрестің 7 биті ретінде команданың 14 битін қолдану арқылы 7 биттік жедел жады мекен-жайларын кеңейтеді.

Нұсқаулық форматы Microchip-ке ұқсас, бірақ опкодтар басқа тәртіппен тағайындалады, ал өндіруші әртүрлі командалық мнемотехниканы қолданады. Аккумулятор W-ден гөрі ACC деп аталады, ал тағайындалатын орын операндтан гөрі мнемоникалық нұсқаулықтың суффиксімен белгіленеді.

Опкодты тағайындаудан басқа бірнеше нұсқаулықта мағыналық айырмашылықтар бар:

  • Шығару нұсқаулығы операндты аккумулятордан шығарады, ал Микрочиптің алып тастау командалары керісінше болады. (Бұл алып тастау жедел нұсқауды қажет етпейді, өйткені ол негативтің қосындысына тең).
  • Аккумуляторға көшу және нақты нұсқаулар жалаушаларды өзгертпейді.

14-разрядты PICmicro репертуарына бірнеше операциялар қосылды:

  • Бір оңға және солға бұраңыз жоқ тасу,
  • Операнды бәріне қойыңыз,
  • Егер операнд нөлге тең болса (оны көбейтпей немесе төмендетпестен), өткізіп жіберіңіз,
  • Тасымалдаумен қосу және азайту,
  • Қосқаннан кейін ондықты реттеңіз, үшін екілік кодталған ондық арифметикалық және
  • Кестені іздеу үшін ROM бағдарламасынан оқыңыз. Бұл 16-биттік көрсеткіш ретінде TBHP және TBLP регистрлерін қолданады, сөзді сол жерге әкеледі және төмен байтты көрсетілген жерде сақтайды. Алынған сөздің жоғары 6-8 биті TBLH тізілімінде сақталады. Екінші форма тек TBLP-ді пайдаланады және ROM-дағы ең жоғары 256 байт беттен оқиды.
  • Көптеген модельдер күзет таймерін қалпына келтіру туралы екінші нұсқаулықты қолдайды, ол біріншісімен ауысып отыруы керек; бір команданың қайталануы ескерілмейді. Бұл бақылаушы тәуелсіз екі процедураны іске қосуға мүмкіндік береді, ал екеуінің де істен шығуы бақылаушыны іске қосады.
  • Holtek жақсартылған 14-биттік PIC сияқты екі жанама мекен-жай регистрін ұсынады. Кейбір модельдер (мысалы, HT66F70A) үшеуін ұсынады.
14-биттік Holtek нұсқаулар жинағы[11]
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықPIC баламасы.C
?
З
?
Сипаттама
00000000000опкодӘр түрлі нұсқаулар
00000000000000ЖОҚЖОҚОперация жоқ (MOV A, A)
00000000000001CLR WDT1CLRWDTҚарауыл таймерін қайта қосыңыз
00000000000010HALTҰЙҚЫАз қуатты режимге өтіңіз
00000000000011RETҚАЙТУБағдарламадан оралу
00000000000100RETIRETFIEҮзілістен оралу
00000000000101CLR WDT2Қарауыл таймерін қайта қосыңыз
00опкодг.мекен-жайыALU операциялары: dest ← OP (ACC, [m])
0000001мMOV [м], AMOVWF м[m] ← ACC
000001г.мCPLA / CPL [м]COMF м,г.Зdest ← ~ [m], биттік толықтауыш
000010г.мSUB / SUBM A, [м]UB SUBWF м,г.CЗdest ← ACC - [m] (dest ← ACC + ~ [m] +1)
000011г.мADD / ADDM A, [м]ADDWF м,г.CЗdest ← ACC + [m]
000100г.мXORA / XOR [м]XORWF м,г.Зdest ← ACC ^ [m], логикалық эксклюзивті немесе
000101г.мORA / OR [м]IORWF м,г.Зdest ← ACC | [м], логикалық қоса немесе
000110г.мANDA / AND [м]ANDWF м,г.Зdest ← ACC & [m], логикалық және
0001110мMOV A, [м]OVMOVF м,0ACC ← [м]
0001111мOVMOVF м,1[м] ← [м]
001опкод8 бит дереу8-биттік әріптермен жұмыс: ACC ← OP (ACC, k)
001000к(сақталған)
001001кRET A,кRETLW кACC ← k, содан кейін ішкі бағдарламадан оралыңыз
001010кSUB A,кUB ЖАЗЫЛУ кCЗACC ← ACC - k (ACC ← ACC + ~ k + 1)
001011кА қосыңыз,кADDLW кCЗACC ← ACC + k
001100кXOR A,кXORLW кЗACC ← ACC ^ k, логикалық эксклюзивті немесе
001100кНЕМЕСЕ,кIORLW кЗACC ← ACC | k, логикалық қоса немесе
001100кЖӘНЕ,кANDLW кЗACC ← ACC & k, логикалық және
001100кMOV A,кMOVLW кACC ← k
01опкодг.мекен-жайыALU операциялары: dest ← OP (ACC, [m])
010000г.мSZA / SZ [м]dest ← [m], егер нөл болса, келесі команданы өткізіп жіберіңіз
010001г.мSWAPA / SWAP [м]SWAPF м,г.dest ← [m] << 4 | [m] >> 4, ниблдерді ауыстыру
010010г.мSBC / SBCM A, [м]UB SUBWFB м,г.CЗdest ← ACC + ~ [m] + C, тасымалдаумен алып тастаңыз
010011г.мADC / ADCM A, [м]ADDWFC м,г.CЗdest ← ACC + [m] + C, тасымалдаумен қосыңыз
010100г.мINCA / INC [м]INCF м,г.Зdest ← [m] + 1
010101г.мDECA / DEC [м]DECF м,г.Зdest ← [m] - 1
010110г.мSIZA / SIZ [м]INCFSZ м,г.dest ← [m] + 1, егер нөл болса, өткізіп жіберіңіз
010111г.мSDZA / SDZ [м]DECFSZ м,г.dest ← [m] - 1, содан кейін нөлге өтіңіз
011000г.мRLA / RL [м]dest ← [m] << 1 | м >> 7, солға 1 бит бұраңыз
011001г.мRRA / RR [м]dest ← [m] << 7 | м >> 1, оңға 1 бит бұраңыз
011010г.мRLCA / RLC [м]RLF м,г.Cdest ← [m] << 1 | C, тасымалдау арқылы солға бұраңыз
011011г.мRRCA / RRC [м]RRF м,г.Cdest ← C << 7 | [m] >> 1, тасымалдау арқылы оңға бұрылыңыз
0111опкодмекен-жайыСепциалды операциялар: [м] ← арнайы
011100хм(сақталған)
0111010мTABRDC [м]TBLH: [m] ← TBHP кезіндегі ROM жады: TBLP, кестені іздеу
0111011мTABRDL [м]

ROM соңғы бетінен 0xff оқыңыз: TBLP

0111100м(сақталған)
0111101мDAA [м]C[m] ← DAA (ACC), ондық BCD қосқаннан кейін реттеледі
0111110мCLR [м]≈CLRF м[m] ← 0
0111111мОРНАТУ [м]255
10вкТрансферттерді басқару
100кҚОҢЫРАУ кҚОҢЫРАУ кБағдарламаны шақыру
101кJMP кБАРУ кK мекен-жайына өту
11оптбитмекен-жайыБит операциялары
1100битмОРНАТУ [м].бBSF м,б[M] битін орнатыңыз
1101битмCLR [м].бBCF м,б[M] -ның b битін тазарту
1110битмSNZ [м].бБТФСС м,б[M] биті орнатылған болса өткізіп жіберіңіз
1111битмSZ [м].бBTFSC м,б[M] биті анық болса өткізіп жіберіңіз
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықPIC баламасы.C
?
З
?
Сипаттама

Padauk микроконтроллерлері (13, 14, 15 немесе 16 бит)

Padauk Technology Co., Ltd. басынан бастап PIC тәрізді микроконтроллерлер сериясын өте арзан бағамен ерекшелендіріңіз 0,033 АҚШ доллары саны бойынша,[12] арзан модельдермен көптеген модельдермен 0,10 АҚШ доллары.[13]

PIC-тен нақты шыққанымен, кейбір маңызды айырмашылықтар бар:

  • Олар FSR / INDF механизмін жадқа жанама қатынауды орындау үшін пайдаланбайды, керісінше жанама жүктеу және нұсқаулық ретінде жедел жадының орналасуын пайдаланатын нұсқаулық сақтайды;
  • олар стек көрсеткішінің регистрі бар жедел жадыға негізделген қоңырау стегін пайдаланады;
  • The ту алып жүру Microchip қолданатын «тасымалдау биті» емес, шегерімдер үшін «қарыз биті» конвенциясын қолданады;
  • оларға қол қойылған толып жатқан жалауша, цифрлық тасымалдау сияқты нұсқауларды қосу, азайту және салыстыру арқылы орнатылады (тасымалдау жалаушасын орнататын барлық нұсқаулар қоспағанда ауысым нұсқаулары үшін);
  • оларда жедел жад және енгізу-шығару регистрлерінің жеке кеңістігі бар (сәйкесінше 13-биттік командалар жиынтығында 64 және 32 байт);
  • биттік операциялар енгізу-шығару кеңістігімен және алғашқы 16 жедел жады мекен-жайымен шектеледі;
  • жады көзі мен аккумулятордың тағайындалуы бар бір операндты нұсқаулар алынып тасталды;
  • аккумулятор көзі мен тағайындалуы бар бір операциялы нұсқаулық берілген;
  • азайту операциялары тағайындалған орынды есептеп шығарады, тағайындалған жерге байланысты кіріс операндаларын алмастырады;
  • олар жылдамырақ жұмыс істейді, көптеген нұсқаулар үшін 1 цикл және басқару трансферттері үшін 2 цикл қажет; және
  • кейбір модельдерді қолдайды уақытша көп ағынды, орындау орындалатын бірнеше орындау мәнмәтіні бар.
13-биттік Padauk нұсқаулығы[14][15]
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықPIC
балама
C
?
З
?
Сипаттама
000000000опкодӘр түрлі нұсқаулар
0000000000000ЖОҚЖОҚОперация жоқ
0000000000001(сақталған)
000000000001х(сақталған)
000000000010х(сақталған)
0000000000110LDSPTL← ROM [[SP]], стектің жоғарғы жағында 16 биттік көрсеткішті пайдаланып, төмен / жоғары байт ROM сөзін жүктеңіз
0000000000111LDSPTH
0000000001(сақталған)
000000001опкодАккумулятор туралы бір операциялық нұсқаулық
Жадтағы бір операндты нұсқаулықпен бірдей (төменде), басқаларынан басқа
0000000010111PCADD A≈ ADDWF PCL, 1ДК ← ДК + А, есептегішке қосыңыз
0000000011110АйырбастауA ← A << 4 | A >> 4, сілкіністерді ауыстырыңыз
000000010(сақталған)
000000011опкодЖүйені басқару жөніндегі нұсқаулық
0000000110000WDRESETCLRWDTҚарауыл таймерін қайта қосыңыз
0000000110001(сақталған)
0000000110010ПУШАФА стек үстіндегі жалаушаларды басыңыз
0000000110011POPAFCЗPop жалаулары, содан кейін стектің жоғарғы жағынан A
0000000110100(сақталған)
0000000110101ҚАЛПЫНА КЕЛТІРУҚАЛПЫНА КЕЛТІРУБағдарламалық жасақтаманы қалпына келтіру
0000000110110STOPSYSҰЙҚЫКүту режиміне өтіңіз (сағат тоқтады)
0000000110111ТОҚТАТУКүту режиміне өту (сағат жұмыс істейді)
0000000111000ENGINTBSF INTCON, GIEҮзілістерді қосыңыз
0000000111001ДИГИНТBCF INTCON, GIEҮзілістерді өшіру
0000000111010RETҚАЙТУБағдарламадан оралу, өзгертілмеген
0000000111011RETIRETFIEҮзілістен оралу
0000000111100МҰЛMULRH: A ← A × MULOP (барлық модельдерде емес)
0000000111101(сақталған)
000000011111х(сақталған)
00000опкодioaddrЖалпы байттық енгізу-шығару операциялары
00000011ioaddrXOR ioaddr, AIO [ioaddr] ← A ^ IO [мекен-жайы]
00000100ioaddrMOV ioaddr, AIO [ioaddr] ← A
00000101ioaddrMOV A,ioaddrЗA ← IO [ioaddr]
0000011вмекен-жайыв16-биттік операциялар (жедел жады мекен-жайы шектеулі, тіпті)
00000110мекен-жайы0STT16 адрTimer16 ← [мекен-жайы]
00000110мекен-жайы1LDT16 адр[мекен-жайы] ← таймер16
00000111мекен-жайы0IDXM адр, A[[мекен-жай]] ← А, жанама жад адресі
00000111мекен-жайы1IDXM A,адр← [[мекен-жайы]], жадтың жанама адресі
00001кТура тұрақты мәнге оралу
00001кRET кRETLW кA ← к, содан кейін ішкі бағдарламадан оралыңыз
0001вбитвмекен-жайыЖЖҚ көмегімен биттік операциялар (тек алғашқы 16 байтта)
00010бит0мекен-жайыT0SN адр.бBTFSC адр,бБіраз болса өткізіп жіберіңіз б туралы [адр] түсінікті
00010бит1мекен-жайыT1SN адр.бБТФСС адр,бБіраз болса өткізіп жіберіңіз б туралы [адр] орнатылды
00011бит0мекен-жайыSET0 адр.бBCF адр,бТаза б туралы [адр]
00011бит1мекен-жайыSET1 адр.бBSF адр,бБит орнатыңыз б туралы [адр]
001г.опкодмекен-жайыА және жад арасындағы ALU операциялары
0010000мекен-жайыҚОСУ адр, AADDWF адр,1CЗ[адр] ← [адр] + A
0010001мекен-жайыSUB адр, ASUBWF адр,1CЗ[адр] ← [адр] - А
0010010мекен-жайыADDCадр, AADDWFC адр,1CЗ[адр] ← [адр] + A + C
0010011мекен-жайыSUBCадр, AUBSUBWFBадр,1CЗ[адр] ← [адр] - A - C
0010100мекен-жайыЖӘНЕ адр, AANDWF адр,1З[адр] ← [адр] & A, логикалық және
0010101мекен-жайыНЕМЕСЕ адр, AIORWF адр,1З[адр] ← [адр] | А, қисынды немесе
0010110мекен-жайыXOR адр, AXORWF адр,1З[адр] ← [адр] ^ A, логикалық эксклюзивті немесе
0010111мекен-жайыMOV адр, AMOVWF адр[адр] ← А
0011000мекен-жайыА қосыңыз,адрADDWF адр,0CЗA ← A + [адр]
0011001мекен-жайыSUB A,адрUB SUBWF адр,0CЗА ← А - [адр]
0011010мекен-жайыADDC A,адрADDWFC адр,0CЗA ← A + [адр] + C
0011011мекен-жайыSUBC A,адрUB SUBWFBадр,0CЗА ← А - [адр] - C
0011100мекен-жайыЖӘНЕ,адрANDWF адр,0ЗA ← [A] & [адр], логикалық және
0011101мекен-жайыНЕМЕСЕ,адрIORWF адр,0ЗA ← A | [адр], логикалық қоса немесе
0011110мекен-жайыXOR A,адрXORWF адр,0ЗA ← A ^ [адр], логикалық эксклюзивті немесе
0011111мекен-жайыMOV A,адрMOVF адр,0ЗА [[адр]
010опкодмекен-жайыЖадтағы бір операндты амалдар
0100000мекен-жайыADDC адрCЗ[адр] ← [адр] + C
0100001мекен-жайыSUBC адрCЗ[адр] ← [адр] - C
0100010мекен-жайыIZSN адрINCFSZ адр,1CЗ[адр] ← [адр] + 1, содан кейін нөл болса өткізіп жіберіңіз
0100011мекен-жайыDZSN адрDECFSZ адр,1CЗ[адр] ← [адр] - 1, содан кейін нөл болса өткізіп жіберіңіз
0100100мекен-жайыINC адрINCF адр,1CЗ[адр] ← [адр] + 1
0100101мекен-жайыДЕК адрDECF адр,1CЗ[адр] ← [адр] − 1
0100110мекен-жайыТАЗА адр≈CLRF адр[адр] ← 0
0100111мекен-жайыXCH адрА [[адр], [адр] ← А
0101000мекен-жайыЖОҚ адрCOMF адр,1З[адр] ← ~[адр], биттік толықтауыш
0101001мекен-жайыNEG адрЗ[адр] ← −[адр], жоққа шығару
0101010мекен-жайыSR адрSRLSRF адр,1C[адр] ← [адр] >> 1, оңға қарай жылжу
0101011мекен-жайыSL адрSLSLF адр,1C[адр] ← [адр] << 1, жылжу солға
0101100мекен-жайыSRC адрRRF адр,1C[адр] ← C << 7 | [адр] >> 1, тасымалдау арқылы айналдырыңыз
0101101мекен-жайыSLC адрRLF адр,1C[адр] ← [адр] << 1 | C, тасымалдау арқылы солға бұраңыз
0101110мекен-жайыCEQSN адрCЗЕсептеу A - [адр], содан кейін нөл болса өткізіп жіберіңіз
0101111мекен-жайы(сақталған)
011оптбитмекен-жайыI / O көмегімен биттік операциялар
01100битмекен-жайыT0SNioaddr.бBTFSC ioaddr,бБіраз болса өткізіп жіберіңіз б туралы [ioaddr] түсінікті
01101битмекен-жайыT1SNioaddr.бБТФСС ioaddr,бБіраз болса өткізіп жіберіңіз б туралы [ioaddr] орнатылды
01110битмекен-жайыSET0 ioaddr.бBCF ioaddr,бТаза б туралы [ioaddr]
01111битмекен-жайыSET1 ioaddr.бBSF ioaddr,бБит орнатыңыз б туралы [ioaddr]
10опкодсөзбе-сөзӘріптік операциялар: A ← OP (A,к)
10000кА қосыңыз,кADDLW кCЗA ← A + к
10001кSUB A,кUB ЖАЗЫЛУ кCЗA ← A - к
10010кCEQSN A,кCЗЕсептеу A - к, егер нөл болса, өткізіп жіберіңіз
10011к(сақталған)
10100кЖӘНЕ,к≈ANDLW кЗA ← A & k
10101кНЕМЕСЕ,кORIORLW кЗA ← A | к
10110кXOR A,кORXORLW кЗA ← A ^ k
10111кMOV A,кMOVLW кA ← к
11вкТрансферттерді басқару: ДК ← к
110кБАРУ кБАРУ кДК ← к
111кҚОҢЫРАУ кҚОҢЫРАУ кДК, содан кейін ДК ← к
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықPIC
балама
C
?
З
?
Сипаттама

14, 15 және 16 биттік командалар жиынтығы, ең алдымен, адрестік өрістерінің кеңдігімен ерекшеленеді, дегенмен бірнеше қосымша нұсқауларды орындау үшін кейбір кодтау өзгерістері енгізілген (мысалы, CNEQSN, ол салыстыруды орындайды және егер өткізіп жібереді емес тең.)

14-биттік Padauk нұсқаулар жинағы[16][17][18]
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықPIC
балама
C
?
З
?
Сипаттама
0000000000опкодӘр түрлі нұсқаулар 13 биттікімен бірдей
0000000001(сақталған)
000000001(сақталған)
000000010(сақталған)
0000000110опкодБір операндты нұсқаулық 13 биттік сияқты
0000000111опкод13 биттік сияқты жүйені басқару жөніндегі нұсқаулық
00000010(сақталған)
00000опкодмекен-жайыБайт бойынша енгізу-шығару операциялары 13 биттікімен бірдей, бірақ опкодтар өзгерді
00000011ioaddrXOR ioaddr, AIO [ioaddr] ← A ^ IO [мекен-жайы]
0000010(сақталған)
00000110ioaddrMOV ioaddr, AIO [ioaddr] ← A
00000111ioaddrMOV A,ioaddrЗA ← IO [ioaddr]
000010кТура 13-разрядпен бірдей тұрақты мәнге оралыңыз
000011вмекен-жайыв16 биттік операциялар 13 битті, бірақ 128 байтты диапазонмен бірдей
00010битмекен-жайыБитті I / O-ға көшіру
00010битмекен-жайыSWAPCioaddr.бCАуыстыру [ioaddr] бит б
00011вг.мекен-жайыҚосымша 2 амалдық амалдар
0001100мекен-жайыCOMP A,адрCЗA - [адр], жалаушалар орнатылды, нәтиже жойылды
0001101мекен-жайыCOMP адр, ACЗ[адр] - А, жалаушалар орнатылды, нәтиже жойылды
0001110мекен-жайыNADD A,адрSUBWFадр,0CЗА [[адр] + −A (A ← [адр] + ~ A + 1)
0001111мекен-жайыNADD адр, ACЗ[адр] ← А + - [адр] ([адр] ← A + ~ [адр] + 1)
001г.опкодмекен-жайы13-разрядпен бірдей 2-операндтық нұсқаулық
010опкодмекен-жайыЖадтағы бір операндты операциялар, 13 биттік және CNEQSN плюсімен бірдей
0101111мекен-жайыCNEQSN адрCЗЕсептеу A - [адр], содан кейін нөлге тең емес болса, өткізіп жіберіңіз
011оптбитioaddrКіріс-шығыспен биттік операциялар 13 биттікімен бірдей
100оптбитмекен-жайыЖадтағы биттік операциялар 13-биттік, бірақ 64-байттық диапазонмен бірдей
101опкодсөзбе-сөз13 биттік және CNEQSN плюс әріптік операциялары
101011кCNEQSN A,кCЗЕсептеу A - к, егер нөлге тең емес болса, өткізіп жіберіңіз
11вк13-биттік трансферттер
1
13
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықPIC
балама
C
?
З
?
Сипаттама

PIC18 жоғары ядролы құрылғылар (16 бит)

2000 жылы Microchip PIC18 архитектурасын енгізді.[2] 17 сериядан айырмашылығы, ол өте танымал болып шықты, қазіргі кезде өндірісте көптеген құрылғылардың нұсқалары бар. Ертедегі құрылғылардан айырмашылығы, олар көбінесе құрастыруда бағдарламаланбаған, C басым тілге айналды.[19]

PIC18-де 256 байттан тұратын 16 параққа бөлінген 12 биттік жедел жады мекен-жайы бар. 8 бит f өрісі мекенжайды а бит және 4-разрядты банктік таңдау регистрі (BSR). Егер а= 0, BSR ескерілмейді және f өріс 0x000–0x07F (ғаламдық жедел жады) немесе 0xF80–0xFFF (арнайы функция регистрлері) ауқымына дейін кеңейтілген. Егер а= 1, f өрісі BSR 12-биттік мекенжайды құру үшін.

PIC18 кеңейтеді FSR/INDF алдыңғы PICmicro процессорларында екі жолмен жанама адресаттау үшін қолданылатын механизм:

Біріншіден, ол қамтамасыз етеді үш файлдарды таңдау регистрлері. The FSRn регистрлердің ұзындығы 12 бит (әрқайсысы екі 8 биттік бөліктерге бөлінеді) FSR0L арқылы FSR2H) және сәйкесінше қол жетімділік INDFn тіркелу (INDF0 арқылы INDF2) жіберілген байт үшін бүркеншік ат ретінде әрекет етеді.

Екіншіден, мекен-жай режимдері бар. Үшеудің әрқайсысы үшін біреу ғана емес INDFn регистр, бірақ бесеу, ал қолданылған адрестеу режимін анықтайды:

  • INDFn: Орналасқан жерге байтқа қол жеткізу FSRn
  • POSTDECn: Байтқа кіру FSRn, содан кейін декремент FSRn
  • ПОСТИНКn: Байтқа кіру FSRn, содан кейін ұлғайту FSRn
  • PREINCn: Арттыру FSRn, содан кейін байтқа ұлғайту арқылы қол жеткізіңіз FSRn
  • ПЛЮСn: Байтқа кіру FSRn + W (индекстелген мекен-жай).

Сондай-ақ, FSR жұбын 12 биттік адреспен тікелей жүктеуге арналған нұсқаулар бар, және MOVFF байтты екі 12-биттік адреске ауыстыратын нұсқаулық.

PIC18 16 биттік нұсқаулар жинағы[20]
1
5
1
4
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
N
?
Сипаттама
00000000опкодӘр түрлі нұсқаулар
0000000000000000ЖОҚОперация жоқ
0000000000000011ҰЙҚЫКүту режиміне өтіңіз
0000000000000100CLRWDTҚарауыл таймерін қайта қосыңыз
0000000000000101БАСЫҢЫЗКомпьютерді стектің үстіне итеріңіз
0000000000000110ПОПСтектің жоғарғы жағын шығарыңыз (және тастаңыз)
0000000000000111DAWCОндықты реттеу W
0000000000001000TBLRD ∗Кесте оқылды: TABLAT ← mem [TBLPTR]
0000000000001001TBLRD ∗ +Постинкрементпен оқылған кесте
0000000000001010TBLRD ∗ -Посттекрециямен оқылған кесте
0000000000001011TBLRD + ∗Алдын ала өсіммен кесте
00000000000011модTBLWRКестені жазу, TBLRD сияқты режимдер
000000000001000сRETFIE [, FAST]Үзілістен оралу
000000000001001сҚАЙТАРУ [, ТЕЗ]Бағдарламадан оралу
0000000000010100CALLW*Компьютерді итеріңіз, PCLATU-ға өтіңіз: PCLATH: W
0000000011111111ҚАЛПЫНА КЕЛТІРУ000Бағдарламалық жасақтаманы қалпына келтіру
00000001—0—кMOVLBСөзбе-сөз қозғалу к банктік таңдау тізілімі
00001опкодсөзбе-сөзӘріптік операциялар: W ← OP (k, W)
00001000кSUBLW кW ← k - W
00001001кIORLW кW ← k | W, қисынды немесе
00001010кXORLW кW ← k ^ W, эксклюзивті немесе
00001011кANDLW кW ← k & W, логикалық және
00001100кRETLW кҚАЙТАРУ W ← к
00001101кMULLW кW ← k × W
00001110кMOVLW кW ← k
00001111кADDLW кW ← k + W
0опкодг.атіркелуALU операциялары: dest ← OP (f, W)
0000001аfMULWF f,аPRODH: PRODL ← W × f (қол қойылмаған)
000001г.аfDECF f,г.,аCЗNdest ← f - 1
000100г.аfIORWF f,г.,аЗNdest ← f | W, қисынды немесе
000101г.аfANDWF f,г.,аЗNdest ← f & W, логикалық және
000110г.аfXORWF f,г.,аЗNdest ← f ^ W, эксклюзивті немесе
000111г.аfCOMF f,г.,аЗNdest ← ~ f, биттік толықтауыш
001000г.аfADDWFC f,г.,аCЗNdest ← f + W + C
001001г.аfADDWF f,г.,аCЗNdest ← f + W
001010г.аfINCF f,г.,аCЗNdest ← f + 1
001011г.аfDECFSZ f,г.,аdest ← f - 1, егер 0 болса, өткізіп жіберіңіз
001100г.аfRRCF f,г.,аCЗNdest ← f >> 1 | C << 7, тасымалдау арқылы айналдырыңыз
001101г.аfRLCF f,г.,аCЗNdest ← f << 1 | C, тасымалдау арқылы солға бұраңыз
001110г.аfSWAPF f,г.,аdest ← f << 4 | f >> 4, ниблдерді ауыстыру
001111г.аfINCFSZ f,г.,аdest ← f + 1, егер 0 болса, өткізіп жіберіңіз
010000г.аfRRNCF f,г.,аЗNdest ← f >> 1 | f << 7, оңға бұру (тасымалдау жоқ)
010001г.аfRLNCF f,г.,аЗNdest ← f << 1 | f >> 7, солға бұру (тасымалдау жоқ)
010010г.аfINFSNZ f,г.,аdest ← f + 1, егер 0 болмаса, өткізіп жіберіңіз
010011г.аfDCFSNZ f,г.,аdest ← f - 1, егер 0 болмаса, өткізіп жіберіңіз
010100г.аfMOVF f,г.,аЗNdest ← f
010101г.аfSUBFWB f,г.,аCЗNdest ← W + ~ f + C (dest ← W - f - C̅)
010110г.аfSUBWFB f,г.,аCЗNdest ← f + ~ W + C (dest ← f - W - C̅)
010111г.аfSUBWF f,г.,аCЗNdest ← f - W (dest ← f + ~ W + 1)
0110опкодатіркелуALU операциялары, W-ға жазба
0110000аfCPFSLT f,аегер өткізбеңіз f
0110001аfCPFSEQ f,аf == W болса, өткізіп жіберіңіз
0110010аfCPFSGT f,аегер өтіңіз f> W (қол қойылмаған)
0110011аfTSTFSZ f,аf == 0 болса, өткізіп жіберіңіз
0110100аfSETF f,аf ← ​​0xFF
0110101аfCLRF f,а1f ← ​​0, PSR.Z ← 1
0110110аfNEGF f,аCЗNf ← ​​−f
0110111аfMOVWF f,аf ← ​​W
0111битаfBTG f,б,аF-тің битін ауыстырып қосыңыз
10оптбитатіркелуБит операциялары
1000битаfBSF f,б,а$ F $ битін қойыңыз
1001битаfBCF f,б,аF-тің b биті таза
1010битаfБТФСС f,б,аЕгер f битінің биті орнатылса, өткізіп жіберіңіз
1011битаfBTFSC f,б,аЕгер f-тің биті анық болса, өткізіп жіберіңіз
110оптмекен-жайыҮлкен адрестік операциялар
1100қайнар көзіMOVFF с,г.Абсолютті жылжытыңыз
1111баратын жер
11010nBRA nPC + 2 бөлімшесіn
11011nШақыру nКомпьютерге қосалқы шақыру + 2n
11100кондnШартты филиал (PC + 2-ге дейін)n)
11100000nBZ nЕгер PSR.Z орнатылған болса, филиал
11100001nBNZ nPSR.Z анық болса, филиал
11100010nБ.з.д. nЕгер PSR.C орнатылған болса, филиал
11100011nBNC nPSR.C анық болса, филиал
11100100nBOV nЕгер PSR.V орнатылған болса, филиал
11100101nBNOV nЕгер PSR.V анық болса, филиал
11100110nBN nPSR.N орнатылған болса, филиал
11100111nBNN nPSR.N анық болса, филиал
111010опткFSR2 бағдарламалық жасақтама стегінің көрсеткіші ретінде пайдалануға арналған кеңейтімдер*
11101000nкADDFSR n,к*FSRn + = k
1110100011кADDULNK к*FSR2 + = k, поп-компьютер
11101001nкSUBFSR n,к*FSRn - = k
1110100111кSUBULNK к*FSR2 - = k, поп-компьютер
11101010кПУШЛ к*[FSR2] ← k, декремент FSR2
111010110сMOVSF src,f*f ← ​​FSR2 [s]
1111f
111010111сMOVSS src,дст*FSR2 [d] ← FSR2 [s]
1111—0—г.
111011оптк2 сөзден тұратын нұсқаулық
1110110ск (лсбит)ҚОҢЫРАУ к[, FAST]Бағдарламаға қоңырау шалыңыз (20-биттік мекен-жай)
1111к (мсбит)
1110111000fк (msb)LFSR f,к12-разрядты FSR-ге ауыстырыңызf
11110000к (лсбит)
11101111к (лсбит)БАРУ кАбсолютті секіру, ДК ← к (20-разрядты адрес)
1111к (мсбит)
1111кОперация жоқ, 2 сөзден тұратын нұсқаулықтың екінші сөзі
1
5
1
4
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
N
?
Сипаттама

*: Бұл кеңейтілген нұсқаулық кейбір модельдерде ғана бар, содан кейін ғана XINST конфигурация биті орнатылды.

PIC24 және dsPIC 16-разрядты микроконтроллерлер

2001 жылы Microchip dsPIC чиптерінің сериясын ұсынды,[21] 2004 жылдың аяғында жаппай өндіріске енген. Олар Microchip-тің алғашқы 16 биттік микроконтроллерлері. PIC24 құрылғылары жалпы мақсаттағы микроконтроллер ретінде жасалған. dsPIC құрылғыларына кіреді цифрлық сигналды өңдеу қосымша мүмкіндіктер.

Нұсқаулық екі негізгі сортта болады. Біреуі классикалық бір операндты PIC нұсқауларына ұқсайды, W0 мен көрсетілген f регистріндегі мән (мысалы, жедел жадтың алғашқы 8K-сы) арасындағы әрекет және нәтижемен жаңартылатын тағайындалған таңдау биті. W регистрлері жадпен бейнеленген, сондықтан f операндында W регистрі көрсетілуі мүмкін.

PIC24 үшін жаңа форма үш W регистр операндын анықтайды, олардың екеуі 3-разрядтық адрестік режим спецификациясына мүмкіндік береді:

PIC24 мекенжай режимдері
көзі операндтағайындалған операндСипаттама
pppRegСинтаксисqqqRegСинтаксис
000ссссWс000ддддWг.Тікелей тіркеліңіз
001сссс[Wс]001дддд[Wг.]Жанама
010сссс[Wс−−]010дддд[Wг.−−]Постдегрециямен жанама
011сссс[Wс++]011дддд[Wг.++]Постинкрементпен жанама
100сссс[−−Wс]100дддд[−−Wг.]Алдын ала жасалғанымен жанама
101сссс[++ Втс]101дддд[++ Втг.]Алдын ала жанама
11кккк#u5(Пайдаланылмаған, заңсыз)5 биттік қол қойылмаған
11хсссс[Wс+ Ww]11хдддд[Wг.+ Ww]Тіркеуді жылжытумен жанама

Реестрдің офсеттік мекен-жайы режимі тек үшін қол жетімді MOV src,дст нұсқаулық, мұнда Ww регистрі дерек көзі, тағайындалуы немесе екеуі үшін реестрді ығысу ретінде қолданыла алады. Барлық басқа нұсқаулар бұл кодтауды қол қойылмаған 5 биттік жедел көзге қолданады.

Операндтар үшін TBLRD және TBLWT бағдарлама жадына қатынасатын, тек жанама режимдерге ғана рұқсат етіледі және код жадындағы адрестерге сілтеме жасайды.

Бірнеше нұсқаулық 2 сөзден тұрады. Екінші сөз NOP, оған 16 битке дейін қосымша жедел операнд кіреді.

PIC24 24 биттік нұсқаулар жиынтығы[22]
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
МнемоникалықC
?
З
?
N
?
Сипаттама
0000опкодофсеттікТрансферттерді басқару
00000000ЖОҚОперация жоқ
00000000—0—n<22:16>ҚОҢЫРАУ / ГОТО 23(екінші сөз)
00000000n#к,адр(екінші сөз)
000000010опт—0—аКомпьютерлік басқаруды беру (16-биттік Wa-ға дейін)
00000001000—0—аҚоңырау шалу RаКомпьютерді итеріп, Wa секіріңіз
00000001001—0—аRCALL RаКомпьютерді итеріп, PC + 2 × Wa секіріңіз
00000001010—0—аGOTO RаВа-ға өту
00000001011—0—аBRA RаPC + 2 × Wa секіру
00000010n<15:1>0ҚОҢЫРАУ23Компьютерді итеріңіз, абсолютті мекен-жайға өтіңіз
—0——0—n<22:16>
00000011(Резервтелген)
00000100n0БАРУ23Абсолютті мекен-жайға өту
—0——0—n<22:16>
000001010Bкг.RETLW [.B] #к, Wг.Wd = k, поп-компьютер
0000011000—0—ҚАЙТУпоп-компьютер
0000011001—0—RETFIECЗNpop SR, компьютер
00000111nШақыру мекен-жайыPC, PC + = 2 × s16 итеріңіз
0000100000к#к,адрНөлдік цикл: k + 1 - қайталама санау, PC + 2 × n соңғы нұсқаулық
—0—n
0000100000к# ҚайталаукКелесі нұсқауды k + 1 рет қайталаңыз
00001000nШақыру мекен-жайыPC, PC + = 2 × s16 итеріңіз
0000101(Резервтелген)
0000110аnBRA Oа, адрЕгер аккумулятор асып кеткен / қаныққан болса, PC + = 2 × simm16
0000111аnBRA Sа, адр
0опкодwBqг.бсКері шегеру: destқайнар көзі - В.w
00010wBqг.бсSUBR [.B] Ww,src,дстCЗNdst ← src - Ww = src + ~ Ww + 1)
00011wBqг.бсSUBBR [.B] Ww,src,дстCЗNdst ← src - Ww - C̅ = src + ~ Ww + C
0010кг.MOV #к, Wг.Wd ← # imm16
0011кондnКомпьютерге шартты тармақ + 2 ×n
00110000nBRA OV,адр... егер PSR.V орнатылған болса
00110001nBRA C,адр... егер PSR.C орнатылған болса
00110010nBRA Z,адр... егер PSR.Z орнатылған болса
00110011nBRA N,адр... егер PSR.N орнатылған болса
00110100nBRA LE,адр... егер PSR.Z, немесе PSR.N ≠ PSR.V
00110101nBRA LT,адр... егер PSR.N ≠ PSR.V
00110110nBRA LEU,адр... егер PSR.Z орнатылған болса немесе PSR.C анық болса
00110111nBRA адр... сөзсіз
00111000nBRA NOV,адр... егер PSR.V анық болса
00111001nBRA NC,адр... егер PSR.C анық болса
00111010nBRA NZ,адр... егер PSR.Z анық болса
00111011nBRA NN,адр... егер PSR.N анық болса
00111100nBRA GT,адр... егер PSR.Z анық болса, ал PSR.N = PSR.V
00111101nBRA GE,адр... егер PSR.N = PSR.V
00111110nBRA GTU,адр... егер PSR.Z анық болса және PSR.C орнатылған болса
00111111n(Резервтелген)
0опкодwBqг.бсALU операциялары: dest ← OP (W)w,қайнар көзі)
01000wBqг.бсҚОСУ [.B] Вw,src,дстCЗNdst ← Ww + src
01001wBqг.бсADDC [.B] Ww,src,дстCЗNdst ← Ww + src + C
01010wBqг.бсSUB [.B] Ww,src,дстCЗNdst ← Ww - src
01011wBqг.бсSUBB [.B] Ww,src,дстCЗNdst ← Ww - ~ src - C̅ = Ww + ~ src + C
01100wBqг.бсЖӘНЕ [.B] В.w,src,дстЗNdst ← Ww & src
01101wBqг.бсXOR [.B] Ww,src,дстЗNdst ← Ww ^ src
01110wBqг.бсIOR [.B] Ww,src,дстЗNdst ← Ww | src
01111wBqг.бсMOV [.B] src,дстЗNdst ← src (офсеттік режимге рұқсат етілген)
10000fг.MOV f, Wг.Wd ← f
10001fсMOV Wс,ff ← ​​Ws
10010кBкг.ксMOV [.B] [Wс+s10], В.г.10 биттік ығысумен жүктеңіз
10011кBкг.ксMOV [.B]Ws,[Wd+s10]10 биттік ығысумен сақтаңыз
10100опкодбЗB—0—бсБит операциялары қайнар көзі
10100000б0B—0—бсBSET [.B] #б,srcSrc битін орнатыңыз
10100001б0B—0—бсBCLR [.B] #б,srcSrc битін тазарту
10100010б0B—0—бсBTG [.B] #б,srcSRC битін ауыстырып қосыңыз
10100011б00—0—бсBTST.C #б,srcCPSR.C = src бит b мәнін орнатыңыз
10100011б10—0—бсBTST.Z #б,srcЗPSR.Z = орнатыңыз Src биті b
10100100бЗ0—0—бсBTSTS.з #б,srcC / ZSrc b битін тексеріңіз (C немесе Z ішіне), содан кейін орнатыңыз
10100101Зw0—0—бсBTST.з Ww,srcC / ZSrc-тің Ww сынағы
10100110б00—0—бсBTSS #б,srcСынақ биті, егер орнатылған болса, өткізіп жіберіңіз
10100111б00—0—бсBTS №б,srcСынақ биті, егер анық болса, өткізіп жіберіңіз
10101опкодбfБит операциялары f
10101000бfбBSET [.B] f,#б$ F $ битін қойыңыз
10101001бfBCLR.B f,#бF-тің b биті таза
10101010бfBTG.B f,#бF-тің битін ауыстырып қосыңыз
10101011бfBTST.B f,#бЗF-тің сынақ биті
10101100бfBTSTS.B f,#бЗF-тің биттік сынын тексеріңіз, содан кейін орнатыңыз
10101101Зw0—0—бсBSW.з src, WwPSW.C немесе көшіріңіз PSW.Z WR-ді тістеу
10101110бfBTSS f,#бСынақ биті, егер орнатылған болса, өткізіп жіберіңіз
10101111бfBTSC f,#бСынақ биті, егер анық болса, өткізіп жіберіңіз
101100опкодBкг.Тіркелу-жедел операциялар:г. ← OP (W)г.,к)
101100000Bкг.[.B] # қосуu10, Wг.CЗNWd ← Wd + k
101100001Bкг.ADC [.B] #u10, Wг.CЗNWd ← Wd + k + C
101100010Bкг.SUB [.B] #u10, Wг.CЗNWd ← Wd - к
101100011Bкг.SUBB [.B] #u10, Wг.CЗNWd ← Wd - k - C̅
101100100Bкг.ЖӘНЕ [.B] #u10, Wг.ЗNWd ← Wd & k
101100101Bкг.XOR [.B] #u10, Wг.ЗNWd ← Wd ^ k
101100110Bкг.IOR [.B] #u10, Wг.ЗNWd ← Wd | к
101100111Bкг.MOV [.B] #u10, Wг.Wd ← k
101101опкодBД.fALU операциялары: dest ← OP (f, W0)
101101000BД.fҚОСУ [.B] f[, WREG]CЗNdest ← f + W0
101101001BД.fADC [.B] f[, WREG]CЗNdest ← f + W0 + C
101101010BД.fSUB [.B] f[, WREG]CЗNdest ← f - W0
101101011BД.fSUBB [.B] f[, WREG]CЗNdest ← f - W0 + C̅
101101100BД.fЖӘНЕ [.B] f[, WREG]ЗNdest ← f & W0
101101101BД.fXOR [.B] f[, WREG]ЗNdest ← f ^ W0
101101110BД.fIOR [.B] f[, WREG]ЗNdest ← f | W0
101101111B1fMOV [.B] WREG,ff ← ​​W0
1011100оптwг.0бс16 × 16 → 32 көбейту
101110000wг.0бсMUL.UU Ww,src, Wг.Wd + 1: Wd ← Ww × src (қол қойылмаған)
101110001wг.0бсМуль.А.Ш.w,src, Wг.Wd + 1: Wd ← Ww × src (src қол қойылған)
101110010wг.0бсMUL.SU Ww,src, Wг.Wd + 1: Wd ← Ww × src (Ww қол қойылған)
101110011wг.0бсMUL.SS Ww,src, Wг.Wd + 1: Wd ← Ww × src (қол қойылған)
1011101оптBqг.бсБағдарламаның жадына қол жетімділік (тек жанама режимдерде)
101110100Bqг.бсTBLRDL [.B] src,дстdst ← ROM [TBLPAG: src] (биттер 15: 0)
101110101Bqг.бсTBLRDH [.B] src,дстdst ← ROM [TBLPAG: src] (биттер 23:16)
101110110Bqг.бсTBLWTL [.B] src,дстROM [TBLPAG: dst] ← src (биттер 15: 0)
101110111Bqг.бсTBLWTH [.B] src,дстROM [TBLPAG: dst] ← src (биттер 23:16)
101111000B0fMUL [.B] fW3:W2 ← f × W0 (unsigned)
101111000B1(Резервтелген)
101111001(Резервтелген)
10111101(Резервтелген)
1011111000—0—г.0бсMOV.D src,Wг.Load register pair
1011111010qг.—0—с0MOV.D Wс,дстStore register pair
10111111(Резервтелген)
11000мASхжменjаDSP MAC (dsPIC only)
11001Other DSP instructions (dsPIC only)
1100111100—0—г.бсFF1R src,Wг.CFind first one from right (lsb)
1100111110—0—г.бсFF1L src,Wг.CFind first one from left (msb)
110100опкодBqг.бсShift/rotate general operand
110100000Bqг.бсSL[.B] src,дстCЗNdst ← src << 1, shift left (into carry)
110100010Bqг.бсLSR[.B] src,дстCЗNdst ← src >> 1, logical shift right
110100011Bqг.бсASR[.B] src,дстCЗNdst ← src >> 1, arithmetic shift right
110100100Bqг.бсRLNC[.B] src,дстЗNdst ← src <<< 1, rotate left (no carry)
110100101Bqг.бсRLC[.B] src,дстCЗNC:dst ← src:C << 1, rotate left through carry
110100110Bqг.бсRRNC[.B] src,дстЗNdst ← src >>> 1, rotate right (no carry)
110100111Bqг.бсRRC[.B] src,дстCЗNdst:C ← C:src >> 1, rotate right through carry
110101опкодBД.fShift/rotate f
110101000BД.fSL[.B] f[,WREG]CЗNdest ← f << 1, shift left (into carry)
110101010BД.fLSR[.B] f[,WREG]CЗNdest ← f >> 1, logical shift right
110101011BД.fASR[.B] f[,WREG]CЗNdest ← f >> 1, arithmetic shift right
110101100BД.fRLNC[.B] f[,WREG]ЗNdest ← f <<< 1, rotate left (no carry)
110101101BД.fRLC[.B] f[,WREG]CЗNC:dest ← f:C << 1, rotate left through carry
110101110BД.fRRNC[.B] f[,WREG]ЗNdest ← f >>> 1, rotate right (no carry)
110101111BД.fRRC[.B] f[,WREG]CЗNdest:C ← C:f >> 1, rotate right through carry
11011000Uтг.Д.00сDivide step (prefix with REPEAT #17)
110110000—0—г.000сDIV.S Wг.,WсCЗNW0 ← Wd/Ws, W1 ← remainder
110110000тг.100сDIV.SD Wг.,WсCЗNW0 ← Wt:Wd/Ws, W1 ← remainder
110110001—0—г.000сDIV.U Wг.,WсCЗNW0 ← Wd/Ws, W1 ← remainder
110110001тг.100сDIV.UD Wг.,WсCЗNW0 ← Wt:Wd/Ws, W1 ← remainder
110110010т—0—000сDIVF Wт,WсCЗNW0 ← Wt:0/Ws, W1 ← remainder
110110011(Резервтелген)
1101101(Резервтелген)
110111опкодwг.мен00сShift/rotate multiple
110111000wг.000сSL Ww,Wс,Wг.ЗNWd ← Ww << Ws
110111000wг.100кSL Wv,#u4,Wг.ЗNWd ← Ww << k
110111100wг.000сLSR Ww,Wс,Wг.ЗNWd ← Ww >> Ws, logical shift right
110111100wг.100кLSR Wv,#u4,Wг.ЗNWd ← Ww >> k, logical shift right
110111101wг.000сASR Ww,Wс,Wг.ЗNWd ← Ww >> Ws, arithmetic shift right
110111101wг.100кASR Wv,#u4,Wг.ЗNWd ← Ww >> k, arithmetic shift right
110111110—0—г.бсОңтүстік Кәрея чемпион src,Wг.CFind permissible arithmetic normalization shift
111000000—0—B000бсCP0[.B] srcCЗNCompare with zero, src − 0
111000010wB000бсCP[.B] Ww,srcCЗNCompare, Ww − src (Ww + ~src + 1)
111000011wB000бсCPB[.B] Ww,srcCЗNCompare with borrow, Ww − src − C̅ (Ww + ~src + C)
111000100B0fCP0[.B] fCЗNCompare with zero, f − 0
111000110B0fCP[.B] fCЗNCompare, f − W0
111000111B0fCPB[.B] fCЗNCompare with borrow, f − W0 − C̅ (f + ~W0 + C)
1110010(Резервтелген)
1110011оптwB—0—сCompare and skip
111001100wB—0—сCPSGT[.B] Ww,Wс...if Ww > Ws, signed
111001101wB—0—сCPSLT[.B] Ww,Wс...if Ww < Ws, signed
111001110wB—0—сCPSNE[.B] Ww,Wс...if Ww ≠ Ws
111001111wB—0—сCPSNE[.B] Ww,Wс...if Ww = Ws
111010000Bqг.бсINC[.B] src,дстCЗNdst ← src+1
111010001Bqг.бсINC2[.B] src,дстCЗNdst ← src+2
111010010Bqг.бсDEC[.B] src,дстCЗNdst ← src−1
111010011Bqг.бсDEC2[.B] src,дстCЗNdst ← src−2
111010100Bqг.бсNEG[.B] src,дстCЗNdst ← ~src+1
111010101Bqг.бсCOM[.B] src,дстЗNdst ← ~src
111010110Bqг.—0—CLR[.B] дстdst ← 0
111010111Bqг.—0—SETM[.B] дстdst ← ~0
111011000BД.fINC[.B] f[,WREG]CЗNdest ← f+1
111011001BД.fINC2[.B] f[,WREG]CЗNdest ← f+2
111011010BД.fDEC[.B] f[,WREG]CЗNdest ← f−1
111011011BД.fDEC[.B] f[,WREG]CЗNdest ← f−2
111011100BД.fNEG[.B] f[,WREG]CЗNdest ← ~f+1
111011101BД.fCOM[.B] f[,WREG]ЗNdest ← ~f
111011110BД.fCLR[.B] f[,WREG]dest ← 0
111011111BД.fSETM[.B] f[,WREG]dest ← ~0
111100мA1хжменjоптDSP MPY/MAC/ED/EDAC (dsPIC only)
111101(Резервтелген)
11111000f0БАСЫҢЫЗ fPush f on top of stack
11111001f0ПОП fPop f from top of stack
1111101000кLNK #u14Push W14, W14 ← W15, W15 += k
1111101010—0—ULNKW15 ← W14, pop W14
1111101100000г.бсSE src,дстCЗNdst ← sign_extend(src), copy bit 7 to bits 15:8
1111101110000г.бсZE src,дст1З0dst ← zero_extend(src), clear bits 15:8
1111110000кDISI #u14Disable interrupt for к+1 cycles
1111110100000г.000сEXCH Wс,Wг.Swap contents of registers Ws, Wd
11111101010000000000сDAW.B WсCDecimal adjust based on C, DC
111111011B0000000000сSWAP[.B] WсSwap halves of Ws
1111111000—0—ҚАЛПЫНА КЕЛТІРУSoftware reset
11111110010—0—кPWRSAV #u1Go into sleep or idle mode
11111110011—0—CLRWDTClear watchdog timer
11111110100—0—POP.SPop shadow registers (W0–3, part of PSR)
11111110101—0—PUSH.SPush shadow registers (W0–3, part of PSR)
1111111011(Резервтелген)
11111111NOPRNo operation (version #2)

Әдебиеттер тізімі

  1. ^ PIC10F200/202/204/206 Data Sheet (PDF). Microchip Technology. 2007. б. 52. мұрағатталған түпнұсқа (PDF) 2015-08-11. Алынған 2015-01-15.
  2. ^ http://www.emc.com.tw/eng/products.asp
  3. ^ ELAN Microelectronics Corp. (26 April 2016), EM78P157N 8-bit microcontroller with OTP ROM Product Specification (PDF), version 1.3, мұрағатталды (PDF) түпнұсқасынан 2016-03-04, алынды 2020-06-06
  4. ^ а б ELAN Microelectronics Corp. (25 April 2016), EM78P143 8-bit microprocessor with OTP ROM Product Specification (PDF), version 1.7, p. 77, алынды 2020-06-06
  5. ^ ELAN Microelectronics Corp. (April 2016), EM78P346N 8-bit microprocessor with OTP ROM Product Specification (PDF), version 1.5, p. 77, алынды 2019-07-11
  6. ^ ELAN Microelectronics Corp. (17 April 2000), EM78860 8-bit Micro-controller (PDF), б. 17, алынды 2019-07-11
  7. ^ ELAN Microelectronics Corp. (15 March 2013), EM78F648/644/642/641N/548/544/542/541N Flash Series 8-Bit Microcontroller Product Specification (PDF), version 1.2, pp. 162–165, алынды 2019-07-11
  8. ^ Derived from instruction encoding tables in Elan eUIDE II v2.19.60.14, released 2019-05-01, accessed 2019-07-13. Нақтырақ айтқанда Bin/*.cfg файлдар.
  9. ^ ELAN Microelectronics Corp. (2014-01-14), EM78XXX 15-Bit Instruction Set (PDF), алынды 2019-07-13
  10. ^ "Introducing the Enhanced Mid-Range Architecture" (PDF). Микрочип.
  11. ^ Wolf, Ash "Ninji" (12 December 2018). "Mouse Adventures #3: Writing a Disassembler". Алынған 8 шілде 2019.
  12. ^ Carlson, Jay (6 September 2019). "What's up with these 3-cent microcontrollers? (A review of the Padauk PMS150C and friends)". Алынған 2020-05-18.
  13. ^ "The "terrible" 3 cent MCU – a short survey of sub $0.10 microcontrollers". Вимнің блогы. 12 тамыз 2019. Алынған 2020-05-18.
  14. ^ Wolf, Ash "Ninji" (12 December 2018). "Documentation for PADAUK FPPA MCUs". Алынған 2020-05-18.
  15. ^ Padauk Technology Co. Ltd. (11 December 2018). "PMC150/PMS150 8-bit OTP Type IO Controller" (PDF) (data sheet). Version 1.8. 38-51 бет. PDK-DS-PMX150-EN-V108. Алынған 2020-06-08.
  16. ^ Wolf, Ash "Ninji" (23 May 2020). "PADAUK FPPA core devices (14 bit)". Алынған 2020-06-08.
  17. ^ Wolf, Ash "Ninji" (26 November 2018). "fppa_instructions_sets_notes/14bit.txt". Алынған 2020-06-08.
  18. ^ Padauk Technology Co. Ltd. (18 June 2019). "PFS154 8bit MTP Type IO controller Data Sheet" (PDF). Version 1.04. 71–84 беттер. PDK-DS-PFS154_RN_V104. Алынған 2020-06-09.
  19. ^ http://www.microchipc.com/sourcecode/
  20. ^ Microchip Technology, Inc. (2007), PIC18F1220/1320 Data Sheet (PDF), алынды 2012-04-02
  21. ^ [1]
  22. ^ dsPIC30F Programmer's Reference Manual (PDF), Microchip Technology, 2008, DS70157C, алынды 2012-07-02