Programación de microcontroladores PIC en CDicho 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 pjt .h y . Genera los archivos . Permite al usuario especificar los parámetros del proyecto. .PIC WIZARD Asistente para la creación de proyectos.c. PIC WIZARD . PIC WIZARD GENERAL: Define el PIC Oscilador a utilizar Fusibles . Sensores. LCD.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. 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 . 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 CAPTURA: Obtiene el valor del temporizador cuando se produce un evento en un pin del PIC. . finalización de una conversión análogo digital. cambio de estado de un pin.PIC WIZARD INTERRUPCIONES: Cuando se produce un determinado evento (por ejemplo Escritura en EEPROM. el PIC interrumpe el programa principal y ejecuta una rutina previamente programada. etc). PIC WIZARD DRIVERS: Rutinas pre-programadas de dispositivos periféricos externos. Teclado Matricial. Pantalla LCD. Incluye ADC. entre otros. Memoria EEPROM. Memoria RAM. . Se pueden habilitar las resistencias de pullup .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). 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 DETECCION DE ALTO Y BAJO VOLTAJE . PIC WIZARD OSCILADOR INTERNO .Solo disponible en PIC’s con oscilador interno .Permite configurar la frecuencia del cristal. . h: Códigos de error Float.PIC WIZARD FICHEROS DE INCLUSION Librerias con funciones especiales Ejemplo: Ctype.h: Operaciones con punto flotante Limits.h: Cálculo de máximos y mínimos Math.h: Operaciones con caracteres Errno.h: Funciones matemáticas . . además ofrece una solución a la gestión de la comunicación entre múltiples CPUs (unidades centrales de proceso).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. Configuración de los pines a utilizar para la LCD .PIC WIZARD LCD: . Permite el control de una red de dispositivos. por ejemplo un sistema de medida de temperatura y humedad.PIC WIZARD MODBUS: . . DIRECTIVAS: Controlan la conversión del programa a código de máquina por parte del compilador. FUNCIONES: Conjunto de instrucciones. Debe haber uno definido como principal: main() ESTRUCTURA DE UN PROGRAMA . Puede haber uno o varios. ESTRUCTURA DE UN PROGRAMA . TIPOS DE DATOS . b.El valor inicial es opcional y podemos definir varias variables por línea separándolas con el signo .VARIABLES Las variables se utilizan para nombrar posiciones de memoria RAM Se deben declarar antes de utilizarlas indicando : tipo_de_datos nombre. . . float a=1. No debemos olvidar terminar la línea con el signo .1. Ejemplo: int a. 3. //definición de la variable char letra.VARIABLES Para almacenar un dato en una variable una vez definida. //definición de la variable temperatura=35. usamos el signo = Ejemplo: float temperatura. //asignación de valor . //asignación de valor letra=‘d’. Definir una variable y almacenar el dato -129 2. usando una variable auxiliar c.Ejercicios: 1.25 3. . Definir una variable y almacenar el dato 11. Intercambiar los datos de 2 variables enteras a y b. . b=b*a+1.OPERADORES Ejemplo: int a=2.b=5. //a=3. //b=16. a++. //c=20.c. c=a+b+b%a. Ejercicio: int x=4. // Es lo mismo que x=x+y. x+=y. // Es lo mismo que x=x-y.OPERADORES Asignación de Suma: x+=y . x-=y.y=5.x=5. // Cuanto vale x? . // Cuanto vale x? Asignación de Resta: x-=y . Ejercicio: int y=4. // Es lo mismo que x=x*y. // Cuanto vale x? Asignación de División: x/=y .x=20. Ejercicio: int x=4. // Cuanto vale x? . Ejercicio: int y=4. // Es lo mismo que x=x/y. x*=y.OPERADORES Asignación de Multiplicación: x*=y . x/=y.y=5. } Void main() { int dato. tipo param2. return(c). //Llamado de la función } . } Ejemplo: int suma(int a. return(dato).int b) //Definición de la función { int c.FUNCIONES Tipodato Nombrefunción(tipo param1. c=a+b.…) { Sentencias.b). dato=suma(a. 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.