domingo, 13 de mayo de 2012

Lenguaje C en Pic

Algunas de esas características son:
  • Al compilar genera un código máquina muy compacto y eficiente.
  • Se integra perfectamente con MPLAB y otros simuladores/emuladores como PROTEUS para el proceso de depuración.
  • Incluye una biblioteca muy completa de funciones precompiladas para el acceso al hardware de los dispositivos (entrada/salida, temporizaciones, conversor A/D, transmisión RS-232,bus I2C….,etc.
  • Incorpora drivers para dispositivos externos, tales como pantallas LCD, teclados numéricos, memorias EEPROM, conversores A/D, relojes en tiempo real, etc.(los drivers son pequeños programas que sirven de interfaz entre los dispositivos hardware y nuestro programa).
  • Permite insertar partes de código directamente en Ensamblador, manteniendo otras partes del programa en C.



Características del lenguaje C para este compilador

El lenguaje C estándar es independiente de cualquier plataforma. Sin embargo, para la programación de microcontroladores es necesario disponer de determinados comandos que se refieran a partes específicas de su hardware, como el acceso a memoria, temporizadores, etc. Por este motivo, además de los comandos, funciones y datos del lenguaje ANSI C, el compilador PCW incluye bibliotecas que incorporan determinados comandos que no son estándar, sino específicos para la familia de microcontroladores PIC. Éstos son básicamente de dos tipos: directivas del preprocesador y funciones precompiladas


Directivas del preprocesador.
El compilador PCW dispone de 7 tipos básicos de directivas:
Directivas derivadas del estándar de C, que permiten, entre otras funciones, un control básico del código y del flujo en el proceso de compilación:
  • #DEFINE
  • #ELIF
  • #ELSE
  • #ENDIF
  • #ERROR
  • #IF
  • #IFDEF: Esta directiva actúa como el #IF sólo que aquí el pre-procesador simplemente comprueba que reconoce el id especificado (creado con un #DEFINE). Nótese que veerifica si se definió un id.
  • #IFDEF: Comprueba que no está definido el id.      
  • #IFNDEF
  • #INCLUDE
  • #LIST: Guarda el código fuente en el archivo .LST
  • #NOLIST
  • #PRAGMA
  • #UNDEF: El identificador ID no tendrá ya significando para el pre-procesador.  

Directivas asociadas a las bibliotecas precompiladas, que proporcionan al compilador información relacionada con estas bibliotecas:
  • #USE DELAY
  • #USE FAST_IO: Esta directiva afecta al código que el compilador generará para las instrucciones de entrada y salida.
  • #USE FIXED_IO
  • #USE I2C
  • #USE RS232: Esta directiva le dice al compilador la velocidad en baudios y los pines utilizados para la I/O serie. Esta directiva tiene efecto hasta que se encuentra otra directiva RS232.
  • #USE STANDARD_IO

Directivas relacionadas con la especificación del dispositivo, por un lado, para definir los mapas de memoria y el juego de instrucciones, y por otro, incluir información necesaria para la programación del dispositivo en los ficheros de salida de la compilación:
  • #DEVICE
  • #ID
  • #FUSES: Esta directiva define qué fusibles deben activarse en el dispositivo cuando se programe.
  • #TYPE

Directivas de cualificación de funciones, para identificar características especiales de una función:
  • #INLINE
  • #INT_DEFAULT: La función que sigue a la directiva será llamada si el PIC activa una interrupción y ninguno de los flags de interrupción está activo.     
  • #INT_GLOBAL
  • #INT_xxxxx
  • #SEPARATE

Directivas de control del compilador, para definir opciones referidas a la compilación del código del programa:
  • #CASE: Hace que el compilador diferencie entre mayúsculas y minúsculas. Por defecto el compilador hace esta distinción.
  • #OPT
  • #ORG
  • #PRIORITY: Esta directiva se usa para establecer la prioridad de las interrupciones. Los elementos de mayor prioridad van primero.   

Directivas de control de la memoria del microcontrolador, para gestionar y reservar el uso de determinadas zonas de memoria para variables:
  • #ASM
  • #BIT
  • #BYTE
  • #ENDASM
  • #LOCATE
  • #RESERVE: Permite reservar posiciones de la RAM para uso del compilador
  • #ROM
  • #ZERO_RAM: Directiva que pone a cero todos los registros internos que pueden usarse para mantener variables, antes de que comienze la ejecución del programa.

Identificadores predefinidos. Todas las directivas citadas hasta ahora, son comandos destinados a ser interpretados por el compilador, no por el microcontrolador. Dentro del término genérico de directiva se incluyen, además de estos comandos, unas variables que contienen información sobre el proceso de compilación. Estas variables son lo que se denominan identificadores predefinidos del compilador:
  • __DATE__
  • __DEVICE__
  • __PCB__
  • __PCH__
  • __PCM__

En un programa, las directivas se reconocen fácilmente porque comienzan por el símbolo #, mientras que los identificadores empiezan y acaban por doble subrayado (__).

esta es la IDE de PCW compiler

Funciones precompiladas.
Se puede facilitar considerablemente la tarea de programación si no es necesario construir por nosotros mismos aquellas funciones que son de utilización más frecuente, como leer la entrada de un teclado o imprimir un determinado mensaje en una pantalla LCD conectada como salida.

Existen funciones en C incluidas en el compilador PCW para manejar los diferentes recursos del microcontrolador, desde el bus I2C hasta el conversor A/D.

Utilidades adicionales
El entorno PCW incluye, además del IDE y del compilador, una serie de utilidades adicionales con las que se amplían las posibilidades de éste, y que se encuentran en los menús View y Tools de la barra de menús, veamos algunas de ellas:

Monitor del puerto serie: Consiste en un terminal que monitoriza la entrada y la salida del puerto serie del computador.

Selección de dispositivos (Device Selection Tool):
Esta utilidad consta de una base de datos con los dispositivos que puede programar el compilador, incluyendo todas sus características hardware, de manera que se puede emplear para buscar aquellos dispositivos que cumplan una serie de propiedades comunes.

Editor de dispositivos (Device Editor):
Este programa también emplea la base de datos de dispositivos, y permite editar los componentes para modificar sus características hardware, así como añadir nuevos dispositivos o eliminar algunos de ellos.

Conversor numérico:
Esta utilidad realiza conversiones entre los tipos de datos unsigned, signed, hex y float.

Extracción de datos de calibrado:
Esta opción permite leer los datos de calibración existentes en la memoria de programa de un determinado dispositivo. Estos datos contienen información particular de cada microcontrolador a su salida de fábrica, y se refieren a posibles problemas especiales que pudieran haber tenido lugar durante el desarrollo y fabricación. Mediante esta opción es posible leer estos datos y grabarlos en un fichero .H o .C que incorporará una directiva #ROM para dicho dispositivo, con lo que cada vez que se programe el microcontrolador se incluirán estos datos de calibrado.

Desensamblador:
Esta opción lee un fichero en Código máquina y lo traduce a su equivalente en Ensamblador, con lo que se podría insertar este código en un programa en C, mediante las directivas #ASM y #ENDASM.

Si quieren saber algo mas de las directivas y sus funciones ya que no defini completamente todas aqui les dejo el link de un manual. Manual.

Para descargar este compilador aqui esta el link:
http://www.ccsinfo.com/downloads.php
yo descargue el demo y me a ido muy bien con el solo tienes que llenar una encuesta y lo tendras :D

Ahora si quieren comprobar sus programas creados en este compilador les dejo un pequeño tutorial de como integrar CCS a proteus ya que si no lo haces el simulador no correra el programa.
https://www.box.com/shared/110xv0btch


Ejemplo:
Ahora realizare un pequeño programa en donde un display muestre numeros del 0 al 9 infinitamente.


Para correr el programa en el simulador proteus despues de haberle integrado el CCS, le damos doble click en la imagen de pic y escogemos nuestro .HEX que a sido arrojado por el PCW compiler, despues le damos click en la parte inferior donde viene el boton de play y ocurrira esto


Aqui solo puse pocas imagenes pero el simulador si me muestra todos los numeros del 0 al 9 XD.


Bibliografias:
http://www.ccsinfo.com/
http://www.aquihayapuntes.com/compilador-pcw-ccs.html

1 comentario: