En esta ocasión dejo un ejemplo muy básico sobre programación con el compilador XC8, la verdad esta propuesta fue realizado por el administrador y colega Julio Aguilar hace tiempo, como parte de una dinámica que se estaba realizando en el grupo de Electónica&Robótica, la dinámica era para ver los estilos de programación y sintaxis de diferentes lenguajes (ya que era al gusto el lenguaje y compilador a usar) y aprender de ello, desafortunadamente la dinámica se suspendió por falta de interés de los usuarios, muy pocos participaron, pero bueno eso es otro tema.
Es el típico ¡¡Hola Mundo!! y consta en cambiar el estado del LED casa 0.5 segundos. El circuito es muy básico solo un PIC12F675 y un LED conectado el GP0 con su debida resistencia.
Código:
Aquí dejo el código que hace posible que funcione nuestro ejemplo:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******************************************************************************* | |
* | |
* LED Intermitente | |
* | |
******************************************************************************* | |
* FileName: main.c | |
* Processor: PIC12F675 | |
* Complier: XC8 v1.32 | |
* Author: Pedro Sánchez (MrChunckuee) | |
* Blog: http://mrchunckuee.blogspot.com/ | |
* Email: mrchunckuee.psr@gmail.com | |
* Description: Blinking a LED in GPIO 0, MCLR Off, INT OSC = 4MHz | |
******************************************************************************* | |
* Rev. Date Comment | |
* v1.00 09/05/2015 Creación del firmware | |
******************************************************************************/ | |
#include <xc.h> | |
#include <pic12f675.h> | |
//Configuracion de FUSES del PIC12F675 | |
#pragma config FOSC=INTRCIO //Int OSC = 4MHz | |
#pragma config WDTE=OFF //Disables Watchdog Timer | |
#pragma config PWRTE=OFF //Disable Power-Up Timer | |
#pragma config MCLRE=OFF //Disable Master Clear | |
#pragma config BOREN=OFF //Disable Blown-ou Detect | |
#pragma config CP=OFF //Disable Code Protection | |
#pragma config CPD=OFF //Disable Data Code Protection | |
#define _XTAL_FREQ 4000000 | |
#define LED_STATUS GPIObits.GP0 | |
//Funciones utilizadas | |
void MCU_Init(void); | |
void main(void){ | |
MCU_Init(); | |
while(1){ | |
LED_STATUS ^= 1; //Invierto el estado del LED | |
__delay_ms(500); //Retardo de 0.5 segundos | |
} | |
} | |
void MCU_Init(void){ | |
ANSELbits.ANS=0b0000; //Entradas y salidas digitales | |
CMCONbits.CM=0b111; //Deactivamos comparadores | |
TRISIO=0x00; //GP0 como salida, en realidad todo el puerto | |
LED_STATUS=0; //Limpio GP0 antes de cargar un valor | |
} |
Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare de responder lo mas pronto posible.
Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.
Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.
0 Comentarios