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