12
1 Programación de Microcontroladores – Parte II / TEN. Noguera Guillermo Sebastián “Nuestros primeros programas en Assembler para PICs” Con el objetivo de adquirir una metodología clara en la programación de microcontroladores, que nos permita desarrollar proyectos con ellos es que abordamos esta nueva sección de nuestro curso. A continuación podemos ver representada la secuencia básica de los pasos a seguir para grabar un programa en los microcontroladores. figura 1 Escritura del código fuente: El código fuente del lenguaje ensamblador está estructurado en columnas, las cuales designaremos como campos. Así analizando el ejemplo de la figura 2 podemos identificar los siguientes: 1. Campo de etiquetas: son nombres de subrutinas o secciones de código fuente identificadas por un nombre. Así es posible “saltar” a determinadas partes del programa identificadas con su correspondiente etiqueta, sin recordar las direcciones físicas donde están ubicadas. Una etiqueta puede ir seguida de dos puntos, espacios o RETURN. Debe empezar con un carácter alfanumerico o de subrayado ( _). 2. Campo de instrucciones: puede ser una instrucción del juego de instrucciones del uC o una directiva del ensamblador. 3. Campo de datos: contiene los datos u operandos de las instrucciones. Los datos pueden ser un registro, un bit de un registro, una etiqueta, o un número constante llamado literal. Aquellas instrucciones que llevan multiples datos, utilizan la ( ,) para separarlos. La especificación de la base en la que se expresan los operandos es opcional: B’10011’ , 0’777’ ,D’255’ , .255 ,H’9F’, 0x9F, A’c’ o ‘C’ 4. Campo de comentarios: es precedido por un punto y coma ( ;) y puede colocarse en cualquier parte del código fuente. Los comentarios es uno de los trabajos más importantes que debe

Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

1

Programación de Microcontroladores – Parte II / TEN. Noguera Guillermo Sebastián “Nuestros primeros programas en Assembler para PICs”

Con el objetivo de adquirir una metodología clara en la programación de microcontroladores, que nos permita desarrollar proyectos con ellos es que abordamos esta nueva sección de nuestro curso. A continuación podemos ver representada la secuencia básica de los pasos a seguir para grabar un programa en los microcontroladores.

figura 1

Escritura del código fuente : El código fuente del lenguaje ensamblador está estructurado en columnas, las cuales designaremos como campos. Así analizando el ejemplo de la figura 2 podemos identificar los siguientes:

1. Campo de etiquetas: son nombres de subrutinas o secciones de código fuente identificadas por un nombre. Así es posible “saltar” a determinadas partes del programa identificadas con su correspondiente etiqueta, sin recordar las direcciones físicas donde están ubicadas. Una etiqueta puede ir seguida de dos puntos, espacios o RETURN. Debe empezar con un carácter alfanumerico o de subrayado ( _).

2. Campo de instrucciones: puede ser una instrucción del juego de instrucciones del uC o una directiva del ensamblador.

3. Campo de datos: contiene los datos u operandos de las instrucciones. Los datos pueden ser un registro, un bit de un registro, una etiqueta, o un número constante llamado literal. Aquellas instrucciones que llevan multiples datos, utilizan la ( ,) para separarlos. La especificación de la base en la que se expresan los operandos es opcional: B’10011’ , 0’777’ ,D’255’ , .255 ,H’9F’, 0x9F, A’c’ o ‘C’

4. Campo de comentarios: es precedido por un punto y coma ( ;) y puede colocarse en cualquier parte del código fuente. Los comentarios es uno de los trabajos más importantes que debe

Page 2: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

2

desarrollar el programador a la hora de escribir el código. Si comentarios es muy difícil descifrar días despues el código fuente que uno mismo ha escrito, de allí su importancia.

Mencionamos a continuación algunas convenciones a tener en cuenta para facilitar la tarea de programar:

Page 3: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

3

figura 2

