Programación de Microcontroladores en C

November 15, 2023 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Programación de Microcontroladores en C...

Description

Jenniffer Bustamante Mejia

Muchas personas prefieren programar en lenguaje ensamblador y en justificación a eso se debe decir que muy difícilmente un compilador supera la eficiencia de un buen programa en lenguaje ensamblador. He aquí la disyuntiva, y la elección depende del tipo de programa o proyecto a realizar. Un compilador estaría bien para fines educativos o proyectos en los que una hipotética falla del programa (causada por el compilador) no represente un mayor riesgo, de aquí, que si hablamos de compiladores, existen de todos los tipos y con diferentes grados de confiabilidad, de donde se establece su precio, desde unos cientos a algunos miles de dólares. El compilador PICC de Hi-Tech es bastante bueno, a juzgar por los resultados y prestaciones del mismo.

En general, una aplicación en lenguaje C pasa por seis etapas antes de ejecutarse, y cuando se trabaja con microcontroladores, no es la excepción; estas etapas son: edición, preproceso, compilación, enlace, carga y ejecución

 La edición consiste en la escritura

del programa en un editor (MPLAB), el mismo que además permitirá realizar las correcciones necesarias. El archivo fuente es guardado en el disco de la computadora con la extensión .c.

 El preprocesador se encarga de

realizar ciertas manipulaciones en el programa antes de la compilación, obedeciendo a comandos denominados directivas del preprocesador.

 El compilador realiza la traducción

del programa en C a código en lenguaje de máquina “entendible” por el microcontrolador.

 El enlazador (linker) realiza el

enlace del programa fuente con las referencias a funciones y datos definidos en otra parte, tales como bibliotecas estándar o privadas que constituyen una determinada aplicación, y así crea una imagen ejecutable de nuestro programa (archivo .hex).

 La siguiente fase realiza la carga de la imagen ejecutable en la

memoria del Microcontrolador (ROM o FLASH), para esto se dispone de “programadores” que realizan este trabajo; se tiene a PICSTARPLUS de Microchip y algunos gratuitos como IC-PROG, PONY-PROG, etc., que conjuntamente con el hardware adecuado (JDM, Propic, etc., cuyos circuitos están disponibles en la red) son una alternativa interesante cuando no se tiene mucho dinero. Por último, la ejecución del programa se realiza en el microcontrolador (después de una conexión y alimentación adecuada) una instrucción a la vez.

 Confiabilidad probada.  Manejo automático de páginas y

bancos de memoria.

 Hi-Tech PICC es un compilador de

alto rendimiento para las familias 10/12/14/16/17 de Microchip, el mismo que implementa en forma completa ISO/ANSI C (excepto recursión de funciones); además, maneja varios tipos de variables, incluso las de punto flotante de 24 bits e IEEE de 32 bits. Este compilador genera un código altamente optimizado, brindando al programador capacidades solamente limitadas por las características del microcontrolador. Entre las características más importantes se pueden destacar:

 Múltiples niveles de optimización2

en código C.

 Optimización en ensamblador.  Librerías estándar de ANSI C.  Inclusión de lenguaje ensamblador

entre código C.

 Ilimitado número de archivos fuente.  Compatible con MPLAB IDE, MPLAB

ICD y otras herramientas de desarrollo.

 Compatible con varias plataformas:

Windows, Linux, Unix, Mac OS X, S Solaris.

Al realizar la instalación del compilador

PICC-Lite es aconsejable seguir la configuración por defecto del instalador, sobre todo cuando no se tiene mucha experiencia. Después de haber instalado el compilador, lo primero que se debe comprobar es el correcto enlace entre los dos programas.

 Dentro de la ventana “Set Languaje Tool Locations”

asegúrese de que para “PICC Asembler”, “PICC Compiler” y “PICC Linker” el archivo PICL.EXE esté correctamente direccionado (Por lo general dentro de Raíz:\Archivos de programa\HI-TECH Software\ PICC-Lite\9.50\BIN\), en caso contrario, utilizar la herramienta de configuración “Configure MPLAB” en el menú del programas o ejecutar el archivo MPLABConfig.EXE que se encuentra dentro de la carpeta BIN en el directorio de instalación del compilador.

 Primero se debe seleccionar

