Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I.- INTRODUCCIÓN
• La familia de la Gama Media de PIC´s cuenta
con 35 instrucciones , cada una de ellas de 14
bits.
• La gran mayoría de éstas instrucciones se
ejecutan en un ciclo de instrucción, excepto
aquellas que nos generan saltos en la memoria
del programa.
Juan Linares
CCIESAM - UNI 4
II.-SINTAXIS
• Label L
Juan Linares
CCIESAM - UNI 5
Juan Linares
CCIESAM - UNI 6
BCF
• Sintaxis: bcf f,b
• Operación: f, b 0
Escribe el valor de cero al bit “b” del registro “f”
• Opcode: 13 10 9 7 6 0
0 1 0 0 b f
• Ejemplo:
Juan Linares
CCIESAM - UNI 7
BSF
• Sintaxis: bsf f,b
• Operación: f, b 1
Escribe el valor de uno al bit “b” del registro “f”
• Opcode: 13 10 9 7 6 0
0 1 0 1 b f
• Ejemplo:
Juan Linares
CCIESAM - UNI 8
BTFSC
• Sintaxis:
btfsc f,b
Juan Linares
CCIESAM - UNI 9
BTFSS
• Sintaxis: btfss f,b
Juan Linares
CCIESAM - UNI 10
Juan Linares
CCIESAM - UNI 11
MOVLW
• Sintaxis: movlw k
• Operación: w k
• Opcode:
13 8 7 0
1 1 0 0 x x k
• Ejemplo:
movlw .3 ; W <- .3
Juan Linares
CCIESAM - UNI 12
SUBLW
• Sintaxis: sublw k
• Operación: w k-w
• Opcode:
13 8 7 0
1 1 1 1 0 x k
• Ejemplo:
movlw 0x25 ; W <- 0x25
sublw 0x26 ; W <- 0x26 – W
Juan Linares
CCIESAM - UNI 13
ADDLW
• Sintaxis: addlw k
• Operación: w w+k
• Opcode:
13 8 7 0
1 1 1 1 1 x k
• Ejemplo:
ANDLW
• Sintaxis: andlw k
• Operación: w k (and) w
• Opcode:
13 8 7 0
1 1 1 0 0 1 k
• Ejemplo:
movlw b’10101010’ ; w b’10101010’
andlw b’11010011’ ; w b’10000010’
Juan Linares
CCIESAM - UNI 15
IORLW
• Sintaxis: iorlw k
• Operación: w k (ior) w
• Opcode:
13 8 7 0
1 1 1 0 0 0 k
• Ejemplo:
movlw b’10101010’ ; w b’10101010’
iorlw b’11010011’ ; w b’11111011’
Juan Linares
CCIESAM - UNI 16
XORLW
• Sintaxis: xorlw k
• Operación: w k (xor) w
• Opcode:
13 8 7 0
1 1 1 0 1 0 k
• Ejemplo:
movlw b’10101010’ ; w b’10101010’
xorlw b’11010011’ ; w b’01111001’
Juan Linares
CCIESAM - UNI 17
Juan Linares
CCIESAM - UNI 18
CLRF
• Sintaxis: clrf f
• Operación: f 0
• Opcode:
13 8 7 6 0
0 0 0 0 0 1 1 f
• Ejemplo:
clrf TMR0 ; TMR0 <- 0
Juan Linares
CCIESAM - UNI 19
CLRW
• Sintaxis: clrw
• Operación: w0
• Opcode:
13 8 7 6 0
0 0 0 0 0 1 0 xxxxxxx
• Ejemplo:
clrf W ; W <- 0
Juan Linares
CCIESAM - UNI 20
MOVWF
• Sintaxis: movwf f
• Operación: f w
• Opcode:
13 8 7 6 0
0 0 0 0 0 0 1 f
• Ejemplo:
movlw .2 ; w <- .2
movwf PORTB ; PORTB <- W
Juan Linares
CCIESAM - UNI 21
MOVF
• Sintaxis: movf f,d
• Operación: 0, w f
d=
1, f f (actualizar)
• Opcode:
13 8 7 6 0
0 0 1 0 0 0 d f
• Ejemplo:
Juan Linares
CCIESAM - UNI 22
SUBWF
• Sintaxis: subwf f,d
• Operación: 0, w f - w
d=
1, f f - w
• Opcode:
13 8 7 6 0
0 0 0 0 1 0 d f
• Ejemplo:
movlw .27 ; W <- 27
movwf PORTB ; PORTB <- W
movlw .21 ; W <- 21
subwf PORTB,W ; W <- 27–21,(w <- 6)
Juan Linares
CCIESAM - UNI 23
ADDWF
• Sintaxis: addwf f,d
• Operación: 0, w f + w
d=
1, f f + w
• Opcode:
13 8 7 6 0
0 0 0 1 1 1 d f
• Ejemplo:
movlw .3 ; W <- 3
movwf PORTB ; PORTB <- W
movlw .15 ; W <- 15
addwf PORTB,F ; PORTB <- 3+15
Juan Linares
CCIESAM - UNI 24
ANDWF
• Sintaxis: andwf f,d
• Operación: 0, w f (and) w
d=
1, f f (and) w
• Opcode:
13 8 7 6 0
0 0 0 1 0 1 d f
• Ejemplo:
movlw b’11001100’ ; W <- b’11001100’
movwf PORTB ; PORTB <- W
movlw b’10110001’ ; W <- b’10110001’
andwf PORTB,F ; PORTB <- B’10000000’
Juan Linares
CCIESAM - UNI 25
IORWF
• Sintaxis: iorwf f,d
• Operación: 0, w f (ior) w
d=
1, f f (ior) w
• Opcode:
13 8 7 6 0
0 0 0 1 0 0 d f
• Ejemplo:
movlw b’11001100’ ; W <- b’11001100’
movwf PORTB ; PORTB <- W
movlw b’10110001’ ; W <- b’10110001’
iorwf PORTB,F ; PORTB <- B’11111101’
Juan Linares
CCIESAM - UNI 26
XORWF
• Sintaxis: xorwf f,d
• Operación: 0, w f (xor) w
d=
1, f f (xor) w
• Opcode:
13 8 7 6 0
0 0 0 1 1 0 d f
• Ejemplo:
movlw b’11001100’ ; W <- b’11001100’
movwf PORTB ; PORTB <- W
movlw b’10110001’ ; W <- b’10110001’
xorwf PORTB,W ; W <- B’01111101’
Juan Linares
CCIESAM - UNI 27
DECF
• Sintaxis: decf f,d
• Operación: 0, w f - 1
d=
1, f f - 1
• Opcode:
13 8 7 6 0
0 0 0 0 1 1 d f
• Ejemplo:
movlw .156 ; W <- 156
movwf PORTB ; PORTB <- W
decf PORTB,F ; PORTB <- 156-1
Juan Linares
CCIESAM - UNI 28
INCF
• Sintaxis: incf f,d
• Operación: 0, w f+1
d=
1, f f+1
• Opcode:
13 8 7 6 0
0 0 1 0 1 0 d f
• Ejemplo:
movlw .27 ; W <- 27
movwf PORTB ; PORTB <- W
incf PORTB,W ; W <- 27+1
Juan Linares
CCIESAM - UNI 29
COMF
• Sintaxis: comf f,d
• Operación: 0, w 255 - f
d=
1, f 255 - f
• Opcode:
13 8 7 6 0
0 0 1 0 1 0 d f
• Ejemplo:
movlw .5 ; W <- 5
movwf PORTB ; PORTB <- W
comf PORTB,W ; W <- 255 - 5
Juan Linares
CCIESAM - UNI 30
SWAPF
• Sintaxis: swapf f,d
• Ejemplo:
movlw b’11000001’ ; W <- b’11000001’
movwf PORTB ; PORTB <- W
swapf PORTB,W ; W <- b’00011100’
Juan Linares
CCIESAM - UNI 31
RLF
• Sintaxis: rlf f,d
• Operación: d= 0, w
1,f
Rota a la izquierda una posición los bits del registro “f” a travez del bit carry
• Opcode: 13 8 7 6 0
0 0 1 1 0 1 d f
• Ejemplo: C
movlw b’00101110’ ; W <- b’00101110’
movwf PORTB ; PORTB <- W
rlf PORTB,W ; W <- b’01011101’
; C <- 0
Juan Linares
CCIESAM - UNI 32
RRF
• Sintaxis: rrf f,d
• Operación: d = 0, w
1,f
Rota a la derecha una posición los bits del registro “f” a travez del bit carry
• Opcode: 13 8 7 6 0
0 0 1 1 0 0 d f
• Ejemplo: C
movlw b’11000001’ ; W <- b’11000001’
movwf PORTB ; PORTB <- W
rrf PORTB,F ; PORTB <- b’01100000’
; C <- 1
Juan Linares
CCIESAM - UNI 33
DECFSZ
• Sintaxis: decfsz f,d
• Operación: 0, w f - 1
d= 1, f f - 1
Se salta una instrucción si del resultado de “f-1” es igual a cero
• Opcode: 13 8 7 6 0
0 0 1 0 1 1 d f
• Ejemplo:
movlw .1 ; W <- 1
movwf PORTB ; PORTB <- W
decfsz PORTB,W ; W <- 1-1, PORTB=1
INSTRUCCION1
Como el resultado del decremento es igual
INSTRUCCION2 a cero ejecuta la INTRUCCION2 sin
ejecutar la INTRUCCION1
Juan Linares
CCIESAM - UNI 34
INCFSZ
• Sintaxis: incfsz f,d
• Operación: 0, w f + 1
d= 1, f f + 1
Se salta una instrucción si del resultado de “f+1” es igual a cero
• Opcode: 13 8 7 6 0
0 0 1 1 1 1 d f
• Ejemplo:
movlw .250 ; W <- 250
movwf PORTB ; PORTB <- W
incfsz PORTB,W ; W <- 250+1, PORTB=250
INSTRUCCION1
Como el resultado del incremento es
INSTRUCCION2 diferente de cero ejecuta la INTRUCCION1
y luego la instrucción INTRUCCION2
Juan Linares
CCIESAM - UNI 35
Juan Linares
CCIESAM - UNI 36
Juan Linares