PIC16CXX ¾î¼Àºí ¸í·É¾î ¼¼Æ®

 

 ¸í·É¾î ¿ä¾à µµÇ¥

Mnemonic
¿ÀÆÛ·£µå

 ¼³¸í

 Cyc

  µ¿   ÀÛ  

 Status

Notes

¹ÙÀÌÆ®´ÜÀ§ ÆÄÀÏÁ¶ÀÛ ¸í·É(W=¿öÅ··¹Áö½ºÅÍ, F=ÆÄÀÏ·¹Áö½ºÅÍ, D =ÀúÀ广Çâ)

ADDWF  F,D
ANDWF  F,D
CLRF   F
CLRW
COMF   F,D
DECF   F,D
DECFSZ F,D
INCF   F,D
INCFSZ F,D
IORWF  F,D
MOVF   F,D
MOVWF  F
NOP    
RLF    F,D
RRF    F,D
SUBWF  F,D
SWAPF  F,D
XORWF  F,D

W¿Í F¸¦ ´õÇÔ
W¿Í F¸¦ AND ¿¬»ê
F¸¦ Ŭ¸®¾î
W¸¦ Ŭ¸®¾î
W¸¦ ¹ÝÀü(NOT) 
F Çϳª °¨¼Ò
F Çϳª °¨¼Ò/ 0ÀÌ¸é ½ºÅµ
F Çϳª Áõ°¡
F Çϳª Áõ°¡/ 0ÀÌ¸é ½ºÅµ 
W¿Í F¸¦ OR ¿¬»ê
F¸¦ D·Î Àü¼Û
W¸¦ F·Î Àü¼Û
µ¿ÀÛ¾ÈÇÔ(½Ã°£¼Òºñ)
F¸¦ ¿ÜÂÊÀ¸·Î ȸÀü 
F¸¦ ¿À¸¥ÂÊÀ¸·Î ȸÀü
F¿¡¼­ W¸¦ »©±â
ÇÏÀ§´Ïºí/»óÀ§´Ïºí ±³Ã¼
F¿Í W¸¦ ¹èŸÅÎ OR¿¬»ê  

1
1
1
1
1
1
1(2)
1
1(2)
1
1
1
1
1
1
1
1
1

W + F -> D
W .and. F -> D
0 -> F
0 -> W
Not F -> D
F - 1 -> D
if(F-1=0), Skip
F + 1 -> D
if(F+1=0), Skip
W .or. F -> D
F -> D
W -> F

C <- F <- C 
C -> F -> C 
F - W -> D
F0:3 <-> F4:7
W .xor. F -> D

C,DC,Z
Z
Z
Z
Z
Z
None
Z
None
Z
Z
None
None
C
C
C,DC,Z
None
Z

1,2,4
2,4
4


2,4
2,4
2,4
2,4
2,4
2,4
1,4

2,4
2,4
1,2,4
2,4
2,4

 ºñÆ®´ÜÀ§ ÆÄÀÏÁ¶ÀÛ ¸í·É (B = ºñÆ®)

BCF    F,B
BSF    F,B
BTFSC  F,B

BTFSS  F,B
 

FÀÇ ºñÆ®¸¦ Ŭ¸®¾î
FÀÇ ºñÆ®¸¦ ¼ÂÆ®
FÀÇ ºñÆ® Å×½ºÆ®, 0ÀÌ¸é ½ºÅµ
FÀÇ ºñÆ® Å×½ºÆ®, 1ÀÌ¸é ½ºÅµ

1
1
1(2)

1(2)
 

0 -> F(B)
1 -> F(B)
Test F(B),Skip
if 0
Test F(B),Skip
if 0

None
None
None

None
 

 2,4
2,4



 

 »ó¼ö ¹× Á¦¾î¸í·É (K=»ó¼ö)

ADDLW  K
ANDLW  K
CALL   K
CLRWDT
GOTO   K
IORLW  K
MOVLW  K
OPTION
RETFIE
RETLW  K
RETURN
SLEEP  
TRIS   K
XORLW  K

