Salve galera,
Apenas para encerrar o tópico segue o programa completo para a rotina de 100us.
Este é um programa simplificado onde o P1_0 varia de acordo com o tempo alterado.
Por exemplo t=200= 200 x 100us = 20 ms
Atenção as variáveis ( float, int, char ) se forem usar em outros programas mais complexos, pois eu tive um problema assim quando incluir teclado, display e funções para calcular o tempo. estava usando float, mas tive que converter o resultado para int, para enviar para port.
[#include <stdio.h>
#include <at89x52.h>
#include <paulmon2.h>
/*ROTINA DE DELAY COM PARÂMETRO EM MILISEGUNDOS*/
void delay_100micros(unsigned int tempo);
void main (void)
{
char t=200;
while (1)
{
P1_0 = 1;
delay_100micros(t);
P1_0 = 0;
delay_100micros(t);
}
}
void delay_100micros(unsigned int tempo)
{
unsigned int c;
for (c=0 ; c<tempo; c++)
{
_asm
mov r7,#27
100$:
nop
djnz r7,100$
_endasm;
}
} ]
Valeu galera, espero que consiga contribuiu com alguma coisa depois, pois meu conhecimento é mínimo.
SDS,
Valdo[/code]