Hola nuevamente a
los tutoriales de Artes Electrónicas Pachani, hoy
vamos a continuar con la serie de tutoriales en la parte de
componentes PIC, este tutorial está dirigido a lectores novatos,
aficionados (hobbistas), estudiantes, que deseen implementar
programas para microcontroladores en lenguaje ensamblador (ASM), para
el desarrollo de aplicaciones.
Programando Operaciones Básicas en PIC (parte 3)
![]() |
|
Figura 6.7.- Las herramientas para programar.
|
INSTRUCCIONES DE
SALTO
Llegamos a la parte mas importante para realizar programas en función
de saltos y toma de decisiones que son la base para condiciones como
if, for, etc. Estas instrucciones permiten realizar saltos en
el programa; tomando como base que se cumplan condiciones o no, se
pueden realizar de las formas siguientes:
-
En función de un bit, según el estado (1 o 0) de un bit en un registro.
-
En función de un registro por disminución o incremento al llegar al valor 0 × 00.
-
Incondicional, ejecuta la instrucción goto k.
SALTOS EN FUNCIÓN
DE UN BIT
Para un microprocesador condiciones como números mayores e iguales
son interpretados de una manera distinta, aquí se realiza el (test)
de un bit en un registro y se verifica si es verdadera, para luego
realizar el salto (Figura 3.8).
La prueba sobre el bit puede ser: clear (0) o set (1); hay dos
instrucciones, una para cada opción “btfsc f,d ” y “btfss
f,d”.
![]() |
|
Figura 3.8.- Condicional de Salto en función de un Bit.
|
Estas operaciones dan origen a la condicional if por
ejemplo, donde se
realiza la pregunta como condición para la toma de decisiones, esto
mas adelante lo interpretaremos para las demás condiciones. Bien
esntonces empecemos con las instrucciones:
a).-
btfsc
f,b (bit
test file, skip if clear)
Revisar un Bit de un Registro y Omitir la siguiente instrucción si
el bit esta en Cero.
Esta instrucción puede actuar de dos formas:
• Si el bit (b) del registro (f) es “0”, salta la instrucción
que sigue.
Recuerde skip if clear salta si = “0”.
• Si el bit (b) del registro (f) es “1”, ejecuta la
instrucción que sigue.
Operación: Salta si b=0 en (f<b>)
No afecta las banderas:
Antes de la instrucción: (PC) = n (la
linea donde se ejecuta la instrucción)
Después de la instrucción:
Si flag<4>
= 0, (PC) = n+2 (salta Respuesta SÍ)
Si flag<4> = 1, (PC) = n+1
(Respuesta NO)
Aquí notemos que n
puede ser la linea donde se ejecute la instrucción digamos que la
linea es n=7
la n+1=8,
n+2=9 ,
dependiendo del valor del bit 4 del registro se saltara por verdad a
la linea n+2
o bien n+1.
b).-
btfss
f,b (bit test file, skip if set)
Revisar un Bit de un Registro y Omitir la siguiente instrucción si
el bit esta en Uno.
Esta instrucción puede actuar de dos formas:
• Si el bit (b) del registro (f) es “1”, salta la instrucción
que sigue.
Recuerde skip if set salta si = “1”.
• Si el bit (b) del registro (f) es “0”, ejecuta la
instrucción que sigue.
Operación: Salta si b=1 en (f<b>)
No afecta las banderas:
Antes de la instrucción: (PC) = n (la
linea donde se ejecuta la instrucción)
Después de la instrucción:
Si flag<2>
= 1, (PC) = n+2 (salta Respuesta SÍ)
Si flag<2> = 0, (PC) = n+1
(Respuesta NO)
De igual manera notemos que n
puede ser la linea donde se ejecute la instrucción digamos que la
linea es n=9
la n+1=10,
n+2=11
, dependiendo del valor del bit 2
del registro se saltara por verdad a la linea n+2
o bien n+1.
SALTOS EN FUNCIÓN
DE UN REGISTRO
Aquí tenemos otro tipo de salto con la siguiente característica
los saltos ocurren porque el registro llega al valor de cero, por
decremento o incremento del registro (Figura 3.9), con las
instrucciones “decfsz f,d” e “incfsz d,f”.
![]() |
|
Figura 3.9.- Condicional de Salto en función del Registro.
|
Como habrán notado tiene una característica muy similar a la
condicional for en el lenguaje de alto nivel, pero que
nosotros desarrollaremos en función de las capacidades de nuestro
microcontrolador, dándonos las bases para realizar estas condiciones
según nuestros algoritmos.
a).-
decfsz
f,d (decrement f, skip if zero)
Disminuye en una unidad el contenido del registro (f), almacena el
resultado según (d).
Si d = 0, se guarda en el registro (W)
Si d = 1, se guarda en el registro (f)
Operación Salta si {(f)-1 -> (d)} = 0
No afecta ninguna bandera.
Antes de la instrucción: (PC) = n (la
linea donde se ejecuta la instrucción)
Después de la instrucción:
Si contador
= 0, (PC) = n+2 (salta Respuesta SÍ)
Si contador <> 0, (PC) = n+1
(Respuesta NO)
b).-
incfsz
f,d (increment f, skip if zero)
Incrementa en una unidad el contenido del registro (f), almacena el
resultado según (d).
Si d = 0, se guarda en el registro (W)
Si d = 1, se guarda en el registro (f)
Operación Salta si {(f)+1 -> (d)} = 0
No afecta las banderas:
Antes de la instrucción: (PC) = n (la
linea donde se ejecuta la instrucción)
Después de la instrucción: Si (W) = 0, (PC) = n+2 (salta
Respuesta SÍ)
Si (W) <> 0, (PC) = n+1 (Respuesta NO)
SALTO
INCONDICIONAL
Por ultimo mas que una condición este es una salto a otra linea de
instrucciones es decir es un salto sin preguntas.
goto
k
Vaya a la dirección donde apunta la label ‘k’.
Operación k -> (PC) (la linea donde se ejecuta la instrucción)
No afecta las banderas:
Bien Compañeros espero les sea de utilidad este tema de saltos ,
para hacer mas didáctica estos tutoriales voy a presentar la parte
de ejercicios de estos temas al final en un nuevo post llamado MpLab,
donde solo habrá ejercicios. Bien hasta el próximo post,
bendiciones.
Todo el material que aquí se encuentra es de mi autoría, ademas de
una recopilación de información de Internet de recursos que se
pueden descargar como libros los cuales son usados como referencia
para los ejercicios y los ejemplos. Cualquier consulta la puedes
realizar en la parte de comentarios.
Bibliografia:
1.- Enrique Palacios , Fernando Ramiro y Lucas J. López,
Microcontrolador PIC16F84 Editorial Alfa Omega; Publicado el año
2004;[Fecha de consulta 21 de Febrero de 2017].
2.-Christian Bodignton Estava; Mikro Basic ; descargada de
WWW.CONEXIONELECTRONICA.COM;
Publicado el año 2010; [Fecha de consulta 5 de Marzo de 2017].








No hay comentarios.:
Publicar un comentario
Hola, con tu comentario puedes aportar para mejorar la calidad de mi trabajo