Link külső forrásra, ahol a PIC18 utasításkészlete található: itt 
Nagyon jó és magyar!!! : https://www.picnick.hu/mplab/assembly_programozas.pdf  
Jó link asm-hez: http://www.islavici.ro/cursuriold/conducere%20sist%20cu%20calculatorul/PICbook/3_chapter.htm
Táblázatosan gépi kódok formájában is: https://en.wikipedia.org/wiki/PIC_instruction_listings
Példaprojekt amiből sokat lehet tanulni: Itt!  
Microchip termékek kiválasztása: Kereső itt!   Konkrét rendelhető termékek: http://www.microchipdirect.com/
	
		
			| Mnemonik CSS underlined Operandus
 | Leírás |  | Ciklus | Állított jelzőbitek
 | Megjegyzés | 
		
			| BÁJT ORIENTÁLT, FÁJLREGISZTERES UTASÍTÁSOK | 
		
			| ADDWF | f,d,a | WREG és f összeadása ADD WREG to F
 | Info 
 | 1 | C,DC,Z,OV,N | 1,2 | 
		
			| ADDWFC | f,d,a | W, f és az átvitelbit összeadása | Info | 1 | C,DC,Z,OV,N | 1,2 | 
		
			| ANDWF | f,d,a | W és f  ÉS kapcsolata | Info | 1 | Z,N | 1,2 | 
		
			| CLRF | f,a | f  törlése | Info | 1 | Z | 2 | 
		
			| COMF | f,d,a | f komplementálása | Info | 1 | Z,N | 1*,2* | 
		
			| CPFSEQ | f,a | WREG és f összehasonlítása, átlép ha = | Info | 1 (2 v.3) | nincs | 4 | 
		
			| CPFSGT | f,a | WREG és f összehasonlítása, átlép ha f> | Info | 1 (2 v.3) | nincs | 4 | 
		
			| CPFSLT | f,a | WREG és f összehasonlítása, átlép ha f< | Info | 1 (2 v.3) | nincs | 4 | 
		
			| DECF | f,d,a | f csökkentése 1-el | Info | 1 | C,DC,Z,OV,N | 1,2,3,4 | 
		
			| DECFSZ | f,d,a | f csökkentése, átlép ha 0 | Info | 1 (2 v.3) | nincs | 1,2,3,4 | 
		
			| DCFSNZ | f,d,a | f csökkentése, átlép ha nem 0 | Info | 1 (2 v.3) | nincs | 1,2 | 
		
			| INCF | f,d,a | f növelése | Info | 1 | C,DC,Z,OV,N | 1,2,3,4 | 
		
			| INCFSZ | f,d,a | f növelése, átlép ha 0 | Info | 1 (2 v.3) | nincs | 4 | 
		
			| INFSNZ | f,d,a | f növelése, átlép ha nem 0 | Info | 1 (2 v.3) | nincs | 1,2 | 
		
			| IORWF | f,d,a | WREG és f VAGY kapcsolata | Info | 1 | Z,N | 1,2 | 
		
			| MOVF | f,d,a | f mozgatása | Info | 1 | Z,N | 1 | 
		
			| MOVFF | f, f | első f  (forrás)mozgatása második f -be  (cél) | info | 2 | nincs |  | 
		
			| MOVWF | f,a | WREG mozgatása f-be | Info | 1 | nincs |  | 
		
			| MULWF | f,a | WREG és f összeszorzása | Info | 1 | nincs |  | 
		
			| NEGF | f,a | f kettes komplemensének képzése | Info | 1 | C,DC,Z,OV,N | 1,2 | 
		
			| RLCF | f,d,a | f forgatása balra átvitelbiten keresztül | Info | 1 | C,Z,N |  | 
		
			| RLNCF | f,d,a | f forgatása balra átvitelbit kihagyásával | Info | 1 | Z,N | 1,2 | 
		
			| RRCF | f,d,a | f forgatása jobbra átvitelbiten keresztül | Info | 1 | C,Z,N |  | 
		
			| RRNCF | f,d,a | f forgatása jobbra átvitelbit kihagyásával | Info | 1 | Z,N |  | 
		
			| SET | f | f minden bitjének 1-be állítása | Info | 1 | nincs |  | 
		
			| SUBFWB | f,d,a | f kivonása a WREG-ből áthozattal | Info | 1 | C,DC,Z,OV,N | 1,2 | 
		
			| SUBWF | f,d,a | WREG kivonása f-ből | Info | 1 | C,DC,Z,OV,N |  | 
		
			| SUBWFB | f,d,a | WREG kivonása f-ből áthozattal | Info | 1 | C,DC,Z,OV,N | 1,2 | 
		
			| SWAPF | f,d,a | f alsó és felső 4 bitjének felcserélése | Info | 1 | nincs | 4 | 
		
			| TSTFSZ | f,a | f tesztelése és átlépés, ha 0 | Info | 1 (2 v.3) | nincs | 1,2 | 
		
			| XORWF | f,d,a | WREG és az f kizáró-VAGY kapcsolata | Info | 1 | Z,N |  | 
		
			|  | 
		
			| BIT ORIENTÁLT, FÁJLREGISZTERES UTASÍTÁSOK | 
		
			| BCF | f,b,a | f adott bitjének törlése | Info | 1 |  | 1,2 | 
		
			| BSF | f,b,a | f adott bitjének 1-be állítása | Info | 1 |  | 1,2 | 
		
			| BTFSC | f,b,a | f adott bitjének tesztelése és átlép, ha 0 | Info | 1 (2 v.3) |  | 3,4 | 
		
			| BTFSS | f,b,a | f adott bitjének tesztelése és átlép, ha 1 | Info | 1 (2 v.3) |  | 3,4 | 
		
			| BTG | f,b,a | f adott bitjének invertálása | Info | 1 |  | 1,2 | 
		
			|  | 
		
			| LITERAL (KONSTANS) KEZELŐ ÉS VEZÉRLŐ UTASÍTÁSOK | 
		
			| ADDLW | k | Konstans hozzáadása a WREG-hez ADD literal WREG
 | Info | 1 | C,DC,Z,OV,N | - | 
		
			| ANDLW | k | Konstans illetve a WREG ÉS kapcsolata AND literal with WREG
 | Info | 1 | Z,N | - | 
		
			| IORLW | k | Konstans és a WREG VAGY kapcsolata Inclusive OR literal with WREG
 | Info | 1 | Z,N | - | 
		
			| LFSR | f,k | FSR feltöltése egy (12 bit) konstanssal Move literal (12 bit) to FSRx
 | Info | 2 | nincs | - | 
		
			| MOVLB | k | BSR feltöltése egy konstanssal <3:0> Move literal to BSR <3:0>
 | Info | 1 | nincs |  | 
		
			| MOVLW | k | Konstans betöltése a WREG-be Move literal to Wreg
 | Info | 1 | nincs |  | 
		
			| MULLW | k | Konstans és a WREG összeszorzása Multiply literal with WREG
 | Info | 1 | nincs |  | 
		
			| RETLW | k | Visszatérés a WREG-ben egy konstanssal Return With literal in WREG
 | Info | 2 | nincs |  | 
		
			| SUBLW | k | WREG kivonása a konstansból Subtract WREG from literal
 | Info | 1 | C,DC,Z,OV,N |  | 
		
			| XORLW | k | WREG és a konstans kizáró-VAGY kapcsolata Exclusive OR literal with WREG
 | Info | 1 | Z,N |  | 
		
			|  | 
		
			| VEZÉRLŐ UTASÍTÁSOK | 
		
			| BC | n | Ugrás, ha az átvitelbit 1 Branch if Carry
 | Info | 1 (2) | nincs |  | 
		
			| BN | n | Ugrás, ha az előjelbit 1 Branch if negative
 | Info | 1 (2) | nincs |  | 
		
			| BNC | n | Ugrás, ha az átvitelbit 0 Branch if Not Carry
 | Info | 1 (2) | nincs |  | 
		
			| BNN | - | Ugrás, ha az előjelbit 0 Branch if not Negative
 | Info | 1 (2) | nincs |  | 
		
			| BNOV | - | Ugrás, ha túlcsordulásbit 0 Branch if Not Overflow
 | Info | 1 (2) | nincs |  | 
		
			| BNZ | - | Ugrás, ha a zéróbit 0 Branch if Not Zero
 | Info | 2 | nincs |  | 
		
			| BOV | - | Ugrás, ha túlcsordulásbit 1 Branch if Overfow
 | Info | 1 (2) | nincs |  | 
		
			| BRA | - | Feltétel nélküli ugrás Branch Unconditionally
 | Info | 1 (2) | nincs |  | 
		
			| BZ | n | Ugrás, ha a zéróbit 1 Branch if Zero
 | Info | 1 (2) | nincs |  | 
		
			| CALL | n,s | Szubrutin hívás (1. szó, 2. szó) Call suroutine
 | Info | 2 | nincs |  | 
		
			| CLRWDT | - | Watchdog Timer törlése Clear Watchdog Timer
 | Info | 1 | __  __ TO,PD
 |  | 
		
			| DAW | - | WREG decimális korrekciója Decimal Adjust WREG
 | Info | 1 | C |  | 
		
			| GOTO | - | Feltétel nélküli ugrás (1. szó, 2. szó) Go to address
 | Info | 2 | nincs(1. szó, 2. szó) |  | 
		
			| NOP | - | Nincs kijelölt műveletvégzés No Operation
 | Info | 1 | nincs |  | 
		
			| POP | - | Kivétel a veremből Pop to of return stack (TOS)
 | Info | 1 | nincs |  | 
		
			| PUSH | - | Beírás a verembe Push to of return stack (TOS)
 | Info | 1 | nincs |  | 
		
			| RCALL | n | Relatív szubrutin hívása Relative Call
 | Info | 2 | nincs |  | 
		
			| RESET | - | Szoftveres reszet Software device RESET
 | Info | 1 | mindegyik |  | 
		
			| RETFIE | s | Visszatérés megszakítás engedélyezéssel Return from interrupt enable
 | Info | 2 | GIE/GIEH PEIE/GIEL
 |  | 
		
			| RETLW | k | Visszatérés a WREG-ben egy konstanssal Return with literal in WREG
 | Info | 2 | nincs |  | 
		
			| RETURN | s | Visszatérés a szubrutinból Return of Subroutine
 | Info | 2 | nincs |  | 
		
			| SLEEP | - | Szundi üzemmód Go into standby mode
 | Info | 1 | __  __ TO,PD
 |  | 
		
			|  | 
		
			| ADATMEMÓRIA <--> PROGRAMMEMÓRIA ADATCSERÉT MEGVALÓSÍTÓ UTASÍTÁSOK | 
		
			| TBLRD* | Tábla olvasás Table Read
 | Info | 2 | nincs |  | 
		
			| TBLRD*+ | Tábla olvasás utólagos növelésse Table Read with post-increment
 | Info | 2 | nincs |  | 
		
			| TBLRD*- | Tábla olvasás utólagos csökkentéssel Table Read post-decrement
 | Info | 2 | nincs |  | 
		
			| TBLRD+* | Table Read pre-increment | Info | 2 | nincs |  | 
		
			| TBLWT* | Tábla írás Table Write
 | Info | 2 (5) | nincs |  | 
		
			| TBLWT*+ | Tábla írás utólagos növeléssel Table Write post-increment
 | Info | 2 (5) | nincs |  | 
		
			| TBLWT*- | Tábla írás utólagos csökkentéssel Table Write post-decrement
 | Info | 2 (5) | nincs |  | 
		
			| TBLWT+* | Tábla írás előzetes növelésse Table Write pre-increment
 | Info | 2 (5) | nincs |  | 
	
 
	
		
			| Mező | Leírás | 
		
			| a | RAM hozzáférési bit a=0: a RAM terület az ún. „Access” RAM-ban van (a BSR-t nem kell figyelembe venni) (asm-ben 0 vagy ACCESS)
 a=1: a RAM bankot a BSR jelöli ki  (asm-ben 1 vagy BANKED )
 | 
		
			| bbb | Bit cím a 8 bites fájlregiszterben | 
		
			| d | Célkiválasztó bit (dest): d=0(W): az eredmény a WREG-be kerül
 d=1(F): az eredmény a fájlregiszterbe (f) kerül
 | 
		
			| f | 8 bites fájlregiszter neve (pl PORTB) v. címe(0xFF) | 
		
			| fs | 12 fájlregiszter címe (0x000-0xFFF). A forráscím tkp. | 
		
			| fd | 12 fájlregiszter címe (0x000-0xFFF). A célcím tkp. | 
		
			| k | Konstans mező, konstans adat, vagy címke (8, 16, ill. 20 bites lehet) | 
		
			| label | Címke neve. Max. ha jól tudom 32 karakter. | 
		
			| mm *
 *+
 *-
 +*
 | A TBLPTR regiszter kezelésének módja tábla íráskor és olvasáskor: Nem változik a TBLPTR értéke (se íráskor, se olvasáskor)
 Az olvasás vagy írás után 1-gyel növekszik a TBLPTR
 Az olvasás vagy írás után 1-gyel csökken a TBLPTR
 Az olvasás vagy írás előtt 1-gyel növekszik a TBLPTR
 | 
		
			| n | Relatív cím (2-es komplemensben adott szám) a feltételes elágaztató utasításoknál, vagy közvetlen cím szubrutin hívásnál, visszatéréskor, ugráskor. | 
		
			| PRODH | A szorzás eredményének felső bájtja | 
		
			| PRODL | A szorzás eredményének alsó bájtja | 
		
			| s | Fast call/return módot kiválasztó bit s=0: nincs mentés az árnyékregiszterekbe
 s=4: mentés/töltés az árnyékregiszterekbe (fast módus)
 | 
		
			| u | Nem használt, vagy nem változik | 
		
			| WREG | Munkaregiszter (akkumulátor) | 
		
			| x | Figyelmen kívül hagyható (0 v. 1) A fordító nullát generál. Ez a többi Microchip szoftverrel való kompatíbilitáshoz szükséges.
 | 
		
			| TBLPTR | 21 bites táblamutató (egy programmemória beli címre mutat) | 
		
			| TABLAT | A táblából kiolvasott értéket tárolja | 
		
			| TOS | TOP OF STACK, a verem teteje | 
		
			| PC | Programszámláló | 
		
			| PCL | Programszámláló alsó bájtj | 
		
			| PCH | Programszámláló felső bájtja | 
		
			| PCLATH | Programszámláló felső bájtját tároló regiszte | 
		
			| PCLATU | Programszámláló legfelső bájtját tároló regiszte | 
		
			| GIE | Általános megszakítás engedélyezés | 
		
			| WDT | Watchdog Timer | 
		
			| __ TO
 | Time-out bit | 
		
			| __ PD
 | Power-down bit | 
		
			| C, DC, Z, OV, N | Az ALU státuszbitjei: átvitelbit, fél átvitel, zéróbit, túlcsordulásbit, előjelbit | 
		
			| [ ] | Feltételes | 
		
			| ( ) | Tartalom | 
		
			| → | Hozzárendelés | 
		
			| < > | Bitterület a regiszterben | 
		
			| € | Halmaz eleme | 
		
			| Dőlt betű | A felhasználó által definiált | 
	
 
 
 
