Dúvida C18

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Dúvida C18

Mensagempor ÁgioFelipe » 05 Ago 2010 13:42

Pessoal, estou apredendo C18 para usar com o PIC18F4550 (antes usava CCS para o 877A).
Vi que meu programa só compila se eu incluir lá no MPLAB o arquivo p18F4550.lkr, o que esse arquivo faz?
Quando usava o CCS lá no mplab era bem simples, era só selecionar a ferramenta de compilação e pronto. Tem como não precisar incluir esse arquivo lkr?

Valeu.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor ÁgioFelipe » 08 Ago 2010 22:21

Ninguém pode ajudar?
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor Andre_Cruz » 08 Ago 2010 23:22

ÁgioFelipe,

Também estou iniciando agora no compilador da microchip o C18, tive a mesma dúvida, vendo o "MPLAB_C18_Getting_Started_51295f.pdf" no site da microchip, indica que os arquivos com extensão "lkr", contem os registradores e suas respectivas posições de memória, meu inglês é péssimo mas foi isso que eu entendi.
Acho que é como os arquivos com extesão "inc", do assembler.

Caso eu esteja errado ou com resposta incompleta, o pessoal do fórum ajudará a saber a funcão desse arquivo.

Abraço

André Cruz
Andre_Cruz
Word
 
Mensagens: 559
Registrado em: 03 Jan 2009 14:06

Mensagempor ÁgioFelipe » 09 Ago 2010 09:00

Olá André, então vamos aprender juntos!

Eu acho que não, o endereço dos resistradores é dito através da diretiva: #include <p18F4550.h> ou #include <p18cxxx.h> que funciona para todos os modelos 18F.
Também, consegui em um dos pcs lá do trabalho, compilar um projeto sem incluir o arquivo *.lkr, vou ver aqui como é e te digo.

Até mais.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor tcpipchip » 09 Ago 2010 10:18

Imagine que o LKR tem as definições dos registradores do processador.
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor ÁgioFelipe » 09 Ago 2010 11:19

Acho que não, consegui compilar sem incluir o *.lkr.
Project > Build Options > Project > MPASM/C17/C18 Suite
marcar a opção Build library target (invoke MPLIB)
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor tcpipchip » 09 Ago 2010 13:19

Sim, se voce nao fizer referencia externa ele nao será necessário...
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor Sergio38br » 09 Ago 2010 13:40

Agio vc com isto criou apenas um biblioteca, para gerar o objeto vai precisar do lkr. e se usar os .h das bibliotecas prontas...

[ ]'s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor ÁgioFelipe » 09 Ago 2010 14:18

Agora vocês me confudiram todo...

tcpipchip
Que referência externa por exemplo?

Sergio
Que objeto???
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor tcpipchip » 09 Ago 2010 14:25

extern, ou funções que está em outras LIBs...
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor ÁgioFelipe » 15 Ago 2010 15:08

Olá, tenho outra dúvida para vocês me ajudarem aqui no C18.

Código: Selecionar todos
PORTBbits.RB0 = 1;
Delay10KTCYx(50);      
PORTBbits.RB1 = 1;

Quando essa última instrução é executada (RB1=1) automaticamente RB0 vai a zero, isto está certo? O C18 funciona assim mesmo?
E se eu quisesse permanecer com RB0 em 1?
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor ÁgioFelipe » 20 Out 2010 09:50

Outra dúvida:

LCD_DATA4_IO = ((Data & 0x10) == 0x10);

O que esse linha faz?

E essa outra:

uiValorAD = (unsigned int) ADRES;
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor ivan » 20 Out 2010 12:26

Código: Selecionar todos
PORTBbits.RB0 = 1;
Delay10KTCYx(50);     
PORTBbits.RB1 = 1;

Quando essa última instrução é executada (RB1=1) automaticamente RB0 vai a zero, isto está certo?


Não

E se eu quisesse permanecer com RB0 em 1?

Faz como está no código.

Código: Selecionar todos
LCD_DATA4_IO = ((Data & 0x10) == 0x10);

a) (Data & 0x10)

b) ((Data & 0x10) == 0x10);


a) Uma AND entre Data e 0x10(2 em decimal) - Esta operação zera o primeiro bit, o menos significativo, e extrai o valor do segundo bit, se "0" ou "1".

b) Compara se no passo acima o resultado é igual 0x10

e finalmente o resultado de uma comparação é "0" se forem diferentes e "1" se forem iguais, atribuindo este valor, o resultado da comparação, à LCD_DATA4_IO.

Código: Selecionar todos
uiValorAD = (unsigned int) ADRES;


Converte o tipo de dado, seja ele qual for, de ADRES para o tipo inteiro sem sinal.

Para programar em C, antes é preciso ler uma apostila de linguagem C.
http://www.google.com.br/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http%3A%2F%2Fwww.inf.ufsc.br%2F~fernando%2Fine5412%2FC_UFMG.pdf&rct=j&q=apostila%20linguagem%20c%20ufmg&ei=qgm_TNicF8K88gao8dm7Bg&usg=AFQjCNH6_InTN9l_eTQOsXQJS7MMvPzLrA&cad=rja

Boa leitura!
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27

Mensagempor ÁgioFelipe » 15 Dez 2011 15:07

Mais uma dúvida:

Se fizer isto:

float Freq;

Freq = 1/2;

Vai mostrar no final o valor da variável Freq como sendo 0, e não 0.5 como esperado. Agora se fizer assim dá certo:

Freq = 2;
Freq = 1/Freq;

Freq no final será 0.5 . Alguém sabe o porque?
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor ÁgioFelipe » 15 Dez 2011 15:26

Mais uma dúvida:

Se fizer isto:

float Freq;

Freq = 1/2;

Vai mostrar no final o valor da variável Freq como sendo 0, e não 0.5 como esperado. Agora se fizer assim dá certo:

Freq = 2;
Freq = 1/Freq;

Freq no final será 0.5 . Alguém sabe o porque?
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x