W¿Í »ó¼ö¸¦ ´õÇÔ
W¿Í »ó¼ö AND ¿¬»ê
¼­ºêǪƾ È£Ãâ
¿ÍÄ¡µ¶Å¸À̸Ӹ¦ Ŭ¸®¾î
¹«Á¶°Ç Á¡ÇÁ
W¿Í »ó¼ö¸¦ OR¿¬»ê
»ó¼ö¸¦ W·Î Àü¼Û
OPTION ·¹Áö½ºÅÍ Á¤ÀÇ
ÀÎÅÍ·´Æ®·ÎºÎÅÍ º¹±Í
¼­ºê·çƾÀ¸·ÎºÎÅÍ º¹±Í
¼­ºê·çƾÀ¸·ÎºÎÅÍ º¹±Í
½½¸³¸ðµå·Î Àüȯ
TRIS·¹Áö½ºÅÍ Á¤ÀÇ
W¿Í »ó¼ö¸¦ ¹èŸÀû OR¿¬»ê

1
1
2
1
2
1
1
1

2

1
1
 1 

 


 Z
None
TO, PD
None
Z
None
None
None
TO, PD
None
Z

 1

 

 

 


3









ADDWF Add W and f

¼­½Ä

[ label ] ADDWF f,d

¿ÀÆÛ·£µå

 

µ¿ÀÛ

(W) + (f) -> (dest)

¿µÇâ

C, DC, Z

±â°è¾î

0001

11df

ffff

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

ADDWF FSR, 0
¸í·É ¼öÇàÀü
W = 0x17
FSR = 0xC2
¸í·É ¼öÇàÈÄ
W = 0xD9
FSR = 0xC2





:



ANDLW And literal with W

¼­½Ä

[ label ] ANDLW k

¿ÀÆÛ·£µå

 

µ¿ÀÛ

(W).AND. (k) ?(W)

¿µÇâ

Z

±â°è¾î

  1110

 kkkk

kkkk 

¼³¸í

 

Words

 1

Cycles

 1 

¿¹Á¦

 ANDLW 0x5F
¸í·É ¼öÇàÀü
W = 0xA3
¸í·É ¼öÇàÈÄ
W = 0x03




ANDWF AND W with f

¼­½Ä

 [ label ] ANDWF f,d

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 (W) .AND. (f) ?(dest)

¿µÇâ

 

±â°è¾î

 0001

01df

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 ANDWF FSR, 1
¸í·É ¼öÇàÀü
W = 0x17
FSR = 0xC2
¸í·É ¼öÇàÈÄ
W = 0x17
FSR = 0x02




BCF Bit Clear f

¼­½Ä

 [ label ] BCF f,b

¿ÀÆÛ·£µå

 

µ¿ÀÛ

  0 ?(f<b>)

¿µÇâ

  None

±â°è¾î

  0100

  bbbf

 ffff

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

  BCF FLAG_REG, 7
¸í·É ¼öÇàÀü
FLAG_REG = 0xC7
¸í·É ¼öÇàÈÄ
FLAG_REG = 0x4




BSF Bit Set f

¼­½Ä

 [ label ] BSF f,b

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 1 ?(f<b>)

¿µÇâ

  None

±â°è¾î

 0101

bbbf 

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 BSF FLAG_REG, 7
¸í·É ¼öÇàÀü
FLAG_REG = 0x0A
¸í·É ¼öÇàÈÄ
FLAG_REG = 0x8A




BTFSC Bit Test f, Skip if Clear

¼­½Ä

 [ label ] BTFSC f,b

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 skip if (f<b>) = 0

¿µÇâ

  None

±â°è¾î

 0110

bbbf

ffff 

¼³¸í

 

Words

 1

Cycles

 1(2)

¿¹Á¦

 

   À̹èÁø ¿¹Á¦ ÀÔ·Â

 PC = address (HERE)
¸í·É ¼öÇàÈÄ
if FLAG<1> = 0,
PC = address (TRUE);
if FLAG<1> = 1,
PC = address(FALSE)




BTFSS Bit Test f, Skip if Set

¼­½Ä

 [ label ] BTFSS f,b

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 skip if (f<b>) = 1

¿µÇâ

 None

±â°è¾î

 0111

bbbf 

ffff 