BÁJT ORIENTÁLT, FÁJLREGISZTERES UTASÍTÁSOK
ADDWF
Vissza
 példaWFC
ADDWFC
 Vissza
ANDWF
 Vissza
CLRF
 Vissza
 
COMF 
 Vissza
 
CPFSEQ
 Vissza
CPFSGT
 Vissza
CPFSLT
Vissza
DECF
Vissza
DECFSZ
Vissza
DCFSNZ
Vissza
INCF
Vissza
INCFSZ
Vissza
INFSNZ
Vissza
IORWF
Vissza
MOVF
Vissza
MOVFF
Vissza
MOVWF
Vissza
MULWF
Vissza
NEGF
Vissza
RLCF
Vissza
RLNCF
Vissza
RRCF
Vissza
RRNCF
Vissza
SET
Vissza
SUBFWB
Vissza
SUBWF
Vissza
SUBWFB
Vissza
SWAPF
Vissza
TSTFSZ
Vissza
XORWF
Vissza
 
BIT ORIENTÁLT, FÁJLREGISZTERES UTASÍTÁSOK
Vezérlőutasítások: http://www.t-es-t.hu/elokep/pic/felhkk/kk/sz110514.htm
BCF
Vissza
BSF
Vissza
BTFSC
Vissza
BTFSS
Vissza
BTG
Vissza
 