el dispositivos que se va a programar, para ello se ubica el cursor en Configure-Select Device.  Después se debe seleccionar el lenguaje de programación en el cual se desarrolla el código, la ruta es: Project-Select Language Toolsuite, se despliega la siguiente ventana

 Se procede a crear el nuevo

proyecto, para ello Project-New

 Se visualizan los directorios View-

Project

 Se crea el nuevo script File-New  Guarde este script en la misma

carpeta donde se guardo el proyecto, coloque el nombre que desee y guárdelo con extensión “.c”

 Vincule el script al Source Files,

dando clic derecho allí y adicionando el archivo de extensión .c

 Desarrolle el código y compilelo en

Project-Build All

 Si la compilación es exitosa

aparece un resumen del consumo de memoria

 Los operadores & y * se utilizan para trabajar con punteros . El

lenguaje C está muy influenciado por el uso de punteros. Un puntero es una variable que contiene la dirección de una variable o de una función, es decir, es una variable que apunta a otra variable. Los punteros permiten la manipulación indirecta de datos y códigos

 La única diferencia a la hora de declarar variables es la

aparición de variables de tipo BOLEAN, de un bit, cuando necesitamos utilizar este tipo de variables en nuestros programas deberemos utilizar un tipo no estandar que se denomina SHORT. Es un tipo especial utilizado para generar código muy eficiente para las operaciones de manejo de bit en I/O. No se permiten las arrays de SHORT ni los punteros a SHORT. La siguiente tabla muestra la sintaxis para las declaraciones de datos.

El comando break se puede utilizar con los

tres formatos de bucle y switch. Cuando el programa alcanza un break, se deja sin ejecutar el resto del bucle y se transfiere el control a la sentencia inmediatamente posterior a dicho bucle.

 El comando continue se puede emplear con

cualquiera de los tres bucles, pero no con switch. Al igual que antes el programa no ejecuta las sentencias restantes del bucle donde se encuentra. En bucles for o while se comienza a ejecutar el siguiente ciclo del bucle. En do While se comprueba la condición de salida; si se cumple, se comienza el nuevo ciclo.

#include  Esta directiva hace que el compilador incluya en nuestro fichero fuente el texto que contiene el archivo especificado en . Deberemos utilizarla siempre que queramos incorporar los ficheros de cabecera que contienen las definiciones de todos los registros internos del microcontrolador que utilicemos en nuestro proyecto, como por ejemplo:

#include

 Realizaremos nuestro primer

programa en C, que consistirá en rotar el encendido de un led a través de una hilera de 8 LED’s conectados al puerto B del PIC. Dependiendo de si el pin RA0 del puerto A está a cero, la rotación de encendido será hacia la derecha , y si está a uno, hacia el sentido contrario, es decir, hacia la izquierda

#include #use delay(clock=4000000,RESTART_WDT) #byte port_b=6 #org 0x1F00, 0x1FFF {}//para proteger el código //del cargador

main() { port_b=1; set_tris_b(0x00); // todo el puerto B como salida while(1) {

if(input(PIN_A0)) rotate_left(&port_b,1); else rotate_right(&port_b,1); delay_ms(100); } }

 En esta sección se propone la realización de un

sencillo contador de 0..9 visualizando la cuenta en un display de 7 segmentos conectado a la puerta B.  Es decir, realizaremos un contador decimal continuo de tal manera que vayamos visualizando los números a través de dicho display. Para ello conectaremos el PIC según se muestra en el esquema.

#include #use delay(clock=4000000,RESTAR T_WDT) set_tris_b(0x00); // todo el puerto B como salida port_b=0; for(;;) { x++; if(x>9) x=0; port_b=display[x]; delay_ms(500); }

#byte port_b=6 #org 0x1F00, 0x1FFF {}//para proteger el código del cargador main() { unsigned int const display[10]={0x3f,0x6,0x5,0x 4f,0x66,0x6d,0x7d,0x27,0x7 f,0x6f}; int x=0;

}

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF