Las instrucciones de la arquitectura Mid Range PIC, albergan las siguientes características:
- Las instrucciones son altamente ortogonales, es decir, casi todas las instrucciones puden usar cualquier operando.
- 35 instrucciones de fácil uso.
- Todas las instrucciones tienen la misma longitud, en esta arquitectura es de 14-bits, y todos los datos son de 8 o 11 bits.
- Para un reloj principal de 4 MHz, el tiempo de ejecución de la mayoría de las instrucciones es de 1 us, excepto las instrucciones de salto, que es de 2 us.
Operaciones de tamaño byte.
Son las denominadas, en anglosajón, Byte-Oriented Operations, consisten en las instrucciones que manejan registros y el lugar de almacenar la operación correspondiente, en un literal, denominado 'f', o en el registro de trabajo, llamado 'w'.
El set de instrucciones es el que se muestra en la siguiente tabla.
Operador | Descripción | Ciclos de Reloj | Operador 14-bit | Flags Afectados |
---|---|---|---|---|
addwf....f, d | W + f -> (d) | 1 | 00 0111 dfff ffff | C, DC, Z |
andwf....f, d | W AND f -> (d) | 1 | 00 0101 dfff ffff | Z |
clrf..........f | f = 0 | 1 | 00 0001 lfff ffff | Z |
clrw........- | W = 0 | 1 | 00 0001 0xxx xxxx | Z |
comf.......f,d | NOT f -> (d) | 1 | 00 1001 dfff ffff | Z |
decf........f, d | f -- -> (d) | 1 | 00 0011 dfff ffff | Z |
decfsz....f, d | f-- , salta si f = 0 -> (d) | 1 (2) | 00 1011 dfff ffff | Ninguno |
incf.........f, d | f++ -> (d) | 1 | 00 1010 dfff ffff | Z |
incfsz.....f, d | f++ , salta si f = 0->(d) | 1 (2) | 00 1111 dfff ffff | Ninguno |
iorwf......f, d | W OR f -> (d) | 1 | 00 0100 dfff ffff | Z |
movf......f, d | Mover f -> (d) | 1 | 00 1000 dfff ffff | Z |
movwf....f | W -> (f) | 1 | 00 0000 lfff ffff | Ninguno |
nop..........- | Sin operación | 1 | 00 0000 0xx0 0000 | Ninguno |
rlf............f, d | Rotar Izquierda f -> (d) | 1 | 00 1101 dfff ffff | C |
rrf...........f, d | Rotar Derecha f -> (d) | 1 | 00 1100 dfff ffff | C |
subwf....f, d | W - f -> (d) | 1 | 00 0010 dfff ffff | C, DC, Z |
swapf....f, d | Msb -> Lsb -> (d) | 1 | 00 1110 dfff ffff | Ninguno |
xorwf....f, d | W XOR f -> (d) | 1 | 00 0110 dfff ffff | Z |
Operaciones de tamaño bit.
Son las denominadas, en anglosajón, Bit-Oriented File Register Operations, consisten en las instrucciones tamaño bit de los registros y el lugar de almacenar la operación correspondiente, en un literal, denominado 'f', o en una dirección de memoria correspondoente al bit del registro, denominado 'b'.
El set de instrucciones es el que se muestra en la siguiente tabla.
Operador | Descripción | Ciclos de Reloj | Operador 14-bit | Flags Afectados |
---|---|---|---|---|
bcf...........f, b | f = 0 -> (b) | 1 | 01 00bb bfff ffff | Ninguno |
bsf...........f, b | f = 1 -> (b) | 1 | 01 01bb bfff ffff | Ninguno |
btfsc.......f, b | Salta si f = 0 | 1 (2) | 01 10bb bfff ffff | Ninguno |
btfss.......f, b | Salta si f = 1 | 1 (2) | 01 11bb bfff ffff | Ninguno |
Operaciones de de control y con literales.
Son las denominadas, en anglosajón, Literal And Control Operations, consisten en las instrucciones que manejan literales, constantes o etiquetas, denominadas 'k'.
El set de instrucciones es el que se muestra en la siguiente tabla.
Operador | Descripción | Ciclos de Reloj | Operador 14-bit | Flags Afectados |
---|---|---|---|---|
andlw........k | k AND W -> (W) | 1 | 11 1001 kkkk kkkk | Z |
addlw......k | k + W -> (W) | 1 | 11 111x kkkk kkkk | C, DC, Z |
call.............k | LLamar subrutina | 2 | 10 0kkk kkkk kkkk | Ninguno |
clrwdt.......k | Limipiar Wachtdog | 1 | 00 0000 0110 0100 | #TO, #PD |
goto............k | Ir a k | 2 | 10 1kkk kkkk kkkk | Ninguno |
iorlw..........k | k OR W | 1 | 11 1000 kkkk kkkk | Z |
movlw.......k | k -> (W) | 1 | 11 00xx kkkk kkkk | Ninguno |
retfie........- | Fin de interrupción | 2 | 00 0000 0000 1001 | Ninguno |
retlw.........k | Fin de subrutina, k -> (W) | 2 | 11 01xx kkkk kkkk | Ninguno |
RETURN | Fin de subrutina | 2 | 00 0000 0000 1000 | Ninguno |
SLEEP.......- | Entrar en Standby | 1 | 00 0000 0110 0011 | #TO, #PD |
sublw......k | k - W -> (W) | 1 | 11 110x kkkk kkkk | C, DC, Z |
xorlw........k | k XOR W -> (W) | 1 | 11 1010 kkkk kkkk | Z |
Nota: El carácter # significa señal negada.
0 comentarios:
Publicar un comentario