Hola!
Necesitaría un poco de ayudar para solucionar un código que tengo hecho para el pic18f2550. Lo que quiero hacer no es más que un contador que cuando se pulse un boton, sume uno al contador por interrupcion externa de la patilla RB0.
Al intentarlo, no me sale señales de salida por las patillas del puerto b (RB4,RB5,RB6,RB7) que son las que están destinados a darle números al display, mientras que el puerto A se encarga de encender cada display
#include <18f2550.h> //pic a utilizar
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador
#use delay (clock=4000000) //Fosc=4Mhz
#use standard_io(a)
#use standard_io(b)
#use fixed_io(a_outputs=PIN_A0,PIN_A1,PIN_A2,PIN_A3)
#use fixed_io(b_outputs=PIN_B4,PIN_B5,PIN_B6,PIN_B7)
///VARIABLES GLOBALES
int a=0,b=0,c=0,d=0; //variable para almacenar los numeros que deben tener cada display
int tabBCD[10]={0b0000,0b0001,0b0010,0b0011,0b0100,0b0101,0b0110,0b0111,0b1000,0b1001};//BCD 0-9 en binario
int tabTrans[4]={0b0000,0b0001,0b0010,0b0011}; //BCD para encender los displays
///LLAMADA FUNCION INTERRUPCION
#INT_EXT
EXT_isr()
{
a++; //incremento contador indice tabBCD
if(a>2){ //¿se ha superado el limite de 9?
a=0; //SI -> restaura valor indice(para mostrar digito 0)
b++;
}else if(b>2){ //y pregunta por los demas display
b=0;
c++;
}else if(c>2){
c=0;
d++;
}else if(d>2){
d=0;
}
}
//--CONFIGURACIÓN--\\
void main(void)
{
enable_interrupts(int_ext); //activar interrupcion externa
ext_int_edge(L_TO_H); //configuracion:interrupcion cuando señal esta en alta
enable_interrupts(GLOBAL); //todas las interrupciones desactivadas
set_tris_b(0x0F); //portb como salida los ultimos 4 bits, 00001111
set_tris_a(0x00); //porta como salida
//--PROGRAMA PRINCIPAL--\\
do{ //bucle...
output_a(tabTrans[0]);
output_b(tabBCD[a]); //...1º 7seg
delay_ms(10);
output_a(tabTrans[1]);
output_b(tabBCD[b]); //...2º 7seg
delay_ms(10);
output_a(tabTrans[2]);
output_b(tabBCD[c]); //...3º 7seg
delay_ms(10);
output_a(tabTrans[3]); //activado...
output_b(tabBCD[d]); //...4º 7seg
delay_ms(10);
}while(TRUE); //bucle infinito esperando interrupcion
}
Agradezco todo posible ayuda =S