Guía 2 de microcontroladores: “Mis primeros programas en C para PIC” Los microcontroladores PIC tienen un set de unas pocas instrucciones para ser programados, estas instrucciones son en lenguaje ensamblador o assembler, pero como este lenguaje es demasiado rustico se han creado otros lenguajes un poco más cercanos al usuario. Uno de estos lenguajes es el C para PIC, el cual permite en unas pocas líneas de código crear firmwares con todo tipo de utilidades para los microcontroladores. Un ejemplo básico de un programa en C es: #include <16f88.h> #fuses XT,NOPROTECT,NOWDT,NOLVP #use delay(clock=4000000) void main() { while(TRUE) { output_high(PIN_B0); delay_ms(200); output_low(PIN_B0); delay_ms(200); } } Estas instrucciones pueden ser modificadas, las demás son obligatorias en la mayoría de los casos #include <16f88.h>: Esta instrucción es conocida como “Directiva de dispositivo”. Designa el PIC que se va a usar. #fuses XT,NOPROTECT,NOWDT,NOLVP: Esta instrucción es conocida como “Directiva de fusibles”. Configura el microcontrolador y activa/desactiva algunas propiedades de este: XT : Permite usar ciertos tipos de cristales, en este caso de 4MHz NOPROTECT: Permite que PIC pueda ser grabado multiples veces NOWDT: Desactiva el watchdog NOLVP: El PIC debe ser grabado al voltaje predeterminado. #use delay(clock=4000000): Configura el cristal a 4MHz void main(): Es la función principal, siempre debe ir y debe empezar y terminar con corchetes. while(TRUE): Esta instrucción permite repetir infinitas veces las instrucciones dentro de ella. Empieza y termina con corchetes. output_high(PIN_B0);: Esta instrucción permite configurar al pin b0 como salida y enviar un uno. Este tipo de instrucciones debe terminar siempre con punto y coma (;). El pin configurarse desde el PIN_B0 al PIN_B7 y desde el PIN_A0 al PIN_A5. delay_ms(200);: Esta instrucción hace una pausa en 200 milisegundos. output_low(PIN_B0);: Esta instrucción permite configurar al pin b0 como salida y enviar un cero. Este tipo de instrucciones debe terminar siempre con punto y coma (;). El pin configurarse desde el PIN_B0 al PIN_B7 y desde el PIN_A0 al PIN_A5. Todas las funciones deben ir con corchetes, deben abrirse al iniciar la función y cerrarse al finalizar este. Este firmware se debe escribir en el programa CCS. Para iniciar un nuevo archivo se debe ir al inicio => New => Source file. Se debe grabar el archivo en la carpeta deseada. El programa una vez finalizado se debe “compilar” Esto significa que se debe generar el archivo que debe ir dentro del PIC. Este archivo está escrito en hexadecimal, por ende queda con extensión de archivo .hex. Para compilar se debe pulsar la tecla F9. En Proteus se puede simular el firmware, para esto pruebe arme el siguiente circuito: Materiales: Pic 16f88 Resistencia de 220 ohm Led-yellow Se debe clickear el PIC, aparecerá una nueva ventana, en “program files” se debe buscar el archivo .hex generado y además se debe modificar el valor de “Processor clock frecuency” a 4MHz. Actividades 1. Escriba el firmware en CCS, cree el circuito indicado en la imagen y pruebe su funcionamiento. 2. Modifique el programa cambiando los tiempos de pausa, primero para 50ms, luego para 100ms y luego para 500ms. 3. Modifique el programa para encender y apagar el PIN_A3 4. Modifique el programa encender y apagar dos pines a la vez: PIN_A1 y PIN_B3. Agregue los componentes necesarios a Proteus.