instrucciones para programar un microcontrolador
DESCRIPTION
Ejemplos que ilustran el uso de las instrucciones para programar un picTRANSCRIPT
![Page 1: Instrucciones para programar un microcontrolador](https://reader035.vdocumento.com/reader035/viewer/2022072114/5695d5131a28ab9b02a3ef5d/html5/thumbnails/1.jpg)
Lituma Perero Freddy, Tarea 2, Microcontroladores.
Tema 2: Instrucciones del microcontrolador PIC
Parte1
Comparación de PIC16F887 datasheet con los datos analizados en
clases.
Es importante recalcar que el datasheet del PIC es un documento que a más de indicarnos el
funcionamiento del microcontrolador presenta otras características importantes acerca del
componente tales como características especiales, periféricas y de baja energía las cuales no se tratan
con profundidad en clases, en fin el datasheet permite conocer con profundidad al PIC ya que es
información proporcionada por el fabricante.
Parte2
Instrucciones del microcontrolador
1. ADDWF:
Esta instrucción permite sumar el contenido de un registro f a los datos contenidos en el registro W, finalmente el valor del bit d nos permite indicar al PIC donde se guardará el resultado, es decir si el valor de d tiene el valor de 0 el resultado se guarda en el registro W, pero si d es 1, se guarda en el registro f. Sintaxis: ADDWF f, d Ejemplo:
ADDWF 15h,0 Antes de ejecutar la instrucción registro W = 17h valor del registro 15h=0c2h Después de ejecutar la instrucción registro W = 0D9h
2. ANDLW:
Permite realizar la operación lógica AND entre un valor constante K y el valor del registro
W, cabe indicar que la operación es realizada bit a bit, finalmente el resultado de aplicar AND
se almacenará en el registro W.
Sintaxis: ANDLW k
![Page 2: Instrucciones para programar un microcontrolador](https://reader035.vdocumento.com/reader035/viewer/2022072114/5695d5131a28ab9b02a3ef5d/html5/thumbnails/2.jpg)
Ejemplo:
ANDLW b’11100000’ Antes de ejecutar la instrucción registro W = b’10110001’ Después de ejecutar la instrucción registro W = b’10100000’
3. BTFSC:
Evalúa el valor bit b del registro f, si el valor de este bit corresponde a cero el programa
inmediatamente se salta una línea y entonces ejecuta la instrucción en la línea siguiente es
decir en la línea posterior a la que se saltó, por el contrario si el valor del bit b es uno el
programa ejecutará la instrucción siguiente, es decir no hay saltos.
Sintaxis: BTFSC f,b Ejemplo:
line 1 BTFSC regis,0 Line 2 GOTO inicio Line 3 .......... Después de que se ejecuta la instrucción: Si el valor del bit b del registro regis = 0, entonces el programa pasa a la línea 3 y ejecuta lo que se encuentre ahí. Si el valor del bit 0 del registro regis = 1, entonces el programa inmediatamente ejecuta la instrucción de la línea 2.
4. CLRWDT:
Esta instrucción permite reiniciar es decir poner en cero el valor actual del temporizador
interno del microcontrolador Watchdog Timer (perro guardían), para de esta forma evitar
que el PIC se resetee.
Sintaxis: CLRWDT
Ejemplo:
CLRWDT Antes de ejecutar la instrucción: Contador WDT = 11 Después de ejecutar la instrucción: Contador WDT = 00
![Page 3: Instrucciones para programar un microcontrolador](https://reader035.vdocumento.com/reader035/viewer/2022072114/5695d5131a28ab9b02a3ef5d/html5/thumbnails/3.jpg)
5. MOVF:
Esta instrucción permite mover el valor contenido en el registro “f” hacia el registro W, es
decir permite al microcontrolador actualizar el valor del registro W.
Sintaxis: MOVF f
Ejemplo:
MOVF regis,0 Antes de ejecutar la instrucción valor del registro W = e’14’, regis = d’31’ Después de ejecutar la instrucción registro W = d’31’
6. RLF:
Esta instrucción permite rotar el valor contenido del registro “f” un bit hacia la izquierda, usando para el efecto el valor del bit carry (bit de acarreo), el valor del bit d indicará al PIC en que registro se guardará el resultado, es decir si el valor de d tiene el valor de 0 el resultado se guarda en el registro W, pero si d es 1, se guarda en el registro f. Sintaxis: RLF f,d
Ejemplo:
RLF regis,0 Antes de ejecutar la instrucción valor del bit carry = 0, regis = 1110 0110, W=? Después de ejecutar la instrucción valor del bit carry = 1, regis = 1110 0110 W = 11001100
7. INCF:
Esta instrucción permite realizar un incremento de uno el contenido del registro “f”, finalmente el resultado se almacenará en el registro escogido de acuerdo al valor indicado en bit d. es decir si el valor de d tiene el valor de 0 el resultado se guarda en el registro W, pero si d es 1, se guarda en el registro f. Sintaxis: INCF f,d
Ejemplo:
INCF regis,1 Antes de ejecutar la instrucción regis = d’21’ Después de ejecutar la instrucción regis = d’22’
![Page 4: Instrucciones para programar un microcontrolador](https://reader035.vdocumento.com/reader035/viewer/2022072114/5695d5131a28ab9b02a3ef5d/html5/thumbnails/4.jpg)
8. IORLW:
Esta instrucción permite realizar la operación lógica OR entre el valor contenido del registro
W y un valor constante k, finalmente el resultado se almacenará en el registro W.
Sintaxis: IORLW k
Ejemplo:
IORLW b’00101101’ Antes de ejecutar la instrucción registro W = b’00101101’ Después de ejecutar la instrucción registro W = b’00101101’
9. CALL:
Esta instrucción permite realizar una llamada a una subrutina que se encuentra localizada
en la posición de memoria identificada por el valor de k.
Sintaxis: CALL k
Ejemplo:
actual CALL rutina Antes de ejecutar la instrucción el contador del programa se encuentra en actual Después de ejecutar la instrucción el contador de programa está en rutina En la pila de memoria se guardará la dirección “actual” para retornar
10. COMF:
Esta instrucción permite complementar el contenido del registro “f”; esto es modificar el registro cambiando unos por ceros y ceros por unos. Finalmente el resultado se almacenará en el registro escogido de acuerdo al valor indicado en el bit d. es decir si el valor de d tiene el
valor de 0 el resultado se guarda en el registro W, pero si d es 1, se guarda en el registro f.
Sintaxis: COMF f,d
Ejemplo:
COMF regis,0 Antes de ejecutar la instrucción regis = b’10101101’, W = 00000011 Después de la instrucción regis = b’10101101’, W = b’01010010’