Proyectos básicos con compilador ANSI C de HiTech, versión PICCLITE.

 

LENGUAJEC.jpg (11212 bytes)

 

En seguida se muestran varios proyectos simples realizados para los sistemas EDUPIC 16F84 ó 16F628. Los programas están desarrollados en lenguaje ANSI C, y usando el compilador de HiTech. El compilador empleado en la mayor parte de los programas fue el PICCLITE que es la versión anterior a la actual PRO. Oprima aquí para ver más programas ANSI C, utilizados en aplicaciones más complejas.

Recuerde que al instalar la versión 8.4 de MPLAB IDE, se instala automáticamente el compilador HiTech PRO (versión Lite). Consulte este vínculo para generar un proyecto en MPLAB.

Si usted usa la versión PRO, se hace innecesaria la inclusión en los proyectos de los archivos auxiliares pic.h y 16F84.h. El ejemplo 8, está escrito para la versión PRO del compilador de HiTech y puede tomarlo como guía para actualizar el resto de los proyectos.

Le aconsejamos proceder a estudiar y ejecutar los programas en orden progresivo, ya que están ordenados con el más simple primero y el más sofisticado al último. Todos funcionan en base a un oscilador de 4 Mhz.

 

NOTA IMPORTANTE: el PICCLITE es una versión antigua del compilador C de HITECH. Sin embargo, el código fuente de todos los proyectos, puede actualizarse fácilmente a la versión actual PRO. Por otro lado, en caso de utilizar la versión PRO, los proyectos que usan el LCD solamente requieren de un solo archivo header universal keyH5.h     

Es por eso que, antes de proceder a la revisión de estos proyectos se recomienda revisar la información básica sobre el lenguaje ANSI C, los compiladores disponibles y los temas tutoriales.

En todos los proyectos, el primer archivo listado contiene la función "main".

Asegúrese de haber integrado el PICCLITE al MPLAB IDE. De no haberlo hecho, por favor siga primero las instrucciones aquí.

1. Programa para cuenta binaria en los LEDS conectados a RB0..RB7, con opción de control del incremento a través del microswitch en RA1 (SW1).

Para hacer funcionar este programa, es necesario abrir un proyecto nuevo en MPLAB-IDE. Para tal fin, siga los siguientes pasos:

-Elija un directorio ó carpeta en el cual almacenar los siguientes archivos: LED.C, pic.h, 16F84.h El nombre de la carpeta puede ser, por ejemplo "PROYECTO LEDS".

-Siga el procedimiento detallado en este archivo: CREAR UN PROYECTO DENTRO DE MPLAB.PDF

-Abra el proyecto con "project", "open". Si es necesario busque con el browser el archivo LEDS.MPC que se encuentra en el directorio seleccionado en el punto anterior y ábralo. Una vez abierto el proyecto, dé un doble clic sobre el archivo LED.C. Aquí aparece una ventana con el programa escrito en lenguaje C. Compile el archivo con "project" y "build all". Aquí se crea un nuevo archivo LED.HEX, el cual puede ser cargado en el sistema EDUPIC 16F84 mediante el programa WINPIC.

 

2. Programa para manejo de los puertos A y B. El programa lee un número "n" (0...7) de los microswitches SW1..SW3 y enciende secuencialmente los leds B0...B(n).

Elija un directorio ó carpeta en el cual almacenar los siguientes archivos: PUERTOAYB.c, pic.h, 16F84.h El nombre de la carpeta puede ser, por ejemplo "PROYECTO PUERTOAYB"

-Proceda de manera similar a los siguientes pasos explicados en el programa 1.

 

3. Programa para EDUPIC 16F84, para escribir un mensaje en un LCD 16 x 1, ó 16 x 2. El programa incluye funciones de inicialización del LCD, borrar el LCD, posicionamiento del cursor en cualquier posición, escritura de un solo caracter: PutChar(a), y escritura de un mensaje: PrintString("hola")

Proceda de la misma manera que en el programa 1. Elija un directorio en el cual almacenar los siguientes archivos: LCD.C, IO.C, delay.C, IO.H, delay.H, pic.h, 16F84.h. Si cuenta con el disco de aplicación del sistema EDUPIC, entonces el directorio será EDUPIC>archivos16F84>PICCLITE PROY>PROYECTO LCD.