LITERAL (KONSTANS) KEZELŐ ÉS VEZÉRLŐ UTASÍTÁSOK
ADDLW
Vissza
ANDLW
Vissza
IORLW
Vissza
LFSR
Vissza
MOVLB
Vissza
MOVLW
Vissza
MULLW
Vissza
RETLW
Vissza
SUBLW
Vissza
XORLW
Vissza
 
VEZÉRLŐ UTASÍTÁSOK
BC
Vissza
BN
Vissza
BNC
Vissza
BNN
Vissza
BNOV
Vissza
BNZ
Vissza
BOV
Vissza
BRA
Vissza
BZ
Vissza
CALL
Vissza
CLRWDT
Vissza
DAW
;                 Unsigned BCD Addition
 ;
 ;       This routine performs a 2 Digit Unsigned BCD Addition
 ; It is assumed that the two BCD numbers to be added are in
 ; locations Num1 & Num2. The result is the sum of Num1+Num2
 ; and is stored in location Num2 and the overflow carry is returned
 ; in location Num1
 ;*******************************************************************;
 ;
 BCDAdd
     movff   Num1,WREG
     addwf   Num2,W                ; perform binary addition
     daw            ; adjust for BCD addition
     movff    WREG,Num2              ; BCD Result to Num2
     clrf    Num1
     rlcf       Num1              ; set Num1 = carry bit
     return ;
