Dicho compilador nos genera ficheros en formato Intel-hexadedimal, que es el necesario para programar (utilizando un programador de PIC) un microcontrolador de 6, 8, 18 ó 40 patillas. El compilador de C que vamos a utilizar es el PCW de la casa CCS Inc. A su vez, el compilador lo integraremos en un entorno de desarrollo integrado (IDE) PROGRAMACION DE MICROCONTROLADORES PIC EN C
Al igual que el compilador de Turbo C, éste "traduce" el código C del archivo fuente (.C) a lenguaje máquina para los microcontroladores PIC, generando así un archivo en formato hexadecimal (.HEX). Además de éste, también genera otros seis ficheros PROGRAMACION DE MICROCONTROLADORES PIC EN C
Diseñado específicamente para microcontroladores PIC Amplia librería de funciones predefinidas, comandos de preprocesado y ejemplos Controladores para diversos dispositivos (LCD, ADC, EEPROM, etc) COMPILADOR C DE CCS
PIC WIZARD Asistente para la creación de proyectos. Permite al usuario especificar los parámetros del proyecto. Genera los archivos .c, .h y ,pjt
PIC WIZARD
PIC WIZARD GENERAL: Define el PIC Oscilador a utilizar Fusibles
PIC WIZARD RS232 Comunicación entre PIC’s Comunicación con PC Puede implementarse en PIC’s sin USART Síncrono ó asíncrono I2C Comunicación con periféricos (EEPROM, Sensores, LCD, etc)
PIC WIZARD SPI: Interface Serie de Periféricos Diseñado por Motorola para comunicación entre microcontroladores Full Duplex HARDWARE LCD Para microcontroladores con controlador de LCD integrado. PIC16F913/914/916/917/946 PIC18F6393/6493/8393/8493
PIC WIZARD Timers: Permiten temporizar y realizar conteo de eventos externos.
PIC WIZARD CONVERSOR ANALOGO DIGITAL Permite ingresar señales análogas Voltajes de referencia opcionales Solo para microcontroladores con ADC Múltiples canales de entrada
PIC WIZARD CAPTURA: Obtiene el valor del temporizador cuando se produce un evento en un pin del PIC. COMPARACION: Compara el valor del temporizador con el valor de un registro y provoca una acción en el PIC PWM: Genera una señal PWM (Modulación de ancho de pulso). Aplicaciones: Control de velocidad de motores DC Control de servomotores
PIC WIZARD INTERRUPCIONES: Cuando se produce un determinado evento (por ejemplo Escritura en EEPROM, finalización de una conversión análogo digital, cambio de estado de un pin, etc), el PIC interrumpe el programa principal y ejecuta una rutina previamente programada.
PIC WIZARD DRIVERS: Rutinas pre-programadas de dispositivos periféricos externos. Incluye ADC, Pantalla LCD, Teclado Matricial, Memoria EEPROM, Memoria RAM, entre otros.
PIC WIZARD PINES DE ENTRADA Y SALIDA Los pines del PIC pueden ser configurados como entrada o salida. Algunos pines pueden ser configurados como análogos (dependiendo del PIC). Se pueden habilitar las resistencias de pullup
PIC WIZARD DETECCION DE ALTO Y BAJO VOLTAJE – Permite establecer un punto umbral de tensión y la dirección de cambio. Si el dispositivo experimenta un cambio en la tensión y en la dirección indicada sobre el punto umbral se produce una interrupción.
PIC WIZARD OSCILADOR INTERNO – Permite configurar la frecuencia del cristal. – Solo disponible en PIC’s con oscilador interno
PIC WIZARD FICHEROS DE INCLUSION Librerias con funciones especiales Ejemplo: Ctype.h: Operaciones con caracteres Errno.h: Códigos de error Float.h: Operaciones con punto flotante Limits.h: Cálculo de máximos y mínimos Math.h: Funciones matemáticas
PIC WIZARD Controller Area Network: Protocolo de comunicaciones desarrollado por la firma alemana Robert Bosch GmbH, basado en una topología bus para la transmisión de mensajes en ambientes distribuidos, además ofrece una solución a la gestión de la comunicación entre múltiples CPUs (unidades centrales de proceso).
PIC WIZARD LCD: – Configuración de los pines a utilizar para la LCD
PIC WIZARD MODBUS: – Permite el control de una red de dispositivos, por ejemplo un sistema de medida de temperatura y humedad.
DIRECTIVAS: Controlan la conversión del programa a código de máquina por parte del compilador. FUNCIONES: Conjunto de instrucciones. Puede haber uno o varios; Debe haber uno definido como principal: main() ESTRUCTURA DE UN PROGRAMA
ESTRUCTURA DE UN PROGRAMA
TIPOS DE DATOS
VARIABLES Las variables se utilizan para nombrar posiciones de memoria RAM Se deben declarar antes de utilizarlas indicando : tipo_de_datos nombre; Ejemplo: int a; – El valor inicial es opcional y podemos definir varias variables por línea separándolas con el signo , float a=1.1,b; No debemos olvidar terminar la línea con el signo ;
VARIABLES Para almacenar un dato en una variable una vez definida, usamos el signo = Ejemplo: float temperatura; //definición de la variable char letra; //definición de la variable temperatura=35.3; //asignación de valor letra=‘d’; //asignación de valor
Ejercicios: 1. Definir una variable y almacenar el dato -129 2. Definir una variable y almacenar el dato 11.25 3. Intercambiar los datos de 2 variables enteras a y b, usando una variable auxiliar c.
OPERADORES Ejemplo: int a=2,b=5,c; a++; //a=3; b=b*a+1; //b=16; c=a+b+b%a; //c=20;
OPERADORES Asignación de Suma: x+=y ; // Es lo mismo que x=x+y; Ejercicio: int x=4,y=5; x+=y; // Cuanto vale x? Asignación de Resta: x-=y ; // Es lo mismo que x=x-y; Ejercicio: int y=4,x=5; x-=y; // Cuanto vale x?
OPERADORES Asignación de Multiplicación: x*=y ; // Es lo mismo que x=x*y; Ejercicio: int x=4,y=5; x*=y; // Cuanto vale x? Asignación de División: x/=y ; // Es lo mismo que x=x/y; Ejercicio: int y=4,x=20; x/=y; // Cuanto vale x?
FUNCIONES Tipodato Nombrefunción(tipo param1, tipo param2,…) { Sentencias; return(dato); } Ejemplo: int suma(int a,int b) //Definición de la función { int c; c=a+b; return(c); } Void main() { int dato; dato=suma(a,b); //Llamado de la función }
VARIABLES VARIABLES GLOBALES: Su valor puede ser escrito y leído desde cualquier función. VARIABLES LOCALES: Su valor se pierde al salir de una función.