Manejo de leds, microswitches y relevador en ANSI C, para PIC, familia 16/ |
|
INTRODUCCION: Existen 2 compañías especializadas en el desarrollo de compiladores C para PICS y que son actualmente las más conocidas: la primera es HITECH y la segunda CCS. Debido a que la mayoría de los usuarios interesados en la programación en C para PICS usan algún compilador de alguna de ambas empresas, este tema y los siguientes habrán de enfocarse en los dos compiladores. En este tema, se aprenderá a programar el manejo de 3 dispositivos: los leds, los microswitches y el relevador. El programa que utilizaremos como ejemplo está específicamente orientado al PIC16F88 y concretamente al hardware del sistema EB88. Sin embargo, hacer modificaciones en los programas para adaptarse a cualquier otro microcontrolador o a cualquier otra asignación de puertos y señales es sumamente sencillo, una vez que se ha comprendido el procedimiento. El programa que usaremos como ejemplo realiza la siguiente función: si el microswitch RA1=0, se realiza una cuenta binaria en los leds del puerto B. Si RA1=1, entonces enciende y apaga el relevador con un período de 1 segundo. Se utiliza un microcontrolador con la frecuencia del cristal a 4 Mhz. Los diagramas electrónicos y asignación de puertos y señales puede consultarlos aquí. |
CREAR UN PROYECTO EN MPLAB v8.50, USANDO EL COMPILADOR HITECH PRO v9.70 Si usted instala la versión 8.50 de MPLAB, el compilador de HITECH se instala automáticamente (por default) en su versión LITE en la dirección: C:\Archivos de programa\HI-TECH Software\PICC\9.70 -Genere una carpeta con el nombre "LEDS" y almacene allí los siguientes archivos: HITECHLEDSTINY.c, y key33.h -Siga el procedimiento detallado en este archivo: CREAR UN PROYECTO DENTRO DE MPLAB.PDF EXPLICACION DEL PROGRAMA: En las directivas del preprocesador, se incluye el archivo header <htc.h>. Este archivo contiene las equivalencias entre los nombres de los puertos, registros y bits con su dirección física en el microcontrolador 16F88. A pesar de que no se escribe el número del microcontrolador, el compilador reconoce que se trata del 16F88 porque se le indicó cuando se creó el proyecto desde el MPLAB y busca su driver en el path en donde se instaló el compilador. El archivo "key33.h" se incluye porque permite utilizar la función de retraso "DelayMs( )". Los registros SPEN, ANSEN, CMCON, CVRCON, TRISA y TRISB deben inicializarse dentro del programa principal tal y como se muestra, para que los leds, los microswitches y el relevador funcionen adecuadamente. Para activar ó desactivar el relevador, usamos RA0=0; y RA0=1; como se muestra en el listado de abajo. Los nombres de variables de los 4 microswitches son: RA1, RA2, RA3, RA4. #include <htc.h>
//ARCHIVO HEADER DEL MICROCONTROLADOR 16F88 |
CREAR UN PROYECTO EN MPLAB v8.50, USANDO EL COMPILADOR CCS: La empresa CCS ofrece la versión PRO que incluye las familias 10/12/16/18 por $150.00 dólares, en versión integrada con el MPLAB. La dirección default en donde se instala el programa y sus carpetas auxiliares es: C:\Archivos de programa\PICC -Genere una carpeta con el nombre "LEDS" y almacene allí los siguientes archivos: CCSLEDSTINY.c y 16F88.h - El archivo "16F88.h" contiene la información sobre los nombres de los puertos y registros especiales y de los bits. (Ej: PORTB, TRISB, RB0, RA0, etc.) y sus direcciones en memoria de datos, de tal forma que es posible asignarles un valor en forma directa, como se muestra en el ejemplo abajo. A este archivo se le hicieron adiciones para hacerlo compatible con el de HITECH. Es necesario incluirlo en la carpeta del proyecto. - Configure el proyecto en MPLAB de una manera similar a la indicada más arriba para el caso del compilador de HITECH. En la opción "Active Toolsuite" elija el compilador de CCS. EXPLICACION DEL PROGRAMA: A diferencia del compilador de HITECH, es necesario usar la directiva #include "16F88.h". Este archivo debe almacenarse en la misma carpeta junto con el programa fuente CCSLEDSTINY.c La directiva "use delay" permite usar la funcion delay_ms( ). El programa principal es casi idéntico al usado para el compilador de HITECH. El nombre de la función de delay que en este caso es delay_ms( ). No es necesario en CCS inicializar los registros SPEN, CVRCON, CMCON, ANSEN. #if defined(__PCM__) #rom 0X0000={0X018A,0X2803} //DATOS
REQUERIDOS POR FIRMWARE TINY PARA 16F88
main(void){
//AQUI EMPIEZA EL PROGRAMA PRINCIPAL |