-----------------------------------------------------------------------------------
Example 1: Add two packed BCD numbers 99+99
                             (0x99 + 0x99)
OPCODE           Register   Value      DC  C
---------------  --------   ---------  --  -
                WREG       1001 1001
                FileX      1001 1001
                                       x  0
ADDWFC  FileX,W
                WREG       0011 0010   1  1
DAW
                WREG       1001 1000   1  0
                                          ^
                Note the carry -----------^
Example 2: Add two packed BCD numbers 70+70
                             (0x70 + 0x70)
OPCODE           Register   Value      DC  C
---------------  --------   ---------  --  -
                WREG       0111 0000
                FileX      0111 0000
                                       x  0
ADDWFC  FileX,W
                WREG       1110 0000   1  1
DAW
                WREG       0100 1000   0  1
                                          ^
                Note the carry -----------^
Vissza
GOTO
Vissza
NOP
Vissza
POP
Vissza
PUSH
Vissza
RCALL
Vissza
RESET
Vissza
RETFIE
Vissza
RETLW
Vissza
RETURN
Vissza
SLEEP
Vissza
 
ADATMEMÓRIA <--> PROGRAMMEMÓRIA ADATCSERÉT MEGVALÓSÍTÓ UTASÍTÁSOK
TBLRD*
Vissza
TBLRD*+
Vissza
TBLRD*-
Vissza
TBLRD+*
Vissza
TBLWT*
Vissza
TBLWT*+
Info
TBLWT*-
Vissza
TBLWT+*
Vissza
 