¼³¸í

 

Words

 1

Cycles

 1(2)

¿¹Á¦

HERE    BTFSS    FLAG,1
FALSE   GOTO     PROCESS_CODE
TRUE      .

¸í·É ¼öÇàÀü
PC = address (HERE)
¸í·É ¼öÇàÈÄ
If FLAG<1> = 0,
PC = address (FALSE);
if FLAG<1> = 1,
PC = address (TRUE)




CALL Subroutine Call

¼­½Ä

 [ label ] CALL k

¿ÀÆÛ·£µå

 

µ¿ÀÛ

  (PC) + 1?Top of Stack

¿µÇâ

 

±â°è¾î

 1001

kkkk 

kkkk 

¼³¸í

 

Words

 1

Cycles

 2

¿¹Á¦

 HERE CALL THERE
¸í·É ¼öÇàÀü
PC = address (HERE)
¸í·É ¼öÇàÈÄ
PC = address (THERE)
TOS = address (HERE + 1)





CLRF Clear f

¼­½Ä

 [ label ] CLRF f

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 00h ?(f)

¿µÇâ

 Z

±â°è¾î

 0000

011f 

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

  CLRF FLAG_REG
¸í·É ¼öÇàÀü
FLAG_REG = 0x5A
¸í·É ¼öÇàÈÄ
FLAG_REG = 0x00
Z = 1





CLRW Clear W

¼­½Ä

 [ label ] CLRW

¿ÀÆÛ·£µå

 None

µ¿ÀÛ

  00h ?(W);

¿µÇâ

 Z

±â°è¾î

 0000

0100 

0000 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 CLRW
¸í·É ¼öÇàÀü
W = 0x5A
¸í·É ¼öÇàÈÄ
W = 0x00
Z = 1




CLRWDT Clear Watchdog Timer

¼­½Ä

 [ label ] CLRWDT

¿ÀÆÛ·£µå

  None

µ¿ÀÛ

 00h ?WDT;
0 ?WDT prescaler (if assigned);
1 ?TO;
1 ?PD

¿µÇâ

TO, PD 

±â°è¾î

 0000

 0000

 0100

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 CLRWDT
¸í·É ¼öÇàÀü
WDT counter = ?
¸í·É ¼öÇàÈÄ
WDT counter = 0x00
WDT prescale = 0
TO

 = 1
PD = 1




COMF Complement f

¼­½Ä

 [ label ] COMF f,d

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 (f) ?(dest)

¿µÇâ

 Z

±â°è¾î

 0010

01df 

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 COMF REG1,0
¸í·É ¼öÇàÀü
REG1 = 0x13
¸í·É ¼öÇàÈÄ
REG1 = 0x13
W = 0xEC




DECF Decrement f

¼­½Ä

 [ label ] DECF f,d

¿ÀÆÛ·£µå

 

µ¿ÀÛ

  (f) ?1 ?(dest)

¿µÇâ

  Z

±â°è¾î

 0000

11df 

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

  DECF CNT, 1
¸í·É ¼öÇàÀü
CNT = 0x01
Z = 0
¸í·É ¼öÇàÈÄ
CNT = 0x00
Z = 1




DECFSZ Decrement f, Skip if 0

¼­½Ä

 [ label ] DECFSZ f,d

¿ÀÆÛ·£µå

 (f) ?1 ?d; skip if result = 0

µ¿ÀÛ

 

¿µÇâ

 

±â°è¾î

 0010

11df 

ffff 

¼³¸í

 

Words

 1

Cycles

 1(2)

¿¹Á¦

  HERE DECFSZ CNT, 1
GOTO LOOP
CONTINUE
¸í·É ¼öÇàÀü
PC = address (HERE)
¸í·É ¼öÇàÈÄ
CNT = CNT - 1;
if CNT = 0,
PC = address (CONTINUE);
if CNT ?0,
PC = address (HERE+1)





GOTO Unconditional Branch

¼­½Ä

 [ label ] GOTO k

¿ÀÆÛ·£µå

 

µ¿ÀÛ

  k ?PC<8:0>;
STATUS<6:5> ?PC<10:9>

¿µÇâ

None 

±â°è¾î

 101k

