Página 1 de 1

uVision C51 - Delay

MensagemEnviado: 17 Jul 2015 17:58
por zachary
Boa noite pessoal!

Função de delay para uVision C51, alguém tem alguma sugestão?


Obrigado


Zac

Re: uVision C51 - Delay

MensagemEnviado: 17 Jul 2015 19:56
por andre_luis
A constante abaixo tem de ser ajustada para cada valor de cristal:

cpp code
void Delay ( long ndelay )
{
for(long i=0;i< CALIBRAR;i++)
{
__NOP();
}
}

Re: uVision C51 - Delay

MensagemEnviado: 20 Jul 2015 18:18
por zachary
andre_teprom escreveu:A constante abaixo tem de ser ajustada para cada valor de cristal:

cpp code
void Delay ( long ndelay )
{
for(long i=0;i< CALIBRAR;i++)
{
__NOP();
}
}



Obrigado André,

Me diga uma coisa, não tenho experiência com o Keil, não terei problemas com a otimização do compilador?
Não será necessário por alguma diretiva para para que o compilador não otimize o código?


Mais uma vez obrigado,


Zac

Re: uVision C51 - Delay

MensagemEnviado: 23 Jul 2015 14:54
por ze
delay, perda de tempo, um trocadilho idiota de um homônimo
Veja a lesma lerda da (estranha) opção do andré de um ponto de vista diferente...
Código: Selecionar todos
void delay(unsigned char dl) //int, long
{
while (dl--);//asm("nop") para microajustes se necessário
}

Há anos mexi com o keyl. Me lembro vagamente que as otimizações você controla nas opções do projeto na IDE mesmo. Não precisa diretivas

Re: uVision C51 - Delay

MensagemEnviado: 23 Jul 2015 15:10
por edsont
andre_teprom escreveu:A constante abaixo tem de ser ajustada para cada valor de cristal:

cpp code
void Delay ( long ndelay )
{
for(long i=0;i< CALIBRAR;i++)
{
__NOP();
}
}


Não estaria faltando usar o parâmetro ndelay? Ou CALIBRAR é função de ndelay?

Re: uVision C51 - Delay

MensagemEnviado: 01 Ago 2015 16:36
por andre_luis
edsont escreveu:Não estaria faltando usar o parâmetro ndelay? Ou CALIBRAR é função de ndelay?


tá certo, corrigi só agora que voltei de viagem e vi o erro...

cpp code
void Delay ( long ndelay )
{
for(long i=0;i< ndelay ;i++)
{
for(long j=0;i< CALIBRAR;j++) __NOP();
}
}