Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

20/08/2010 #1


Duda básica HI-TECH C con PIC 16F877A --> __delay_ms(x)
Estimados, quisiera ver si alguien me pudiese responder una duda.
Realicé un programa, para aprender a utilizar el pic, que realiza un "blinkeo" de dos leds alternadamente (RB1 y RB2). Leyendo manuales resultó con el siguiente código:

#include <htc.h>

__CONFIG(HS);

#define _XTAL_FREQ 20000000

void _delay_ms(unsigned long n);

void main(void)
{
TRISB=0;
while(1)
{
RB1=1;
RB2=0;
__delay_ms(25);
__delay_ms(25);
__delay_ms(25);
__delay_ms(25);
RB1=0;
RB2=1;
__delay_ms(25);
__delay_ms(25);
__delay_ms(25);
__delay_ms(25);
}
}


Por qué utilicé tanto delay? Porque al compilar me arrojaba un warning [1355] "inline delay argument too large" que provocaba un desconocimiento de la función __delay_ms(x).

Mi duda es por qué me aparece este error. Descubrí que el programa me resulta al colocar valores menores a 40 para el delay.

Espero sus consejos y recomendaciones (muy novato)

Gracias!!
23/08/2010 #2


Respuesta: Duda básica HI-TECH C con PIC 16F877A --> __delay_ms(x)
Esas son las limitaciones que tiene esa funcion delay. Acepta solo delays pequeños.
Mejor créate una funcion como la que estabas esbozando. Algo asi.
void delay_ms(unsigned int t)
{
while(t--)
__delay_ms(1);
}
Esta te acepta delays de hasta 65536ms.
31/08/2010 #3


Respuesta: Duda básica HI-TECH C con PIC 16F877A --> __delay_ms(x)
Gracias! Me aclara mucho tu respuesta.
Saludos!!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.