kkkk 

kkkk 

¼³¸í

 

Words

 1

Cycles

 2

¿¹Á¦

  GOTO THERE
¸í·É ¼öÇàÈÄ
PC = address (THERE)





INCF Increment f

¼­½Ä

 [ label ] INCF f,d

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 (f) + 1 ?(dest)

¿µÇâ

 

±â°è¾î

 0010

10df 

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

  INCF CNT, 1
¸í·É ¼öÇàÀü
CNT = 0xFF
Z = 0
¸í·É ¼öÇàÈÄ
CNT = 0x00
Z = 1





INCFSZ Increment f, Skip if 0

¼­½Ä

  [label ] INCFSZ f,d

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 (f) + 1 ?(dest), skip if result = 0

¿µÇâ

 

±â°è¾î

 0011

11df 

ffff 

¼³¸í

 

Words

 1

Cycles

 1(2)

¿¹Á¦

  HERE INCFSZ CNT, 1
GOTO LOOP
CONTINUE 


¸í·É ¼öÇàÀü
PC = address (HERE)
¸í·É ¼öÇàÈÄ
CNT = CNT + 1;
if CNT = 0,
PC = address (CONTINUE);
if CN

T ?0,
PC = address (HERE +1)




IORLW Inclusive OR literal with W

¼­½Ä

 [ label ] IORLW k

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 (W) .OR. (k) ?(W)

¿µÇâ

±â°è¾î

 1101

kkkk 

kkkk 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 IORLW 0x35
¸í·É ¼öÇàÀü
W = 0x9A
¸í·É ¼öÇàÈÄ
W = 0xBF
Z = 0





IORWF Inclusive OR W with f

¼­½Ä

 [ label ] IORWF f,d

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 

¿µÇâ

±â°è¾î

 0001

00df 

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 IORWF RESULT, 0
¸í·É ¼öÇàÀü
RESULT = 0x13
W = 0x91
¸í·É ¼öÇàÈÄ
RESULT = 0x13
W = 0x93
Z = 0




MOVF Move f

¼­½Ä

  [ label ] MOVF f,d

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 (f) ?(dest)

¿µÇâ

 

±â°è¾î

 0010

00df 

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 MOVF FSR, 0
¸í·É ¼öÇàÈÄ
W = value in FSR register





MOVLW Move Literal to W

¼­½Ä

 [ label ] MOVLW k

¿ÀÆÛ·£µå

 

µ¿ÀÛ

  k ?(W)

¿µÇâ

  None

±â°è¾î

 1100

kkkk 

kkkk 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

  MOVLW 0x5A
¸í·É ¼öÇàÈÄ
W = 0x5A





MOVWF Move W to f

¼­½Ä

  [ label ] MOVWF f

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 (W) ?(f)

¿µÇâ

 None

±â°è¾î

 0000

001f 

ffff 

¼³¸í

 

Words

 

Cycles

 

¿¹Á¦

  MOVWF TEMP_REG
¸í·É ¼öÇàÀü
TEMP_REG = 0xFF
W = 0x4F
¸í·É ¼öÇàÈÄ
TEMP_REG = 0x4F
W = 0x4F





NOP No µ¿ÀÛ

¼­½Ä

 [ label ] NOP

¿ÀÆÛ·£µå

  None

µ¿ÀÛ

 

¿µÇâ

 

±â°è¾î

 0000

 0000

0000 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

  NOP





OPTION Load OPTION Register

¼­½Ä

  [ label ] OPTION

¿ÀÆÛ·£µå

  None

µ¿ÀÛ

 (W) ?OPTION

¿µÇâ

  None

±â°è¾î

 0000

0000

0000 

¼³¸í

 

Words

 

Cycles

 

¿¹Á¦

 OPTION
Bef

ore Instruction
W = 0x07
¸í·É ¼öÇàÈÄ
OPTION = 0x07





RETLW Return with Literal in W

¼­½Ä

  [ label ] RETLW k

¿ÀÆÛ·£µå

  k ?(W);

µ¿ÀÛ

 

¿µÇâ

 None

±â°è¾î

 1000

kkkk 

kkkk 

¼³¸í

 

