Error con interrupciones 16f877

#1
Buenas tardes a todos.

He estado realizando peruebas con este pic 16f877 y vengo del 8051... el problema es que estoy programando en c todo los programas, estoy comenzando con cosas sencillas para ir poco a cpoco a más.......
Ahora os cuento mi problema (debo decir que me he leido todos los post relacionados con el pic y c....). Deseo crear un programa que mediante una interrupción externa (pulsador)conectado al pin rb0 valla contando las veces que pulse el boton y ponga el rersultado en el puerto D en binario, el tema es que cuando me lo pongo a analizar con proteus, ess como si no funcionara el pulsador y me da problemas.... el circuito que he diseñado en proteus es sencillo (aun no lo puedo colgar que no tengo suficientes posts....)alimentación al pulsador y de los bits del puerto d un led a cada uno y a masa...

Bueno, a ver si me podeis iluminar de la tontería que acabo de hacer.... aqui os la dejo:

#pragma chip PIC16f877
#pragma config=0x3f71
#pragma interruptSaveCheck n

// Declaración de prototipos de funciones
#pragma origin 4
unsigned cont;

interrupt puls (void)
{
INTF=0;
cont=cont+1;
PORTD=cont;
}

void main (void)
{
cont=0;
OPTION_REG=0X40;
TRISA=0XC0;
TRISB=0x01;
TRISD=0X00; //puerto d como salidas
GIE=1;
PEIE=1;
INTCON=0x10; //interrupcion externa por rb0

while(1);
}
 
#2
hola!!! vendría bien que dijeras en que compilador estas programando ya que cada uno es un mundo.

Un saludo
 
#5
Pues claro..... edito un archivo nuevo y lo guardo con la extensión *.c y la añado a los source files... es muy útil para simular el programa con proteus. De todas formas las directivas del ensamblador están bien, pero lo que me falla es el código fuente.

Da un vistazo al código abierto ver donde puedo fallar...... mira que le estoy dando vueltas al programa.....
 
#7
es lo que me pasa a mi, por lo que he leído debería funcionar.... pero bueno voyy a dejar aqui la foto del proteus.... deciros que cambie esa fuente de alimentación por la de una batería y todo..... pero nada, el tema sigue igual....


Por cierto..porqueesa negativa al proteus...????... lo pregunto porque soy novato y de momento me ha funcionado bien pero si me aconsejas un programa que sea más estable lo agradezco :)
 
#9
No es negativa... El proteuss simplemente no sirve. Simula mal e interpreta los codigos aun peor.
Repito, usa el depurador de mplab. Y si ahi si funciona, implementa directamente el circuito.
 
#10
bueno, por lo menos en el mplab no me ha dado fallos al depurar.... ahora mismo la verdad no tento tiempo para crear el circuito pero tarde o temprano lo haré.
Muchas gracias
 
#11
es lo que me pasa a mi, por lo que he leído debería funcionar.... pero bueno voyy a dejar aqui la foto del proteus.... deciros que cambie esa fuente de alimentación por la de una batería y todo..... pero nada, el tema sigue igual....


Por cierto..porqueesa negativa al proteus...????... lo pregunto porque soy novato y de momento me ha funcionado bien pero si me aconsejas un programa que sea más estable lo agradezco :)
No hagas eso de usar una batería o fuente, usá "GROUND" y "POWER" en el menú de la izquierda en "TERMINALS", porque la alimentación del micro internamente está conectada a esos, y si lo hacés de otra forma vas a tener varios problemas de simulación, y al hacer el impreso no te va a dejar unir las nets.

Estoy casi seguro que ese es el problema, si sabés usar BIEN el proteus no es tan malo, solamente tienen un par de bugs en las simulaciones de núcleos de CPU, pero si los reportas lo arreglan para la siguiente versión seguramente.

Proteus es relativamente malo/lento para simulación de circuitos analógicos, o mezcla.
 
Última edición:
#12
Persona que se basa en proteuss para simular programas, es persona que termina con problemas de implementacion. Por eso desde un inicio, yo rechazo las pruebas en proteuss.
 
#13
si te digo la verdad.... antes de poner esa fuente de alimentación le puse los ground y power que me dices.. pero seguía pasando lo mismo.....me quedo con lo que dice antiworldx
 

Temas similares

Arriba