Es importante mencionar además una buena práctica que consiste en incorporar al comienzo de todo programa en ASM, una serie de comentarios que indiquen el nombre del programa y una breve descripción del trabajo que realiza. Directivas: es un comando escrito en el código fuente para efectuar un control directo o ahorrar tiempo a la hora de ensamblar. El resultado de incorporar directivas se puede ver en el archivo *.LST, después de ensamblar un programa. ( http://perso.wanadoo.es/pictob/directivas_mpasm.htm )

En el MPASM existen basicamente seis tipos de directivas:

1. Directivas de control: controlan cómo es ensamblado el código. 2. Directivas de ensamblado condicional: permiten ensamblar secciones de codigo de

acuerdo a determinadas condiciones. 3. Directivas de datos: controlan asignación de memoria y proveen una forma de referirse a

datos de manera simbolica. 4. Directivas de Lista: controlan el formato del archivo *.LST 5. Directivas Macro: controlan la ejecución y asignación de datos por medio de definición de

macros. 6. Directivas de Archivo Objeto: son usadas solamente cuando se crea el codigo objeto.

Page 4: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

4

Un estudio detallado de cada una de las directivas del MPASM de acuerdo a las seis categorías mencionadas, escapan al objetivo del presente curso. Así analizaremos tan solo las más importantes, para mayor información pueden remitirse al MPASM Assembler Help del MPLAB IDE v7.40. LIST P=16F84 ; Selecciona el tipo de microcontrolador LIST C=132 ; Fichero de listado a 132 caracteres La directiva LIST dispone de diferentes opciones que permiten elegir, entre otras cosas, el tipo de procesador a emplear (P), número de caracteres por línea (C), tamaño de los tabuladores (B), base de la numeración por defecto (R), etc… PORTB EQU 6 ; Dirección de la puerta B TRISB EQU 86 ; Dirección del registro TRISB STATUS EQU 3 ; Dirección del registro de estado La directiva EQU asigna un valor a las etiquetas deseadas, definiendo así una constante en assembler. ORG 0 ; Posición del vector de RESET La directiva ORG indica al ensamblador dónde debe empezar a colocar las instrucciones en la memoria de programa. Es decir el ORiGen o dirección de comienzo para todo el código que sigue. END ; Final del código fuente Esta directiva indica al ensamblador el final del código fuente, donde ha de terminar el proceso de ensamblado. Ensamblado del programa Las instrucciones del código fuente, representadas por nemónicos, son comprensibles para el programador, luego de codificar el programa fuente en un editor de texto y guardarlo con extensión .asm es necesario “traducirlo” al lenguaje máquina que entiende el microcontrolador. El MPASM es el encargado de ensamblar el código fuente y convertirlo en código ejecutable por el PIC. Este proceso lo realiza en dos pasos, en el primero comprueba la correcta sintaxis de las instrucciones, los nombres de las etiquetas duplicados y asigna valores a los símbolos. En el segundo paso el MPASM convierte todos los nemónicos en sus respectivos códigos máquina numéricos.

El proceso de ensamblado genera el archivo .HEX al igual que los archivos .LST y .ERR, los cuales nos proporcionan la siguiente información. El fichero de listado .LIST contiene una copia del fichero del código fuente pero con tres columnas añadidos a su izquierda, donde se detallan las posiciones de memoria de programa que ocupa cada instrucción (columna de la izquierda), la siguiente indica el código hexadecimal de cada una de las instucciones. La tercera columna indica el número de línea del código fuente, finalmente tras esta columna aparece el código fuente en su formato original.

Page 5: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

5

figura 3

Al final del listado encontramos la siguiente información de etiquetas y errores, avisos y mensajes. ¿Qué sucedió con las directivas?

Código ejecutable El fichero con extensión .HEX es el otro fichero creado por ensamblador. El formato que maneja el MPLAB es el Intel Hex de 8bits ( INHXM8 ). Tanto el MPSIM (simulador) como el programador hacen uso de este archivo. Este fichero se puede editar con un editor de texto y su formato es como se representa en la siguiente figura:

figura 4

¿Qué información podemos encontrar en él, referida a las instrucciones del programa? SIMULACION y DEPURACION

Page 6: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

6

El siguiente paso es simular el correcto funcionamiento del programa ejecutable, antes de proceder a la grabación de la memoria de programa del microcontrolador. Aquí existen diversas alternativas: la más eficaz consiste en un emulador en tiempo real ( PIC MASTER, ICEPIC, etc) aunque no la más económica. La otra alternativa más conocida y usada es la de los “simuladores de software” (MPSIM en MPLAB), se trata de programas que ejecutados sobre una plataforma PC/XT/AT simulan el funcionamiento del PIC y la ejecución del programa, obviamente no en tiempo real. Algunas de las tareas que permite un simulador por software, son:

GRABACIÒN DEL MICROCONTROLADOR Una vez depurado y puesto a punto el software se procede a la grabación del programa .HEX en la memoria EEPROM del PIC, cargando nuestro archivo ejecutable en el software encargado de controlar el programador que usemos. En dicho software seguramente debemos setear entre otros parámetros, el modelo de PIC a programar, la palabra de configuración, etc. Inclusive podremos borrar la memoria de programa para proceder a la grabación de un nuevo programa. En la palabra de configuración se selecciona una serie de parámetros tales como:

Integrados en el entorno de desarrollo MPLAB o como Software Libre y/o Propietario podemos encontrar una gran variedad de software que trabaja en conjunto con diversos programadores de PIC pudiendo así grabar nuestros ejecutables en los PIC, algunos como más y diferentes prestaciones que otros. Algunos de los programadores son:

1- PICSTART Plus ( original de MICROCHIP) 2- PICLAB (compatible con el picstart +) 3- JDM (trabaja con IC-PROG, WinPic800) 4- uPIC Trainer (Microsystem Engineering )

( Actividad de clase) Preguntas a responder:

Page 7: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

7

Bucles

Bucle infinito

Analizar Código Programa CONTAR.ASM

Page 8: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

8

Page 9: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

9

Bucle finito

Tipo de estructuras de Bucle

Actividad Clase ( buscar aplicación de dicha estructura lógica)

Page 10: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

10

Actividad Clase (analizar funcionamiento)

Bucles Anidados

Page 11: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

11

Cálculo del tiempo de ejecución

Actividad Clase (Calcular el tiempo de ejecución de un programa .ASM)

Page 12: Programación de Microcontroladores – Parte II / TEN ...usuarios.arnet.com.ar/eligionoguera/progasm2.pdf · Con el objetivo de adquirir una metodología clara en la programación

12

Introducción a LAS INTERRUPCIONES Las interrupciones constituyen quizá el mecanismo más importante para la conexión del microcontrolador con el mundo exterior, sincronizando la ejecución de programas con acontecimientos externos. El funcionamiento de las interrupciones es similar al de las subrutinas de las cuales se diferencian principalmente en los procedimientos que las ponen en marcha. Así como las subrutinas se ejecutan cada vez que en el programa aparece una instrucción CALL, las interrupciones se ponen en marcha al aparecer en cualquier instante un evento externo al programa, es decir por un mecanismo hardware. El PIC16C84/PIC16F84 dispone de 4 posibles fuentes de interrupción:

1- Activación del pin RB0/INT 2- Desbordamiento del temporizador TMR0 3- Cambio de estado en uno de los 4 pines de más peso (RB7:RB4) del PORTB 4- Finalización de la escritura en la EEPROM de datos.