Words

 1

Cycles

 2

¿¹Á¦

 





RLF Rotate Left f through Carry

¼­½Ä

 [ label ] RLF f,d

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 

¿µÇâ

 C

±â°è¾î

 0011

01df 

fff 

¼³¸í

 

Words

 

Cycles

 

¿¹Á¦

 RLF REG1,0
¸í·É ¼öÇàÀü
REG1 = 1110 0110
C = 0
¸í·É ¼öÇàÈÄ
REG1 = 1110 0110
W = 1100 1100
C = 1





RRF Rotate Right f through Carry

¼­½Ä

 

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 

¿µÇâ

 C

±â°è¾î

 0011

00df 

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 RRF REG1,0
¸í·É ¼öÇàÀü
REG1 = 1110 0110
C = 0
¸í·É ¼öÇàÈÄ
REG1 = 1110 0110
W = 0111 0011
C = 0
C register 'f'
C register 'f'





SLEEP Enter SLEEP Mode

¼­½Ä

 [ label ] SLEEP

¿ÀÆÛ·£µå

  None

µ¿ÀÛ

  00h ?WDT;

¿µÇâ

 TO, PD

±â°è¾î

 0000

0000

0001 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 SLEEP






SUBWF Subtract W from f

¼­½Ä

 [ label ] SUBWF f,d

¿ÀÆÛ·£µå

 (f) ?(W) ?(dest)

µ¿ÀÛ

 

¿µÇâ

 C, DC, Z

±â°è¾î

 0000

 10df

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 ¿¹Á¦ 1: SUBWF REG1, 1
¸í·É ¼öÇàÀü
REG1 = 3
W = 2
C = ?
¸í·É ¼öÇàÈÄ
REG1 = 1
W = 2
C = 1 ; result is positive
¿¹Á¦ 2:
¸í·É ¼öÇàÀü
REG1 = 2
W = 2
C = ?
¸í·É ¼öÇàÈÄ
REG1 = 0
W = 2
C = 1 ; result is zero
¿¹Á¦ 3:
¸í·É ¼öÇàÀü
REG1 = 1
W = 2
C = ?
¸í·É ¼öÇàÈÄ
REG1 = FF
W = 2
C = 0 ; result is negative






SWAPF Swap Nibbles in f

¼­½Ä

 

¿ÀÆÛ·£µå

 

µ¿ÀÛ

 (f<3:0>) ?(dest<7:4>)

¿µÇâ

 None

±â°è¾î

 0011

10df 

fff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 SWAPF REG1, 0
¸í·É ¼öÇàÀü
REG1 = 0xA5
¸í·É ¼öÇàÈÄ
REG1 = 0xA5
W = 0X5A





TRIS Load TRIS Register

¼­½Ä

  [ label ] TRIS f

¿ÀÆÛ·£µå

  f = 5, 6 or 7

µ¿ÀÛ

  (W) ?TRIS register f

¿µÇâ

 None

±â°è¾î

 0000

0000 

0ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

 TRIS PORTA
¸í·É ¼öÇàÀü

W = 0XA5
¸í·É ¼öÇàÈÄ
TRISA = 0XA5





XORLW Exclusive OR literal with W

¼­½Ä

[ label ] XORLW k

¿ÀÆÛ·£µå

 

µ¿ÀÛ

  (W) .XOR. k ?(W)

¿µÇâ

 Z

±â°è¾î

 1111

kkkk 

kkkk 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

  XORLW 0xAF
¸í·É ¼öÇàÀü
W = 0xB5
¸í·É ¼öÇàÈÄ
W = 0x1A





XORWF Exclusive OR W with f

¼­½Ä

[ label ] XORWF f,d

¿ÀÆÛ·£µå

 (W) .XOR. (f) ?(dest)

µ¿ÀÛ

 

¿µÇâ

 

±â°è¾î

 0001

10df 

ffff 

¼³¸í

 

Words

 1

Cycles

 1

¿¹Á¦

  XORWF REG,1
¸í·É ¼öÇàÀü
REG = 0xAF
W = 0xB5
¸í·É ¼öÇàÈÄ
REG = 0x1A
W = 0xB5