Hola, estoy realizando unas pruebas para un proyecto que tengo en mente y para ello antes estoy provando con leds. Se trata de mediante un pic(16f876A) encender 8 led conectados a cada una de las salidas del puerto B cuando le llegue 1 impulso a RA0. Posteriormente se deben ir apagando en orden, primero RB0 a los 2 minutos y el resto en intervalos de 30 segundos.
El problema es el siguiente, lo programo con un delay de 120000ms( 2 minutos) para el primer led y sin embargo se me apaga a los 55 segundos mas o menos. El resto de leds si se apagan en sus correspondientes 30 segundos. ¿ Sabrian decirme cual es el problema? Falla tanto en el simulador como en la practica y siempre siempre siempre falla el primer led que debe apagarse a los 2 minutos ya lo conecte en RB0,RB1 o el que sea.
Les paso la programacion para que la vean y muchas gracias de antemano:
#include <16F876A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#include <BICI.h>
void main()
{
InicializarPuertos();
while(true)
{
EncenderBICI();
}
}
void EncenderBICI()
{
if(!input(INTER1))
{
output_high(T0);
output_high(T1);
output_high(T2);
output_high(T3);
output_high(T4);
output_high(T5);
output_high(T6);
output_high(T7);
delay_ms(120000);
output_low(T0);
delay_ms(30000);
output_low(T1);
delay_ms(30000);
output_low(T2);
delay_ms(30000);
output_low(T3);
delay_ms(30000);
output_low(T4);
delay_ms(30000);
output_low(T5);
delay_ms(30000);
output_low(T6);
delay_ms(30000);
output_low(T7);
}
}
void InicializarPuertos()
{
set_tris_a(0x1f); // todo el puerto A como entrada
set_tris_b(0x00); // todo el puerto B como salida
}
El problema es el siguiente, lo programo con un delay de 120000ms( 2 minutos) para el primer led y sin embargo se me apaga a los 55 segundos mas o menos. El resto de leds si se apagan en sus correspondientes 30 segundos. ¿ Sabrian decirme cual es el problema? Falla tanto en el simulador como en la practica y siempre siempre siempre falla el primer led que debe apagarse a los 2 minutos ya lo conecte en RB0,RB1 o el que sea.
Les paso la programacion para que la vean y muchas gracias de antemano:
#include <16F876A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#include <BICI.h>
void main()
{
InicializarPuertos();
while(true)
{
EncenderBICI();
}
}
void EncenderBICI()
{
if(!input(INTER1))
{
output_high(T0);
output_high(T1);
output_high(T2);
output_high(T3);
output_high(T4);
output_high(T5);
output_high(T6);
output_high(T7);
delay_ms(120000);
output_low(T0);
delay_ms(30000);
output_low(T1);
delay_ms(30000);
output_low(T2);
delay_ms(30000);
output_low(T3);
delay_ms(30000);
output_low(T4);
delay_ms(30000);
output_low(T5);
delay_ms(30000);
output_low(T6);
delay_ms(30000);
output_low(T7);
}
}
void InicializarPuertos()
{
set_tris_a(0x1f); // todo el puerto A como entrada
set_tris_b(0x00); // todo el puerto B como salida
}