Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

Ayuda con PIC16F877a

Patasmx

Bovino maduro
Desde
10 Jun 2007
Mensajes
186
Bakunos, necesito su ayuda. Tengo que hacer un semáforo con el pic16f877a y ya tengo mi código que simulado en Proteus si funciona... Pero al escribirlo en el PIC no hace nada de lo que debería...
Quisiera saber si me falta algo en mi código para lograr que funcionne, aqui les dejo mi codigo

#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP //tipo de cristal externo high speed, perro guardian off, sin proteccion etc..
#use delay(clock=4000000)


int c=0;

void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
do{
//Ciclo 1 Led verde 1 y Led rojo 2 encendidos
for(c=0;c<3;c++){
output_high(pin_c0);
output_high(pin_c5);
output_b(c);
delay_ms(500);
}

//Ciclo 2 parpadeo del Led verde 1, led rojo 2 encendido
for(c=0;c<3;c++){
output_low(pin_c0);
delay_ms(200);
output_high(pin_c0);
delay_ms(200);
output_b(c);
delay_ms(500);
}
output_low(pin_c0);


for(c=0;c<3;c++){
output_high(pin_c1);
output_b(c);
delay_ms(500);
}
output_low(pin_c1);
output_low(pin_c5);


for(c=0;c<3;c++){
output_high(pin_c3);
output_high(pin_c2);
output_b(c);
delay_ms(500);
}

for(c=0;c<3;c++){
output_low(pin_c3);
delay_ms(200);
output_high(pin_c3);
delay_ms(200);
output_b(c);
delay_ms(500);
}
output_low(pin_c3);

for(c=0;c<3;c++){
output_high(pin_c4);
output_b(c);
delay_ms(500);
}
output_low(pin_c4);
output_low(pin_c2);


}while(true);

}

Si alguien me puede ayudar se lo agradeceria mucho!
 
estuve viendo el codigo y creo que lo que te hase falta es configurar las entradas y salidas y tambien los registros de los puertos te envio el codigo con esos detalles resueltos.


#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP //tipo de cristal externo high speed, perro guardian off, sin proteccion etc..
#use delay(clock=4000000)
#byte porta=5
#byte portb=6
#byte portc=7
#byte portd=8
#byte porte=9

int c=0;

void main()
{
set_tris_c(0x00);
set_tris_b(0x00);
portc=0;
portb=0;
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
do{
//Ciclo 1 Led verde 1 y Led rojo 2 encendidos
for(c=0;c<3;c++){
output_high(pin_c0);
output_high(pin_c5);
output_b(c);
delay_ms(500);
}

//Ciclo 2 parpadeo del Led verde 1, led rojo 2 encendido
for(c=0;c<3;c++){
output_low(pin_c0);
delay_ms(200);
output_high(pin_c0);
delay_ms(200);
output_b(c);
delay_ms(500);
}
output_low(pin_c0);


for(c=0;c<3;c++){
output_high(pin_c1);
output_b(c);
delay_ms(500);
}
output_low(pin_c1);
output_low(pin_c5);


for(c=0;c<3;c++){
output_high(pin_c3);
output_high(pin_c2);
output_b(c);
delay_ms(500);
}

for(c=0;c<3;c++){
output_low(pin_c3);
delay_ms(200);
output_high(pin_c3);
delay_ms(200);
output_b(c);
delay_ms(500);
}
output_low(pin_c3);

for(c=0;c<3;c++){
output_high(pin_c4);
output_b(c);
delay_ms(500);
}
output_low(pin_c4);
output_low(pin_c2);


}while(true);

}}

lo acabo de probar en mi tarjeta y funciono, si sigue sin funcionara revisa los capacitores ceramicos que sean de 22pf
y si no responde y te ayudo a buscar el error.
 
estuve viendo el codigo y creo que lo que te hase falta es configurar las entradas y salidas y tambien los registros de los puertos te envio el codigo con esos detalles resueltos.


#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP //tipo de cristal externo high speed, perro guardian off, sin proteccion etc..
#use delay(clock=4000000)
#byte porta=5
#byte portb=6
#byte portc=7
#byte portd=8
#byte porte=9

int c=0;

void main()
{
set_tris_c(0x00);
set_tris_b(0x00);
portc=0;
portb=0;
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
do{
//Ciclo 1 Led verde 1 y Led rojo 2 encendidos
for(c=0;c<3;c++){
output_high(pin_c0);
output_high(pin_c5);
output_b(c);
delay_ms(500);
}

//Ciclo 2 parpadeo del Led verde 1, led rojo 2 encendido
for(c=0;c<3;c++){
output_low(pin_c0);
delay_ms(200);
output_high(pin_c0);
delay_ms(200);
output_b(c);
delay_ms(500);
}
output_low(pin_c0);


for(c=0;c<3;c++){
output_high(pin_c1);
output_b(c);
delay_ms(500);
}
output_low(pin_c1);
output_low(pin_c5);


for(c=0;c<3;c++){
output_high(pin_c3);
output_high(pin_c2);
output_b(c);
delay_ms(500);
}

for(c=0;c<3;c++){
output_low(pin_c3);
delay_ms(200);
output_high(pin_c3);
delay_ms(200);
output_b(c);
delay_ms(500);
}
output_low(pin_c3);

for(c=0;c<3;c++){
output_high(pin_c4);
output_b(c);
delay_ms(500);
}
output_low(pin_c4);
output_low(pin_c2);


}while(true);

}}

lo acabo de probar en mi tarjeta y funciono, si sigue sin funcionara revisa los capacitores ceramicos que sean de 22pf
y si no responde y te ayudo a buscar el error.
 
buenas noches estoy consultando su tema y me interesa saber si funcionó o no el proyecto quiero saber a cerca de tu simulacion en proteus.. puedes subir una foto de ella?
 
Volver
Arriba