file:///C:/Pic_mikrokontrollerek/PIC18_utasitaskeszlet.pdf
A PIC 18xxx mikrovezérlők kiterjesztett utasításkészlettel rendelkeznek.  A legtöbb utasítás egyszavas (16 bit), de létezik 3 kétszavas utasítás is. Mindegyik egyszavas utasítás egy műveleti kódból (MK) – amely megadja az utasítás típusát – és egy vagy két operandusból – amelyre a művelet vonatkozik – áll. Az utasításkészlet 4 alapkategóriára osztható:  Bájt orientált művelet  Bit orientált művelet  Konstans művelet  Vezérlő utasítás A bájt orientált utasítások operandus mezője 3 részből áll: 1. Fájlregiszter (jele: f) 2. Az eredmény helye (jele: d) 3. „Acces” memória (jele: a) A fájlregisztert leíró „f” azt a regisztert jelenti, amire at utasítás irányul. A cél leíró (d) a művelet eredményének helyét adja meg. Amennyiben a d=0 (vagy d=W) az eredmény a WREG-ben keletkezik, amikor pedig a d=1 (vagy d=F) akkor abban a fájlregiszterben, amire az utasítás vonatkozik. A bit orientált utasítások operandus mezője is 3 részből áll: 1. Fájlregiszter (jele: f) 2. A fájlregiszter egy bitje (jele: b) 3. „Access” memória (jele: a) A bitet megadó „b” azonosító a fájlregiszteren belül annak a bitnek a sorszáma, amire a művelet vonatkozik. A konstans műveletek operandus mezője a következő részekből  áll:  A konstans értéke, amit a fájlregiszterbe töltünk (jele: k)  A felhasznált FSR regiszter, amibe a konstanst töltjük (jele: f)  Nincs operandus (jele: -) A vezérlő utasítások operandus mezője pedig a következő részekből áll:  Programmemória cím (jele: n)  A CALL vagy a RETURN utasítás módja (jele: s) 
 Tábla írás és olvasás módja (jele: m)  Nincs operandus (jele: -) A kétszavas utasítások 32 bitből állnak. A második szó felső 4 bitje 1-es. Amennyiben az első szó is utasításként értelmezett, akkor NOP hajtódik végre. Az egyszavas utasítások 1 gépi ciklus alatt hajtódnak végre, kivéve azokat az elágaztató utasításokat, amelyeknél a PC tartalma módosul. A kétszavas utasítás két gépi ciklus alatt hajtódik végre. Minden utasítás 4 oszcillátor periódust igényel. Ez azt jelenti, ha 4MHz a oszcillátor frekvenciája, akkor 1 utasítás 1µs alatt hajtódik végre. Feltételes ugró utasítás esetén amikor a PC tartalma módosul az utasítás végrehajtásához 2µs szükséges. Kétszavas elágaztató utasításoknál, ha a feltétel teljesül a végrehajtási idő 3µs lesz.  A példákban használt formátum „nnnh” hexadecimális számot jelent, ahol a „h” hexát jelent.
 
Soros adatátvitel: http://www.tankonyvtar.hu/hu/tartalom/tamop412A/2010-0017_41_mikrovezerlok_alkalmazasa/ch15s04.html
Pic24 asm: https://books.google.hu/books?id=ndALAAAAQBAJ&printsec=frontcover&hl=hu#v=onepage&q&f=false
https://books.google.hu/books?id=ndALAAAAQBAJ&printsec=frontcover&hl=hu#v=onepage&q&f=false
http://www.microchipdirect.com/ 
Kapacitív tasztatúra: http://shop.tavir.hu/product_info.php/gomb-billentyuzet-joystick-4x4-kap...
http://shop.tavir.hu/index.php/szenzor-gomb-billentyuzet-joystick-c-32_6...
Világító számítógép billentyűzet: https://www.infolex.hu/termekek/adatlap/18313/revoltec-lightboard-xl3-hu...