domingo, 19 de marzo de 2017

Análisis y diseño de programas en ensamblador para PIC ( PARTE 6 )


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

Microcontroladores PIC – Curso de Programación en MikroC (Parte 6 )

Microcontroladores PIC – Curso de Programación en MikroC Bienvenido nuevamente a los tutoriales de Artes Electrónicas Pachani , con...