Decidi retomar meus projetos com PIC, porem utilizando um programa diferente. Desde o meu primeiro contato com PICs que eu usei o PICC CCS, que e pago. Dai, sempre pensava em adotar uma alternativa gratuita, mas sempre adiei a mudanca, ate hoje. Agora, estou decidido a aprender e desenvolver os projetos no MPLAB X, a IDE da propria Microchip, fabricante dos PICs. Quem sabe eu tambem faca a migracao dos meus projetos antigos para ela.Baixadas e instaladas as ferramentas, tanto o MPLAB X IDE quanto o MPLAB XC8 (compilador para PICs de 8-bits), tive dificuldades para produzir meu primeiro codigo teste. Nao sei se procurei direito, mas nao achei nenhum "dummy's guide", ou um exemplo basico para ao menos compilar alguma coisa. Na verdade, depois de comecar a ler o manual do compilador, resolvi procurar, e acabei encontrando este otimo tutorial, que expande o que estou falando aqui.Antes de prosseguir, vale ressaltar que este tutorial assume que voce tem conhecimentos basicos de programacao, conhece alguns termos de PIC/Microcontroladores (Arduino ajuda), e de eletronica digital (logica booleana). Para aqueles que nao conhecem alguns termos de PICs, pretendo fazer um breve post explicando, ou entao indicar alguma bibliografia (em breve).Vamos a pratica. Para este exemplo, utilizei o PIC 16F628A. Seguem os passos para a cricao do projeto. Com o MPLAB X aberto:File > New Project...Categories: Microchip Embedded, Projects: Standalone ProjectDevice: PIC16F628ADebug Header: noneHardware Tools: Simulator (ou qualquer outra, tanto faz)Compiler: XC8Project Name: BlinkClique em Finish Na arvore do projeto (a esquerda), clique com o botao direito em Source Files > New > C Source File > File name: main, e clique em Finish. Sera gerado um arquivo em branco. Vamos, entao, configurar o nosso PIC. No menu Window, va em PIC Memory Views > Configuration Bits, e ajuste as configuracoes como na imagem abaixo:Explicando algumas configuracoes:FOSC = INTOSCIO: seleciona o oscilador interno como fonte de clock, e libera os pinos A6 e A7 para IOWTDE = OFF: desabilita o WatchdogPWRTE = OFF: desabilita o Power-up timerMCLRE = OFF: libera o pino A5 para entrada (ON seta como pino de Reset)BOREN = OFF: desabilita o Brown-out detectLVP = OFF: libera o pino B4 para IOAo clicar em Generate Source Code, sera gerado o codigo base para o programa. Copie-o para o arquivo main.c. Voce pode ver que ao lado de cada configuracao ha um comentario explicando. Se quiser poupar espaco, pode apagar os comentarios e colocar todas as configuracoes em uma linha so, separando-as com virgula.Codigo gerado (com alguns comentarios removidos):#include <xc.h>#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)#pragma config MCLRE = OFF // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital input, MCLR internally tied to VDD)#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled)#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be