Ayuda con un PIC 16F628

Hola que tal, veran estoy trabajando en un proyecto con un micro 16f628 en mikroC.

Parese todo funcionar a la perfeccion, lo simulo en el proteus, en el PIC SIMULATOR IDE, y todo marcha bien, pero resulta que cuando lo pongo en la proto (para verlo fisicamente) el pic responde algo extraño, me ejecuta mis salidas algo lento al accionar el interruptor en la entrada, de repente avienta voltaje por pines que no deben ser, pero como menciono anterior-mente en mi simulador marcha todo bien. No creo que tenga mal conectado algo en mi Proto-Board, es algo sencillo el circuito, encender 2 leds por medio de interrupciones, nada complicado, pero no entiendo porque tendre este resultado fisicamente, preciento que puede ser la configuracion del pic en el programa pero no esoty seguro.


agradeceria su apoyo en este caso, GRACIAS
 
Muchas veces olvidamos configurar el pin mclr, revisa que tenga su resistencia de pull up.

Otra cosa que debes revisar es que los pines del puerto A NO estén configurados como comparadores.

Los simuladores son buenos, pero no siempre muestran todo lo que debería ser.

Saludos!
 
Que interrupciones usas ? Si no configuras la palabra de configuracion a la hora de quemar el PIC intenta con la palabra 0x3D18 nunca me fallo a mi. Y como comenta mcpiebot no olvides revisar el MCLR
 
Gracias por su ayuda mcpiebot y 20deoctubre aqui les dejo el programa que estoy usando.

Hechame la mano para ver si no esoty usando los comparadores en el puerto A. ya que solo he estado revisando en interneet y copiando datos, ejejeje no se si estoy bien.

La idea del programa es que si tienes 2 interruptores y 2 leds, si el interruptor A se acciona el led A prende, Si el interruptor B se acciona el led B se prende.


Gracias de antemano.

void main ( void )
{
TRISA.F0 = 1;
TRISA.F1 = 1;
TRISB.F4 = 0;
PORTB.F4 = 1;
TRISB = 0;
CMCON = 0X07;

while( 1 )
{
if(PORTA.F0 == 1 && PORTA.F1 == 1){
PORTB.F1 = 1;
PORTB.F0 = 1;

}else{

if(PORTA.F1 == 1 && PORTA.F0 == 0){
PORTB.F1 = 1;
PORTB.F0 = 0;

}else{

if(PORTA.F1 == 0 && PORTA.F0 == 1){
PORTB.F1 = 0;
PORTB.F0 = 1;

}else{

if(PORTA.F1 == 0 && PORTA.F0 == 0){
PORTB.F1 = 0;
PORTB.F0 = 0;
}
}
}
}
}
}//~!
 
Hola fino071


Mira te dejo este programa para que lo compiles y la imagen con los registros que le active en MikroC...

PHP:
void main()
{
CMCON=7;
INTCON=0;
TRISA=3;
TRISB=0;
while(1)
{
if(PORTA==0)
{
PORTB=0;
delay_ms(10);
}
else if(PORTA==1)
{
PORTB=1;
delay_ms(10);
}
else if(PORTA==2)
{
PORTB=2;
delay_ms(10);
}
else if(PORTA==3)
{
PORTB=3;
delay_ms(10);
}
}
}


Como recomendacion lee manuales de programacion en C porque veo unas cosillas por alli que no me parecen... (muchos "}")


Saludos...
 

Adjuntos

  • Registros PIC16F628.zip
    41 KB · Visitas: 83
Atrás
Arriba