Microcontroladores
M.Sc. César Augusto Peña C.
Profesor de planta – Ingeniería mecatrónica Universidad de Pamplona
INSTRUCCIÓN ADDLW k
W+k
Ejm:
W
W =1
0 0 0 0 0 0 0 1
ADDLW .7
W = 1 +7 = 8
0 0 0 0 1 0 0 0
INSTRUCCIÓN ADDWF f,d
W+f
Ejm:
d
W=1
0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1
ADDWF REG1,1
REG1 = 5
REG1 = 1 + 5 = 6
0 0 0 0 0 1 1 0
INSTRUCCIÓN ANDLWk
W AND k
Ejm:
W
W =5
0 0 0 0 0 1 0 1
ANDLW b’00000111’
W = 5 AND 7 = 5
0 0 0 0 0 1 0 1
INSTRUCCIÓN ANDWF f,d
W AND f
Ejm:
d
W=3
0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1
ANDWF REG1,0
REG1 = 5
W = 3 AND 5 = 1
0 0 0 0 0 0 0 1
INSTRUCCIÓN CLRW
0
Ejm:
W
W =171
1 0 1 0 1 0 1 1
CLRW
W=0
0 0 0 0 0 0 0 0
INSTRUCCIÓN CLRF f
0
Ejm:
f
REG1=170
1 0 1 0 1 0 1 0
CLRF REG1
REG1 = 0
0 0 0 0 0 0 0 0
INSTRUCCIÓN COMF f,d
com(f)
Ejm:
d
REG1 =240
1 1 1 1 0 0 0 0
COMF REG1,0
W = 15
0 0 0 0 1 1 1 1
INSTRUCCIÓN DECF f,d
f-1
Ejm:
d
REG1 =8
0 0 0 0 1 0 0 0
DECF REG1,1
REG1 = 7
0 0 0 0 0 1 1 1
INSTRUCCIÓN INCF f,d
f+1
Ejm:
d
REG1 =15
0 0 0 0 1 1 1 1
INCF REG1,1
REG1 = 160 0 0 1 0 0 0 0
INSTRUCCIÓN IORLW k
W OR k
Ejm:
W
W =9
0 0 0 0 1 0 0 1
IORLW b’00000111’
W = 9 OR 7 = 15
0 0 0 0 1 1 1 1
INSTRUCCIÓN IORWF f,d
W OR f
Ejm: REG1 =6 W =9
d
0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1
IORWF REG1,0
REG1 =6
0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1
W = 6 OR 9 = 15
INSTRUCCIÓN NOP
Ejm:
NOP
No hace nada Se utiliza para crear retarnos muycortos
INSTRUCCIÓN RLF f,d
C REG1
0
0 1 0 0 1 1 1 1
RLF C
REG1,1 REG1
0
1 0 0 1 1 1 1 0
INSTRUCCIÓN RLF f,d
C REG1
0
1 0 0 1 1 1 1 0
RLF C
REG1,1 REG1
1
0 0 1 1 1 1 0 0
INSTRUCCIÓN RLF f,d
C REG1
1
0 0 1 1 1 1 0 0
RLF C
REG1,1 REG1
0
0 1 1 1 1 0 0 1
INSTRUCCIÓN RRF f,d
C REG1
1
0 0 1 1 1 1 0 0
RRF C
REG1,1 REG10
1 0 0 1 1 1 1 0
INSTRUCCIÓN SUBLW k
k-W
EJEMPLO 1:
W
W=5
0 0 0 0 0 1 0 1
SUBLW .7 C
W=7-5=2
0 0 0 0 0 0 1 0
1
POSITIVO
INSTRUCCIÓN SUBLW k
k-W
EJEMPLO 2:
W
W = 15
0 0 0 0 1 1 1 1
SUBLW .15 C
W = 15 - 15 = 0
0 0 0 0 0 0 0 0
1
CERO
INSTRUCCIÓN SUBLW k
k-W
EJEMPLO 3:
W
W=4
0 0 0 0 0 1 0 0
SUBLW .3 C
W = 3 - 4 = -1
11 1 1 1 1 1 1
0
NEGATIVO
INSTRUCCIÓN SUBWF f,d
f-W
EJEMPLO 1:
W
REG1 = 6 W=1
0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1
SUBWF REG1,1 C
REG1 = 6 - 1 = 5
0 0 0 0 0 1 0 1
1
POSITIVO
INSTRUCCIÓN SUBWF f,d
f-W
EJEMPLO 1:
W
REG1 = 7 W=7
0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1
SUBWF REG1,1 C
W=7-7=0
0 0 0 0 0 0 0 0
1
CERO
INSTRUCCIÓN SUBWF f,d
f-W
EJEMPLO1:
W
REG1 = 10 W = 12
0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0
SUBWF REG1,1 C
REG1 = 10 - 12 = -2
1 1 1 1 1 1 1 0
0
NEGATIVO
INSTRUCCIÓN SWAPF f,d
f
Ejm:
d d
f
REG1
0 0 0 0 1 0 0 1
SWAPF REG1,0
W
1 0 0 1 0 0 0 0
INSTRUCCIÓN XORLW k
W XOR k
Ejm:
W
W =9
0 0 0 0 1 0 0 1
XORLW b’00000111’
W = 9 XOR 7 = 14
0 0 0 0 1 1 1 0
INSTRUCCIÓNXORWF f,d
W XOR f
Ejm:
d
REG1 = 15
0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 0
XORWF REG1,0
W=6
W = 15 XOR 6 = 9
0 0 0 0 1 0 0 1
RUTINAS USUALES
• Poner a CERO varios bits de W sin alterar el resto. Ejm: Se desea poner a cero los bits 3, 4 y 5 del registro W sin alterar los demás
W
1 0 1 0 1 0 0 1
ANDLW B’11000111’
W
1 0 0 0 0 0 0 1
RUTINAS USUALES
• Poner a UNO variosbits de W sin alterar el resto. Ejm: Se desea poner a uno los bits 1,2,3 y 4 del registro W sin alterar los demás
W
1 0 1 0 1 0 0 1
IORLW B’00011110’
W
1 0 1 1 1 1 1 1
RUTINAS USUALES
• Detectar si dos registros son iguales y en tal caso llama una subrutina Ejm: Si REG1 = REG2 llamar la subrutina IGUAL
MOVF REG1 = W REG2
REG1,0
;REG 1
W
10101001 10101001
REG2,0...
Regístrate para leer el documento completo.