Hola, quisiera que me ayudaran a resolver un problema que tengo, resulta que tengo un problema con la funcion delay_ms(1000);, el problema radica en que en lugar de esperarse 1 segundo se espera 4, realice un programa sencillo para averiguar si tenia algún problema de configuración, como información adicional he probado con un oscilador de 4 Mhz y uno de 20 Mhz, configurando su respectivo #use delay(clock=4000000), físicamente tengo el oscilador con capacitores de 22pF, a continuación les dejo mi código de ejemplo, espero me puedan ayudar, gracias
/////////////////////////////////////////////////////////////////
// programa para prender un led y apagarlo cada segundo //
// //
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
///// Created by Uriel //////////////
///// //////////////
/////////////////////////////////////////////////////////////////
#include <18F4550.h>
#Fuses HS, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDIV, PLL1, CPUDIV1, VREGEN
#use delay(clock=4000000)
void main()
{
DO{
// enciende led conectado a RB1
output_high(PIN_A1);
delay_ms(250);
output_low(PIN_B5); // enciende led conectado a RB1
delay_ms(10);
if(input(PIN_B4)==0){
output_low(PIN_B1);
}else{
output_high(PIN_B1);
}
output_low(PIN_A1);
delay_ms(250);
}
while (TRUE);
}
/////////////////////////////////////////////////////////////////
con el código anterior logro el retardo de 1 segundo, pero debería de ser solo de 250 mili-segundos, por cierto a excepción del tiempo todo funciona bien, un led parpadea y el otro enciende dependiendo de un botón que tengo conectado.