TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fersu en 30 de Noviembre de 2014, 05:26:02
-
Soy nuevo en esto. no me deis mucha bronca.
lo que quiero es tener un led encendido y que me de 2 pulsos a 0 de 50ms y que siga encendido hasta los siguientes 2 pulsos. de momento de forma automatica, despues ya lo controlare con un pulso High en una entrada
tengo el siguiente código y al compilar me da problemas en la linea 8 lo compilo para un pic 16F84A
#include <htc.h>
#define_XTAL_FREQ 4000000
void main()
{
TRISB=0X00;
PORTB=0X00;
while(1)
{ PORTB=0XFF;
__delay_ms(1000);
PORTB=0X00;
__delay_ms(50);
PORTB=0XFF;
__delay_ms(50);
PORTB=0X00;
__delay_ms(50);
}
}
que estoy haciendo mal?
-
La unica que se me ocurre es que estes superando el limite de ciclos que puede manejar la funcion.
Tengo entendido que __delay_ms(x) funciona a traves de delay(x) o como se llame, este ultimo cuenta los ciclos de reloj en ves de tiempo, al llamar al de ms este calcula la cantidad de ciclos y usa la funcion delay(). Donde el maximo es de 197120 ciclos
Para tu caso serian 1 millon de ciclos. Podrias probar poner 10 delays de 100ms y ver si te envia el mismo error.
Y no entiendo por que el uso de Hi-tech c, mas cuando estas empezando te deberias ir directamente por XC8 (y aprender este y no volverte a aprender todo de nuevo) que vendria a ser la mejora de este, o lo que le da soporte microchip ahora. En XC8 el programa es igual, nomas que el inclide es xc.h