por gabriel_paz » 17 Nov 2007 09:57
Geralmente nos compiladores C para 8051, não existem esses tipos de funções prontas, você precisa criá-las, gerar tempos sem o uso do Timer é complicado, fica difícil de estimar o tempo real de execução, a seguir tem uma rotina para geração de tempos com base em 1ms, com o uso do Timer do microcontrolador, mas as bases de cálculo foram feitas para uso de cristal de 12MHz.
void delay_ms(unsigned char m_segundos) //Função de geração de tempo - base 1ms
{
// A variável m_segundos é a entrada do parâmetro de quantos milissegundos serão gerados
unsigned int carga_inicial=(65535-1000); // Variável de carga inicial do Timer
while(m_segundos)
{
TL0=carga_inicial; // Carregamento do parte baixa do valor inicial de contagem
TH0=carga_inicial>>8; // Carregamento do parte baixa do valor inicial de contagem
TR0=1; // Ligação do Timer
while(!TF0); // Verificação do fim da contagem a partir do estouro do flag, necessário apenas quando não usamos a interrupção do Timer
TR0=0; // Desligao o timer
TF0=0; // Zera o flag
m_segundos--; // Decrementa a variável
}
}
Um abraço.
Gabriel