Agora que você já sabe como conectar o seu Gravador de PIC USB 40 ZIF ao computador, usando as informações do post Como utilizar o Gravador de PIC USB 40 ZIF, vamos mostrar neste projeto um tutorial passo-a-passo de como programar o PIC16F628A para piscar um LED.
Ao final deste tutorial, você terá programado o seu microcontrolador PIC16F628A com um pequeno programa que pisca um led ligado à porta 1 (pino 18 do PIC). Vamos dividir este tutorial em 5 passos:
- Instalação do compilador C CCS
- Instalação e configuração do MPLAB
- Criação do programa e geração do arquivo HEX
- Gravação do microcontrolador usando MicroBRN
- Teste do microcontrolador na protoboard
As informações deste post foram testadas em um computador com Windows 7 64 bits, mas servem de base para outras versões do Windows e também outros sistemas operacionais, como Linux e Mac. O tutorial é um pouco extenso e recomendamos não pular passos e seguir o tutorial conforme é apresentado, pois algumas tarefas dependem das anteriores.
1 – Instalação do compilador C CCS
O primeiro passo é a instalação do Compilador C, que será utilizado juntamente com o MPLAB para gerar o arquivo HEX. É importante que a instalação do compilador seja feita antes da instalação do MPLAB.
O compilador C CCS é uma versão demo, mas totalmente funcional, que pode ser baixada neste link. É necessário o preenchimento de um pequeno cadastro para liberação do download, que irá gerar o arquivo DEMOUPD.EXE no seu computador.
A instalação é simples e não requer configuração adicional. No final da instalação, permita que o instalador configure os plugins para o MPLAB X:
2 – Instalação do MPLAB
O MPLAB é um software da Microchip, fabricante do microcontrolador PIC16F628A, que iremos utilizar nesse experimento. A versão que utilizamos é a MPLAB X IDE 2.0 e pode ser baixada nesse link. Note que o pacote de instalação tem 358 Mb e que o tempo de download vai variar de acordo com a sua conexão de internet:
O arquivo baixado tem o formato ZIP, e ao descompactar temos um único arquivo chamado MPLABX-V2.00-windows-installer.exe. Execute este arquivo e terá início o processo de instalação.
Na tela inicial, clique em NEXT :
A tela seguinte apresenta os termos da licença de software. Clique em I accept the agreement :
Escolha o local de instalação do programa. No nosso caso, o MPLAB foi instalado na pasta C:Program Files (x86)MicrochipMPLABX :
Clique em Next na próxima tela para iniciar a instalação :
Terá início o processo de instalação e cópia dos arquivos :
Antes do final da instalação, o Windows emitirá um alerta dizendo que o Sistema Operacional não pôde verificar a assinatura digital do driver. Clique em Instalar este software de driver mesmo assim. Não há risco de danificar o computador pois estamos utilizando o software de uma fonte confiável :
A tela final de instalação do MPLAB será apresentada. Mantenha a opção XC compilers are not installed with the IDE desativada e clique em FINISH :
Antes de iniciarmos a compilação do projeto, vamos finalizar a configuração do plugin do CCS que instalamos anteriormente. Inicie o MPLAB :
No menu Tools, clique em Plugins. Na tela de configuração de plugins, escolha o plugin CCS C Compiler e clique em install :
O plugin do CCS será instalado e, ao final, permita que o instalador reinicie o MPLAB para que as alterações tenham efeito.
3 – Criação do programa e geração do arquivo HEX
Na tela inicial do MPLAB você irá criar um novo projeto. Selecione FILE > NEW PROJECT :
Na próxima tela, em CATEGORIES, selecione Microchip Embedded e, em Projects, selecione Standalone Project, depois clique em NEXT :
Vamos agora selecionar a familia e o microcontrolador que iremos utilizar no projeto. No nosso caso, a familia será Mid-Range 8-bit MCUs (PIC12/16/MCP), e o dispositivo (device) será PIC16F628A :
A próxima tela, SELECT HEADER, é opcional, deixe o valor em None e clique em NEXT :
Na tela Select Tool, também não altere nada e clique em NEXT :
Na próxima tela, iremos selecionar o compilador, e utilizaremos o CCS C Compiler, que instalamos e configuramos anteriormente :
Agora, dê um nome ao projeto, e selecione a sua localização no disco. Criamos no disco C: uma pasta chamada PIC Projetos :
Clique em Finish e a estrutura do projeto será criada no MPLAB :
No lado esquerdo da tela, clique com o botão direito em SOURCE FILES, depois, em NEW, e finalmente em C Source File. Na tela que será apresentada, digite o nome do arquivo que será criado. Usamos o nome : PIC_LED. Após escolher o nome, clique em Finish :
Repare agora que no lado esquerdo da tela, abaixo de Source Files, há o nome PIC_LED.c, e à direita, uma área em branco para edição do programa :
No lado direito, na área de edição, digite ou copie o programa abaixo :
//Programa : Pisca LED com PIC16F628A //Autor : MakerHero //Carrega a biblioteca para o microcontrolador PIC16F628A #include <16F628A.h> //Configuracao FUSES #FUSES NOWDT #FUSES INTRC_IO #FUSES NOPUT #FUSES NOPROTECT #FUSES NOBROWNOUT #FUSES NOMCLR #FUSES NOLVP #FUSES NOCPD //Define a utilização do clock interno de 4 Mhz #use delay(clock=4000000) #define PINOLED PIN_A1 //Pino ao qual o led esta ligado void main() { while (1) { output_bit(PINOLED, TRUE); // Liga o Led delay_ms(5000); // Aguarda 3 segundos output_bit(PINOLED, FALSE); // Desliga o Led delay_ms(2000); // Aguarda 2 segundos } }
Com o programa pronto, aperte o botão correspondente à opção Clean and Build Main Project (em azul). O projeto será compilado e o arquivo HEX gerado na pasta C:PIC ProjetosProjeto_PIC_LED_PISCA.Xdistdefaultproduction. Lembre-se que esta pasta foi a que usamos para os testes. No seu computador, essa informação pode ser diferente :
É esse arquivo HEX que iremos utilizar no passo seguinte, para finalmente gravarmos o programa no microcontrolador.
4 – Gravação do PIC16F628A usando MicroBRN
Conecte o seu Gravador de PIC USB 40 ZIF ao computador e abra o software MicroBRN. No menu FILE, escolha a opção LOAD e navegue até a pasta onde o arquivo HEX foi gravado, carregando-o. Sua tela ficará parecida com essa :
Observe no lado direito da tela que ao selecionar o chip 16F628A, o programa já informa a maneira como o microcontrolador deve ser encaixado no gravador. O círculo amarelo em cima do chip indica o pino 1.
Clique no botão PROGRAM e o programa será transferido para o microcontrolador. Se não houver nenhum erro, esse será o resultado final :
Pronto. Agora é só montar o circuito e testar o PIC !
5 – Teste do microcontrolador na protoboard
Monte o circuito abaixo, e conecte-o à uma fonte de 5v. O pino 14 do PIC vai ligado ao Vcc, e o pino 5 deve ser ligado ao GND. Para ligação do led ao pino 18, utilizamos um resistor de 1 K. Confira o datasheet do PIC16F628A para maiores informações e pinagem do CI :
O led ligado ao pino 18 começará a piscar, indicando que a gravação do microcontrolador foi feita com sucesso. Você pode utilizar pilhas para alimentar o circuito, como fizemos nos nossos testes:
Gostou? Deixe seu comentário logo abaixo.
Como adiciono o programa salvo na área de trabalho no MPLAB
Alguém pode me mandar o programa de configuração e test do LCD 16X20
E O CIRCUITO PARA EU MONTAR NO PROTEUS
NAO ENTENDI O CODIGO
NAO ESTAR COMPLETO DO COMEÇO AO FIM .
Como configurar o timer0 do pic 12f1822 para piscar um led na frequencia de um segundo usando CCS Compiler? fiz desse jeito mas não sei se está correto, a frequência nãoestá ok. Se alguém puder me ajudar.
#include
int time = 0;//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#INT_TIMER0
void TIMER0_isr(void)
{
time ++;//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//}
//set_timer0(6);
set_timer0(0);
clear_interrupt(int_timer0);
//set_timer0( 15369 + get_timer0()); //;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//Inicialização da contagem para o proximo ciclo de interrupcao com 15369
//get_timer_0() compensa o tempo de execucao das operacoes do timer ( delay_ms(50) )
}
void main()
{
setup_adc_ports(sAN1|sAN2|sAN3);
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256|RTCC_8_bit); //65,5 ms overflow
clear_interrupt(int_timer0); //;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
//set_timer0( 15369); //;;;;;;;;;;;;;;;;;;;;;;;;;;;;
//set_timer0(6);
set_timer0(0); //;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
while(TRUE)
{
if (time 7)
{
output_low(pin_a5);
output_low(pin_a0);
}
if (time > 14 )
{ time = 0;
}
}
}
Ola Amanda,
Você pode lançar a sua dúvida na nossa comunidade do Facebook, por lá o pessoal Maker está compartilhando conhecimento e projetos. Veja só: https://www.facebook.com/groups/272908123918982
Abraços!
Vinícius – Equipe MakerHero
Pessoal alguém pode me informar posso usar pic microcontrolador para uso comercial crial algum circuito próprio e software e vender alguém tem informações texto tutorial,Adilson você que é formado me oriente.
Olá Antônio!
É possível sim embarcar um PIC em um produto comercial, inclusive há algum produtos que usam o PIC sim.
Abraço!
Rosana – Equipe MakerHero
baixei o c ccs no link instalei e já veio expirado…….
parabéns pelas dicas, obrigado.
Gostaria de saber quanto custa o gravador de pic
Alguém pode me ajudar nessa questão:
Analise o código fonte abaixo:
#include
#FUSES NOWDT, NOBROWNOUT, NOLVP, NOMCLR
#use delay(crystal=20000000)
#use FIXED_IO( A_outputs=PIN_A1 )
#define LED PIN_A1
void main()
{
while (1)
{
output_bit(LED, TRUE);
delay_ms(5000);
output_bit(LED, FALSE);
delay_ms(2000);
}
}
Explique o seu funcionamento e anexe o desenho do circuito para o funcionamento da lógica
Excelente,rápido e objetivo.
Utilizando um gravador JDM também funciona?
Olá Antônio,
Acredito que o procedimento será diferente.
Abraço!
Rosana – Equipe MakerHero
olá, gostaria de saber se voce disponibiliza o arquivo de dominio .h?
BOM DIA GOSTARIA QUE SE FOR POSSÍVEL ENTRAR EM CONTATO
TENHO UM CÓDIGO ASM RECEPTOR RX COM PIC 12F675 DE 1 CANAL
E NÃO CONSIGO GRAVAR UM PIC
OU MELHOR SE CONSEGUE FAZER UM PROGRAMA PARA PIC 12F629 OU 675 GOSTARIA MUITO DA SUA AJUDA
E AO MESMO TEMPO COMO TODO TRABALHO TEM SEU PREÇO ESTOU DISPOSTO A PAGAR POR ISTO
POR FAVOR ENTRAR EM CONTATO
Boa tarde, me desculpe sou leigo no assunto.
Para usar esse microcontrolador tem programar os arquivos hex para que ele funcione. Pensei que era só montar os circuito.
Grato.
Quais mudanças neste codigo são necessárias para usar o pic16f676?
Bom dia amigos! Preciso de uma ajuda, segui passo o passo o tutorial acima para criar o arquivo .HEX para um PIC12F675, mas não deu certo, alguem poderia de dar um HELP? Grato! Segue abaixo o código:
;**********************************************************************
; This file is a basic code template for assembly code generation *
; on the PIC12F675. This file contains the basic code *
; building blocks to build upon. *
; *
; Refer to the MPASM User’s Guide for additional information on *
; features of the assembler (Document DS33014). *
; *
; Refer to the respective PIC data sheet for additional *
; information on the instruction set. *
; *
;**********************************************************************
; *
; Filename: xxx.asm *
; Date: *
; File Version: *
; *
; Author: *
; Company: *
; *
; *
;**********************************************************************
; *
; Files Required: P12F675.INC *
; *
;**********************************************************************
; *
; Notes: *
; *
;**********************************************************************
list p=12f675 ; list directive to define processor
#include ; processor specific variable definitions
#define motorDir 7
#define motorOff 6
#define motorOn 5
#define motorState 4
#define motorOnLow 206
#define motorOnRange 206
#define pulseShortL 0x07
#define pulseShortH 0x02
#define pulseLongL 0xd5
#define pulseLongH 0x03
#define pulseDead 25
#define pulseRange 231 ;plus and minus
#define RDrivePin GPIO5
#define FDrivePin GPIO4
errorlevel -302 ; suppress message 302 from list file
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
; ‘__CONFIG’ directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See data sheet for additional information on configuration word settings.
;***** VARIABLE DEFINITIONS
w_temp EQU 0x20 ; variable used for context saving
status_temp EQU 0x21 ; variable used for context saving
PWM_reg EQU 0x22 ;dir,off,on,state,x,x,x,x
PWM_CountON EQU 0x23
PWM_CountOFF EQU 0x24
TestReg EQU 0x25
TempTH EQU 0x26
TempTL EQU 0x27
AH EQU 0x26
AL EQU 0x27
BH EQU 0x28
BL EQU 0x29
PulseCentreL EQU 0x3a
PulseCentreH EQU 0x3b
;**********************************************************************
ORG 0x000 ; processor reset vector
goto main ; go to beginning of program
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
; isr code can go here or be located as a call subroutine elsewhere
;
btfss INTCON,T0IF
goto IntNotTimer0
;Timer over flow
btfss PWM_reg,motorState
goto IntMotorStateLow
;Set state low
bcf PWM_reg,motorState
movf PWM_CountOFF,w
bcf STATUS,RP0
movwf TMR0
bcf INTCON,T0IF
btfsc PWM_reg,motorOn
goto IntNotTimer0
;Switch off output as always on flag not set
bcf GPIO,FDrivePin
bcf GPIO,RDrivePin
goto IntNotTimer0
IntMotorStateLow
;Else Set state high
bsf PWM_reg,motorState
movf PWM_CountON,w
bcf STATUS,RP0
movwf TMR0
bcf INTCON,T0IF
btfsc PWM_reg,motorOff
goto IntNotTimer0
;Switch on output as always on flag not set
btfsc PWM_reg,motorDir
goto IntMotorOnRev
;Switch motor on forward
bcf GPIO,RDrivePin
bsf GPIO,FDrivePin
goto IntNotTimer0
IntMotorOnRev
;else switch motor on reverse
bcf GPIO,FDrivePin
bsf GPIO,RDrivePin
;goto IntEnd
IntNotTimer0
BTFSS INTCON,INTF
goto IntEnd
;input pin change
bsf STATUS,RP0
btfss OPTION_REG,INTEDG ;Test for up or down edge
goto IntDownEdge
;Start of pulse so start timer
bcf OPTION_REG,INTEDG
bcf STATUS,RP0
bsf T1CON,TMR1ON
bcf INTCON,INTF
goto IntEnd
IntDownEdge
;End of Pulse read timer and set PWM parameters
bsf OPTION_REG,INTEDG
bcf STATUS,RP0
bcf T1CON,TMR1ON
bcf INTCON,INTF
;Read time
movf TMR1L,w
movwf TempTL
movf TMR1H,w
movwf TempTH
;Test for viable range
andlw b’11111000′
btfss STATUS,Z
goto IntPulseInvalid ;Pulse too long
movf TempTH,w
andlw b’00000111′
btfsc STATUS,Z
goto IntPulseInvalid ;Pulse too short
;Decode time
movf PulseCentreL,w
movwf BL
movf PulseCentreH,w
movwf BH
call Sub16Bit
btfss TempTH,7
goto IntPulseForward
;Motion is reverse
bsf PWM_reg,motorDir
;Invert time
movlw 0x01
movwf BL
clrf BH
call Sub16Bit
movlw 0xff
xorwf TempTL,f
xorwf TempTH,f
goto IntPulseMagMeasurement
IntPulseForward
;Motion is forward
bcf PWM_reg,motorDir
IntPulseMagMeasurement
;Subtract dead zone
movlw 0x19
movwf BL
clrf BH
call Sub16Bit
btfss TempTH,7
goto IntPulseMagGTDZ
;Pulse in dead zone
bcf PWM_reg,motorOn
bsf PWM_reg,motorOff
goto IntPulseComplete
IntPulseMagGTDZ
;Subtract variable range
movlw 0xCE
movwf BL
clrf BH
call Sub16Bit
btfsc TempTH,7
goto IntPulseMagLTM
;Pulse greater than variable range
bcf PWM_reg,motorOff
bsf PWM_reg,motorOn
goto IntPulseComplete
IntPulseMagLTM
bcf PWM_reg,motorOff
bcf PWM_reg,motorOn
movf TempTL,w
xorlw 0xff
movwf PWM_CountON
movlw 0x02
subwf TempTL,w
movwf PWM_CountOFF
IntPulseInvalid
IntPulseComplete
;Clr tmr1 ready for next pulse
clrf TMR1H
clrf TMR1L
IntEnd
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
; these first 4 instructions are not required if the internal oscillator is not used
main
call 0x3FF ; retrieve factory calibration value
bsf STATUS,RP0 ; set file register bank to 1
movwf OSCCAL ; update register with factory cal value
bcf STATUS,RP0 ; set file register bank to 0
; remaining code goes here
;Initialise bridge control
bsf STATUS,RP0
bcf TRISIO,FDrivePin
bcf STATUS,RP0
bcf GPIO,FDrivePin ;Make FDrivePin output and set low
bsf STATUS,RP0
bcf TRISIO,RDrivePin
bcf STATUS,RP0
bcf GPIO,RDrivePin ;Make RDrivePin output and set low
;initialize other port pins
bsf STATUS,RP0
clrf ANSEL
bsf TRISIO,GPIO2
bcf STATUS,RP0
;bsf GPIO,GPIO2
;Initialize variables
clrf PWM_reg
bsf PWM_reg,motorOff ;Set motor off state
movlw 0x7f ;set to 256-minium number so true tmr0 overflow is caught
movwf PWM_CountON
movlw 0x7f ;Set to max count before overflow
movwf PWM_CountOFF
;timer0 initialize
bsf STATUS,RP0
bcf OPTION_REG,T0CS ;timer 0 set to trigger on instruction clk
bcf OPTION_REG,PSA ;timer 0 set to trigger on instruction clk
bcf OPTION_REG,PS2 ;timer 0 set to trigger on instruction clk
bsf OPTION_REG,PS1 ;timer 0 set to trigger on instruction clk
bsf OPTION_REG,PS0 ;timer 0 set to trigger on instruction clk
bcf STATUS,RP0
;timer1 initialization
bsf T1CON,T1CKPS0
clrf TMR1H
clrf TMR1L
;Test pulse
;wait a while
clrf TempTL
clrf TempTH
DLoop1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
decf TempTL,F
btfss STATUS,Z
goto DLoop1
decf TempTH,F
btfss STATUS,Z
goto DLoop1
Timefalse
;wait for int pin low
btfsc GPIO,GPIO2
goto Timefalse
;wait for up on int pin
PinNotHigh
btfss GPIO,GPIO2
goto PinNotHigh
;Start timer
bsf STATUS,RP0
bcf OPTION_REG,INTEDG
bcf STATUS,RP0
bsf T1CON,TMR1ON
;wait for int pin low
PinNotLow
btfsc GPIO,GPIO2
goto PinNotLow
;Test pulse length measurement
;End of Pulse read timer and set PWM parameters
bsf STATUS,RP0
bsf OPTION_REG,INTEDG
bcf STATUS,RP0
bcf T1CON,TMR1ON
;Read time
movf TMR1L,w
movwf TempTL
movf TMR1H,w
movwf TempTH
;Test for viable range
andlw b’11111000′
btfss STATUS,Z
goto Timefalse ;Pulse too long
movf TempTH,w
andlw b’00000111′
btfsc STATUS,Z
goto Timefalse ;Pulse too short
;Place time in reg
movf TempTL,w
movwf PulseCentreL
movf TempTH,w
movwf PulseCentreH
;interupt configuration
;interupt config on tmr0 for pwm motor control
bsf INTCON,T0IE
bcf INTCON,T0IF
bsf INTCON,INTE
bcf INTCON,INTF
bsf INTCON,GIE
;loop
; movlw 0xc0
; movwf PWM_CountON
; movlw 0x3f
; movwf PWM_CountOFF
; bcf PWM_reg,motorOff
; bcf PWM_reg,motorOn
; bcf PWM_reg,motorDir
MainLoop
; btfsc GPIO,0x03;GPIO4
; bsf PWM_reg,motorDir
; btfss GPIO,0x03;GPIO4
; bcf PWM_reg,motorDir
nop
goto MainLoop
Sub16Bit ;Subtracts one 16bit number from another A-B ALow AHigh BLow BHigh
movf BL,W
subwf AL,F
movf STATUS,W
xorlw b’1′
andlw b’00000001′
addwf BH,W
subwf AH,F
return
Add16Bit ;Adds A+B
movf BL,W
addwf AL,F
movf STATUS,W
andlw b’00000001′
addwf BH,W
addwf AH,F
return
;Test time and set PWM regs accordingly
TestPWMSig
;remove 1000 counts
;if less that zero set full reverse
;limit to 1000 counts
;if more than 100 set to full forward
;divide by 2
;subtract 250
;if negative set to reverse and subtract 1 and invert to obtain posiyive number
;else set to forward
;if time less than 16 set to off
;if time greater than 240 set to on
;Else set pwm_on count to time and pwm_off count to ff-time
; initialize eeprom locations
ORG 0x2100
DE 0x00, 0x01, 0x02, 0x03
END ; directive ‘end of program’
Ola, boa tarde. Eu gostaria de saber se para programar um robo explorador, este tipo este mesmo exemplo serve para ser executado.
Como assim robô explorador?
Boa tarde.
Estou com muita dificuldade em conseguir gravar e extrair o fonte do microcontrolador 16F883, poderia me ajudar….
Boa tarde Felipe estou fazendo um carrinho de carga elétrico mais não consigo fazer a placa de controle de velocidade do motor, o motor e um de corrente cc mais a sua corrente e muito alta aproximando aí uns 30 amperes. eu gostaria de saber se vocês fazem e quanto eu tenho que pagar.
Boa tarde, Felipe estou fazendo um carrinho de carga elétrico mais não consigo fabricar a placa de controle de velocidade, o motor e um de corrente cc 12 a 24v mais a corrente e alta aproximado aí de uns 30 Amper, o potenciômetro será o acelerador e será instalado no carrinho como um acelerador de moto.
Obrigado, ajudou um pouco na minha pesquisa.
Parabéns pela iniciativa.
Obrigado
Boa noite..
Pediria uma ajude se possivel, tenho compilador versão 4.78..Bom fiz programa ,compilei até ai tudo bem.
Mas nos arquivos gerados na compilação não aparece o arquivo hex,só nomes diferentes.Por favor qual arquivo
certo?? Por ex: apareçe arquivos gerados de nome; C.SOUCE FILE,C OBJET FILE,C OUTPUT FILE.
QUAL USAR?
Fico grato por resposta.
josue…
O programa funciona corretamente, mas acho estranho não haver explicitamente a programação do registro TRISA. Pergunto então por que não precisou.
Olá, onde eu encontro para comprar um case de pilhas AA com switch igual a este utilizado no tutorial.
Obrigado
Eu queria saber o motivo do erro que aparece no mpla ide quando eu tento compilar o programa e criar o arquivo hex. Estou testando o programa para funcionar num microcontrolador pic16f628a no MPLAB IDE v.8.63
O erro em fazer o BUILD é:
Debug build of project `C:UsersalunoDesktopteste2.mcp’ started.
Language tool versions: MPASMWIN.exe v5.39, mplink.exe v4.38, mplib.exe v4.38
Preprocessor symbol `__DEBUG’ is defined.
Tue Apr 19 18:21:29 2016
———————————————————————-
Build aborted. The project contains no source files.
———————————————————————-
Debug build of project `C:UsersalunoDesktopteste2.mcp’ failed.
Language tool versions: MPASMWIN.exe v5.39, mplink.exe v4.38, mplib.exe v4.38
Preprocessor symbol `__DEBUG’ is defined.
Tue Apr 19 18:21:29 2016
———————————————————————-
BUILD FAILED
Porque ocorre este erro?
Talvez vc nao tenha adicionado uma “source file” em “add new file to project” para digitar o arquivo “.c” ou pode ser que o programa foi feito para compilar somente com o mplabx
Olá! Comprei o gravador 40 ZIF há um tempo. Funcionava certinho com programas em linguagem assembly, porém quando tentei programar em linguagem C surgiram alguns problemas no circuito. Eu segui exatamente todos os desse tutorial, porém o LED não consegue se manter aceso e fica acendendo e apagando. Ele apaga no momento certo, porém oscila quando deve ficar aceso. Preciso muito começar a programar em C, gostaria da ajuda de vocês. Obrigado.
Link da biblioteca .h?
Bom dia Tadeu,
Se você utilizar o procedimento do post, já está incluída no compilador.
Abraço.
Adilson – Equipe MakerHero
Ola bom dia sou novo com pic o agradei muito de sua explicação, porem preciso fazer um projeto com esse tempo de oscilação do led com regulagem, através de dois potenciômetros um que deixa o led acionado e outro em espera, sera que tem como voces me ajudarem por favor!!!
Cara, vc precisa ter um conversor A/D para poder receber e interpretar o sinal, coisa que o 16F628A não tem. Porem existe muitos truques que fazem com o PIC para medir a tensão, uns usam o próprio comparador com Vref (que da pra configura , veja VRCON no datasheet) [O comparador mede, se a entrada for menor que Vref, aumenta Vref. Fazendo isso até que Vref Seja menor ou igual que a entrada. A Parte boa é que da pra selecionar várias entradas,portanto testa Ent1, testa Ent2 e por ai vai…].
Também há outros métodos, de uma boa olhada no site do Microchip. (Y)
Boa noite
Já instalei a versão demo do controlador mais a mesma expirou ai quando tento compilar aparece esse erro alguém poderia me ajudar grato.
Att Israel
Bem peguei o seu código e descarreguei no PIC! e não funcionou! qual foi o osciliador que vc colocou na interface do MicroBRN ? Eu botei IRCIO e não funciona! por favor me ajuda! creio que só seja o clock ! 🙁
Funcionou ! vlw man! kkkkkkkk era o fio de alimentação do PIC estava mau conectado na protoboard!
Boa tarde !
Segui os passos conforme escritos porém uso o gravador winpic, pois meu gravador é simples… Faço tudo certo, mas quando chega na ora de gravar aparece a seguinte mensagem:
Strange line in HEX-file (11): ;PIC16F628A
Programming…
Erasing (“bulk” or “chip”) …
Programming CODE, 0x000000..0x000039
Verifying 0x000000..0x000039
Verify Error: 000000: read 000000, wanted 003000
Verify Error: 000001: read 000000, wanted 00008A
Verify Error: 000002: read 000000, wanted 002819
Verify Error: 000004: read 000000, wanted 003022
More Verify Errors, unable to list all (total=57)
Programming CONFIG, 0x002000..0x002007
Verifying 0x002000..0x002007
Verify Error: 002007: read 000000, wanted 002118
ERROR: Programming FAILED !
Será que alguém poderia me ajudar por favor ?
Att
Caros Amigos – comprei o gravador e fiz tudo como no post.
– gravei o pic16f628a montei o circuito, porém não fincionou.
fiz um load do pic e salvei no pc, abri o arquivo e comparei com o que gravei inicialmente, tudo ok, tirando a duvida sobre se tinha gravado o pic ou não.
testei os arquivos no isis do proteus 8 tudo funcionou perfeitamente.
porem ainda não consegui fazer o maldito led piscar.
pesso um help para vcs, pois ja estava disistindo de fazer esse projeto.
comprei um programador wellon vp280. gravei o maldito arquivo, pensando assim resolver o problema.
porém continuo na mesma, nada do led piscar…
esse 16f628a esta me deixando louco.
pensei que seria fácil pois tenho conhecimento vasto em eletrônica e programo facilmente o arduino!
pesso um socorro….
pois já não sei o que fazer.
Boa noite. Fiz conforme o que foi explicado porém na protoboard o led não acende. já testei os jumpers e o led e estão funcionando corretamente. Utilizei vários resistores com voltagens diferentes mas sem sucesso. É possível que o pic tenha queimado por inversão de polaridade ou algo parecido? Teria alguma dica?
Obrigado.
Bom dia Rafael,
A gravação do programa foi feita corretamente ? Apareceu algum erro ?
Abraço
Adilson – Equipe MakerHero
Filipe,tem como você disponibilizar o arquivo .hex já pronto no 4shared?
Bom dia Junior,
Tem sim. Coloquei o arquivo neste link:
http://www.makerhero.com/img/files/download/LED_Blink.X.production.zip
Abraço!
Adilson – Equipe MakerHero
Muito obrigado amigo.Se não for pedir muito queria ver se tem o projeto com dois leds piscando.Forte abraço.
Oque fazer se o programa Expirou???
Grato desde ja!!
O Cristal não se faz necessário?
Boa tarde Rafael,
No caso, estamos utilizando o oscilador interno do processador.
Abraço
Adilson – Equipe MakerHero
Vdd, agora que vi no programa!
Obrigado.
voce sabe onde posso encontrar a biblioteca do virtual wire para o pic26f628a ?????
preciso dela urgente para um trabalho
Boa tarde Fernando,
Infelizmente não temos essa informação.
Abraço
Adilson – Equipe MakerHero
boa tarde, estou com um problema, comprei o kit de gravação k150 e tampem uso o microbrn para grava; ao fazer esta programação que você pois no blog , na protoboard não funciona, sera que estou fazendo algo errado na hora de gravar no pic ao alterar o fuse?
ou sera que o pic esta queimado, sera que vc poderia me ajudar.
Boa tarde Thiago,
Ele apresenta alguma mensagem de erro na hora de gravar o PIC ?
Adilson – Equipe MakerHero
Recomenda esse gravador pra quem usa osx, os programas usados sao compativeis?
Grande Abraco!
Boa tarde Victor,
Testamos esse gravador somente com Windows 7 e Windows 8, junto com o microBrn. De qualquer forma, existem outros softwares no mercado para gravação de PIC, apenas confirme se são compatíveis com o gravador K150 vendido pela MakerHero.
Abraço
Adilson – Equipe MakerHero
Olá, eu segui o tutorial exatamente como esta descrito acima, mas eu ja tinha instalado no meu computador o CCS Demo. Não estou conseguindo compilar pois aparece uma mensagem dizendo que a verão demo expirou. Vocês tem alguma solução pra isso?
Olá Rafael, tente baixar do site downtronica. eles tem uma versão para download juntamente com o vídeo.
Caso precisar, estude pelo youtube que será mais rápido. Pelo canal MrAppleBr você aprenderá bem mais rápido.
É muito bom e utilizo desta ferramenta faz anos. Espero que seja útil para você!
http://www.downtronica.net/2011/05/ccs-c-compiler-478-ultima-versao-crack.html
https://www.youtube.com/playlist?list=PL4DE4A7AD9EE36E77
E uma mensagem de erro “Invalid option: out=build/default/production”
O meu caso é o mesmo que o seu!
Tentei rodar outros programas e não estava conseguindo, então resolvi fazer um exemplo básico e também não consegui.
Boa Noite!
No meu caso deu esse erro, “unable to resolve identifier output_bit” e não e não compilou. É meu primeiro projeto!
boa noite,
o meu esta apresentando esse erro e nao consigo encontra o arquivo .HEX, a minha vida e quando aparece esse erro mesmo assim ele cria o arquivo?
nbproject/Makefile-default.mk:99: recipe for target ‘build/default/production/PIC_LED.o’ failed
make[2]: Leaving directory ‘C:/Users/anaerubens/Desktop/tcc/mplab/PISCA LED.X’
nbproject/Makefile-default.mk:78: recipe for target ‘.build-conf’ failed
make[1]: Leaving directory ‘C:/Users/anaerubens/Desktop/tcc/mplab/PISCA LED.X’
mv: target `LED.X.production.cof’ is not a directory
make[2]: *** [build/default/production/PIC_LED.o] Error 1
make[1]: *** [.build-conf] Error 2
nbproject/Makefile-impl.mk:39: recipe for target ‘.build-impl’ failed
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 7s)
Comprei esse gravador, segui todos os passos das instruções e funcionou. Gravei um programa nele e tá rodando tranquilo.
Só tenho a elogiar!
ola ,tudo bem. Gostaria de saber se quando eu faço um programa para um pic qualquer
e ele funciona bem,grava tudo certinho no pic. É necessario usar o mplab ou o fixhex para reformular o arquivo hexa?? ,ou se eu nao fizer isso o programa no pic ira rodar ,mas com algum bug???
Prezado Felipe(flop):
Você poderia postar um link para fazer o download dos arquivos .hex ?
Só para adiantar o teste do gravador de PIC que comprei contigo e ainda não usei…
Antecipadamente grato.
Boa noite,
Não temos esses arquivos disponíveis. De qualquer forma, no tutorial você tem todas as informações para gerar os arquivos.
Grato.
Adilson – Equipe MakerHero
Boas!
Muito obrigado pelos tutoriais, recebi hoje o meu programador e consegui meter a funcionar! Até compilei a pic do programador para ter firmware mais recente. So tenho um problema de dizer qe nao encontrou porta COM mas dspois de ir a port e colocar, ela lá aparece. Mas no reset do programa dá sempre o erro :/
Exiate mais algum circuito simples e porreiro com pic16f628a ? Comprei 4 e como sou novo nisto nao sei o que inventar ou que tutoriais consigo seguir com essa pic!
Obrigado!
Bruno A.
(Já encontrei o circuito do display e dos push buttons! Se conhecer mais, agradeceria)
Ola a todos leitores deste blog.
Com este este gravador de Gravador de PIC USB 40 ZIF mas até hoje 30-12-2014 nunca gravou nada faz uns 2 anos que comprei. Nada funciona no meu Not .
Maravilha!
Comprei o de PIC USB 40 ZIF e estou utilizando para programar o PIC16F628A e PIC16F648A. Esta conforme o esperado, logicamente que fiz alguns ajustes mas isso depende do pc e também do S.O. No meu caso estou utilizando Windows 7 Ultimate SP1, CPU Intel i3 32 Bits.
Obrigado pelos esclarecimento sobre o PIC USB 40 ZIF quando liguei, valeu equipe FELIPEFLOP, vou recomentar para todos os meus alunos.
ops: MakerHero
Bom dia Odair,
Obrigado, qualquer dúvida, estamos à disposição.
Abraços.
Equipe MakerHero
Boa tarde, sim gostei , deu certo segui todos os passos , onde está o arquivo pra simular no Proteus?
Olá, João,
A qual arquivo você se refere?
Abraços!
Diogo – Equipe MakerHero
Parabens! Otimo post, fiz tudo conforme o tutorial e funcionou! já é um começo, vou aprimorar e entender tudo o que foi feito pra fazer as programações originais no CI, abraço!
Obrigado Marlon !
Abraço.
Adilson – Equipe MakerHero
Pergunto qual é a linguagem de programação utilizado no artigo Programando PIC 16F628A e mais, existe algum SITE que ensine a programar nesta linguagem???
Boa noite Geronimo,
A linguagem é C. Não podemos recomendar nenhum site especificamente para programar o PIC, mas na internet existem vários arquivos de exemplo que você pode usar como base para os seus programas.
Abraço.
Adilson – Equipe MakerHero
Boa tarde,
Como consigo o para instalar na minha máquina.
Valmir
Boa noite Valmir,
Parece que a mensagem veio incompleta. O que está precisando ?
Grato.
Adilson – Equipe MakerHero
Boa Tarde,
Não estou conseguindo instalar o CCS C. Quando eu entro no MPLAB ele dá uma mensagem de que o compilador não foi instalado. Meu PC é 64 bits.
Tive o mesmo problema, mas solucionei alterando a pasta C:Program Files (x86) para C:Program Files
Fiz todos os procedimentos presente neste post e não consigo selecionar o compilador CCS C Compiler. Em minha tela aparece (NONE FOUND) ao lado do compilador. O que pode ser?
Tive o mesmo problema, mas solucionei alterando a pasta “C:Program Files (x86)” para “C:Program Files” do instalador do CCS.
Caros, eu tenho o MPLAB instalado, e nas linhas a seguir, ele não reconhece os comandos informados.
output_bit(PINOLED, TRUE); // Liga o Led
delay_ms(5000); // Aguarda 3 segundos
output_bit(PINOLED, FALSE); // Desliga o Led
delay_ms(2000); // Aguarda 2 segundos
Ele informa que “output_bit” e “delay_ms” não existem, e da erro ao compilar.
alguem pode dizer o que pode ser?
Obrigado!
Boa tarde Magnaldo,
No nosso MPLAB essas linhas também apresentam erro, mas compilam normalmente. Talvez o erro esteja relacionado à algum outro problema durante a compilação.
Abraço.
Adilson – Equipe MakerHero