Odicea

Solo disponible en BuenasTareas
  • Páginas : 8 (1863 palabras )
  • Descarga(s) : 0
  • Publicado : 10 de mayo de 2011
Leer documento completo
Vista previa del texto
CONJUNTO DE INSTRUCCIONES DEL PIC16F877

El microcontrolador PIC16F877 dispone de un procesador RISC (Computador de Juego de Instrucciones Reducido). Esto quiere decir que con un total de 35 instrucciones usted podrá realizar todos sus programas además son muy fáciles de aprender. Las instrucciones tienen algunas letras que van relacionadas y que tienen cierta interpretación. Por ejemplo laletra "W" es el registro más importante que tiene el microcontrolador y es denominado ACUMULADOR o REGISTRO DE TRABAJO, todas las operaciones pasan a través de el.

A continuación se realiza una breve descripción de las 35 instrucciones las cuales se dividen en 4 grupos:

1. INSTRUCCIONES QUE TRABAJAN ENTRE DOS REGISTROS

Estas instrucciones tienen una característica común el argumento de lainstrucción es F,d F define el registro con el cual vamos a trabajar en este instrucción, puede ser un registro de propósito general o un registro especial. La letra "d" en la instrucción, es el lugar donde se desea guardar el resultado de la operación una vez finalizada la instrucción, el resultado podrá ser almacenado directamente en el acumulador "W" si d = 0 = W, o en el registro "F" si d = 1 =F

1 ADDWF F,d W + F Esta instrucción suma el contenido del registro de trabajo (W) con el contenido de F el cual es un registro cualquiera con un determinado valor.

Por ejemplo:
W = 15
CONT = 7
En este caso F será el registro CONT. (Registro de propósito general) entonces tendríamos:
ADDWF CONT, 1

Al momento que ejecutamos esta instrucción los registros quedarían así:
W = 15CONT = 22

Caso contrario si escribiéramos la instrucción de la siguiente manera:
ADDWF CONT, W

En este momento los registros quedarían así:
W = 22
CONT = 7

2 ANDWF F,d Operación AND Esta instrucción realiza una operación lógica "AND" entre el registro "W" y el registro "F".

Para nuestro ejemplo vamos a trabajar con un registro llamado REGIS (Registro de propósito general)
Porejemplo:
Supongamos que W = 10101111 y REGIS = 00110100 entonces la expresión quedaría:

ANDWF REGIS,F

1 0 1 0 1 1 1 1
0 0 1 1 0 1 0 0
0 0 1 0 0 1 0 0
REGISTRO W
REGISTRO REGIS
RESULTADO

Al momento que ejecutamos esta instrucción los registros quedarían así:
W = 10101111
REGIS = 00100100

Hay que tener en cuenta que todos los registros son de 8 bits y que esta operaciónse realiza bit a bit, es decir, el bit 7 de "W" con el Bit 7 de REGIS y así sucesivamente

3 COMF F,d Complemento de F Esta instrucción complementa el registro "F"

Tenemos un registro denominado VAR1 = 00111011; cuando aplicamos la instrucción tenemos que los “0” se cambian por “1” y los “1” se cambian por “0” obteniéndose un registro invertido. Si aplicamos la instrucción tenemos:

COMFVAR1, W

Los registros quedan de la siguiente manera:
VAR1 = 00111011
W = 11000100

4 DECF F,d Decremento del registro F Esta instrucción decrementa en una unidad un
registro F

Por ejemplo: si nuestro registro REGIS = 14 y aplicamos la instrucción

DECF REGIS,F

El registro queda de la siguiente manera:

REGIS = 13
5 DECFSZ F,d Decremento F y salta si es cero Estainstrucción decrementa el registro "F" y si este llega a “0” entonces salta una instrucción

Veamos el siguiente ejemplo supongamos que el registro W = 3 Y CONT = 10 y tenemos el siguiente código de programa:

DECFSZ VAR1,F
ADDWF CONT,F
DECF CONT,F

Primer caso: VAR1 >1 si es mayor que 1 esto indica que la primer instrucción decrementa en 1 a VAR1 pero este no llega a cero por lotanto no salta y ejecuta la instrucción de adición y posteriormente la de decremento dando como resultado CONT=12.

Segundo caso: VAR1 = 1 si es igual a 1 esto indica que en la primer instrucción VAR1 llega a cero por lo tanto salta una instrucción llegando a la función de decremento obteniendo como resultado CONT = 9

6 INCF F,d Incrementa el registro "F" Esta instrucción incrementa en una...
tracking img