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 4)
Finalizando esta serie de Operaciones Basicas. Una vez conociendo las capacidades de las instrucciones de los
Saltos, podemos trabajar con subrutinas que hará que nuestros
programas sean mas flexibles en cuanto a la programación, un único
programa principal y luego solo realizar llamadas a las Subrutinas
que vendrán a ser como módulos que facilitaran nuestra aplicación
y por ende un ahorro de espacio en nuestro microcontrolador.
SUBRUTINAS E
INTERRUPCIONES
Que entendemos por subrutina entonces, diremos, son pequeñas
porciones del programa principal, que el programa principal utiliza
para realizar completamente la aplicación. Para tener una idea más
clara del concepto de subrutinas, observemos este ejemplo (Figura
3.11): supongamos que tenemos una misma tarea repetida varias veces
en el programa, de tal manera que lo que tenemos es una repetición
del código de esta tarea en diferentes partes del programa. Esto
hace que este programa sea ineficiente debido a que consume mucha
memoria de programa.
![]() |
Figura 3.11.- Programa con y sin subrutina
|
Entonces si observamos la sección del programa, sin subrutinas (a la izquierda de la figura) y otro con subrutinas (a la derecha de la figura). Aparece la TAREA_X 3 veces, lo que podría evitarse agrupándola en una sola subrutina, que podemos llamar desde el programa principal a donde se necesite, como se ve a la derecha de la figura.
La TAREA _X, en el programa sin subrutinas (izquierda en la figura)
contiene 1Fh (o 16) instrucciones, en el programa sin subrutinas, lo
que consume 3 × 16 = 48 instrucciones. El mismo programa con
subrutina (a la derecha de la figura) tiene la subrutina TAREA_X una
sola vez y 3 llamados a esta subrutina con las instrucciones
call
TAREA_X
más la instrucción RETURN, al final de la subrutina (que
causa el retorno), esto nos da un total 16 + 3 + 1 = 20
instrucciones.
Esto nos da una diferencia de 48 instrucciones en el primer caso sin
subrutinas, frente a 20 instrucciones en el segundo caso con
subrutinas. Esto sólo nos da una idea del ahorro en instrucciones o
memoria de programa; también nos facilita el trabajar en forma de
módulos de programa más pequeños. La instrucción es la siguiente:
a).- call
k (call k)
Llama la subrutina que está en la dirección donde apunta la label
‘k’.
Operación: k - > (PC)
No afecta las banderas:
Como primer ejemplo veamos la estructura de una subrutina paso a paso :
Nombre de la subrutina. subrutina También
llamado label o etiqueta, que finalmente es una dirección de la
memoria de programa.
Instrucciones. Instrucciones Instrucciones o cuerpo de la
subrutina.
Retorno. Instrucción de retorno, return o retlw k.
En la instrucción: (PC) = posición 0×01A8, Nivel Stack 1, Stack
= 01A9
Después de la instrucción: (PC) = posición 0× 00E5 = Delay
b).- retlw
k (retlw k)
Retorne al último llamado a la subrutina (Call), guarde ‘k’ en
registro (W).
Operación k - > (W), Stack - > (PC), Nivel Stack-1
No afecta las banderas.
A continuación se realiza el proceso total de traer un dato de la
tabla código del display de 7 segmentos:
c).- return
(retorno)
Retorne al último llamado a subrutina (Call).
Operación Stack - > (PC), Nivel Stack- 1
No afecta las banderas.
Seguidamente se realiza el proceso total de llamado y retorno de la
subrutina BIN_BCD:
c).- retfie
(retfie)
Retorne al último llamado de interrupción.
Operación S tack - > (PC), Nivel Stack-1
No afecta las banderas.
En seguida se realiza el proceso total de llamado y retorno de
interrupción:
Estas son las subrutinas mas utilizadas para programación por lo cual conocer y recordar cada una de ellas es fundamental para el diseño y construcción de los programas, ahora veamos otra serie de rutinas son utilizadas también.
INSTRUCCIONES
ESPECIALES
Estas instrucciones no tienen operando, por lo cual su aplicación es
inmediata y no necesita mas detalle.
a).- nop
No haga operación, gasta un ciclo.
Operación nop
No afecta las banderas:
b).- clrwdt
Aclare WDT, comienza de nuevo el Time WDT.
Operación 0 -> WDT
No afecta las banderas:
d).- sleep
(sleep)
Entra a bajo consumo, detiene Oscilador, PC detenido.
Operación: -PD=0, PC detenido, Oscilador detenido no afecta las
banderas.
A continuación se realiza el proceso total de sleep (dormir) y
wake-up (despertar):
Bien compañeros acá concluye esta serie de tutoriales para la parte
de instrucciones para la familia 16F y 18F, ya que el modo de
direccionamiento de la familia 18F agrega ademas del puerto otras
funciones pero una vez empecemos a programar veremos que solo es
designación y las instrucciones que hemos aprendido siguen siendo
validas , en el siguiente tutorial vamos a presentar los ejercicios ya de
programación en ensamblador y con ello iremos concretando nuestros
conocimientos. Bien los espero en el siguiente tutorial.
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