-Al trabajar con el "project wizard", repita el procedimiento de arriba, pero ahora el nombre del proyecto es "LCD". Cuando llegue a la ventana en donde aparece la opción "add", asegúrese de que todos los archivos arriba listados queden seleccionados.

-Abra el proyecto con "project", "open". Si es necesario busque con el browser el archivo LCD.MPC que se encuentra en el directorio seleccionado. Una vez abierto el proyecto, dé un doble click sobre el archivo LCD.C. Compile el archivo con "project" y "build all". Aquí se crea un nuevo archivo LCD.HEX, el cual puede ser cargado en el sistema EDUPIC con el programa WINPIC.

-El programa funciona tanto para un LCD 16 x 1 como 16 x 2. Pero recuerde que el LCD 16 x 1, está organizado electrónicamente como 2 renglones de 8 caracteres cada uno.

                                                                                                                                                                  

4. Programa para multiplicar 2 números a y b (0...15), leídos de los microswitches SW1...SW4. El resultado de la multiplicación se muestra en formato binario, en los leds B0...B7.

-Elija un directorio ó carpeta en el cual almacenar los siguientes archivos: MULTv2.c, pic.h, pic16F84.h

-Proceda de manera similar a los siguientes pasos explicados en el programa 1.

 

5. Programa para EDUPIC 16F84, utiliza la función print(x) para mostrar números enteros de 16 bits en el LCD. El programa multiplica 2 números enteros y muestra el resultado de la operación en el LCD. Utiliza también una novedosa función de conversión de hexadecimal a decimal-ASCII.

Los archivos que debe integrar a su proyecto son: trebol.c, IO.C, delay.C, IO.H, delay.H, pic.h, pic16F84.h

 

6. Programa escrito en C que hace uso de una subrutina en lenguaje ensamblador mediante las directivas #ASM, #ENDASM. Al ejecutar el programa, primero realiza una cuenta binaria (0..255) en los LEDS utilizando lenguaje ensamblador. Al final de la cuenta, desde lenguaje C, escribe en el LCD el caracter '*', con una variable previamente inicializada desde la rutina en lenguaje ensamblador.

-Los archivos que debe integrar a su proyecto son: ASMYC.C, IO.C, IO.H, DELAY.C, DELAY.H, PIC.H, P16F84.INC, PIC1684.H. No olvide almacenar todos estos archivos en una misma carpeta antes de dar de alta su proyecto en MPLAB.

 

7. Uso de la función SPRINTF. Dicha función realiza la conversión de número enteros positivos o negativos, o en formato de punto flotante previamente almacenados en memoria, a códigos decimal-ASCII, listos para ser enviados a dispositivos como un LCD o una terminal RS232. El resultado de la conversión se entrega en un arreglo previamente definido en la función, como se muestra en el ejemplo.

Los archivos que debe integrar a su proyecto son: EJEMPLO SPRINTF.C, pic.h, 16F84.h

 

8. Programa escrito en C (para la versión compilador Hitech C PRO*), para el sistema EDUPIC 16F84, provisto de un LCD y teclado hexadecimal. Hace uso de la función GetBot( ) para detectar e identificar la opresión de una tecla, y mostrarla en el LCD a través de la función PutChar( ). Se muestra el manejo de tablas "look up"  a través de arreglos de valores almacenados en memoria flash, para realizar la conversión de código, como se muestra abajo, para los arreglos "key" y "asc" de 16 valores cada uno.

const char    key[16] = {0xEE,0xED,0XEB,0XE7,0XDE,0XDD,0XDB,0XD7,0XBE,0XBD,0XBB,0XB7,0X7E,0X7D,0X7B,0X77};
const char    asc[16] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};

Los archivos que debe integrar a su proyecto son: GETCHAR12.C, IO.C, DELAY.C, IO.H, delay.h. Almacene todos estos archivos en una misma carpeta y abra un proyecto nuevo en MPLAB para PICCLITE. El archivo principal "main", está en el programa GETCHAR12.C.

* las versiones LITE y PRO del compilador de HiTech tienen algunas diferencias y pueden generarse mensajes de error al compilar un mismo programa con ambas versiones. En la versión PRO, se usa únicamente la directiva #include <htc.h>, que reemplaza a las anteriores #include <pic.h> y #include <p16f84.h> usadas en la versión LITE.