En el siguiente programa (el temporizador para la insoladora) ando de pruebas con un solo display 7-segmentos:
Codigo:
#INT_RTCC
void control_rtcc(void)
{
set_timer0(131);
switch(contador)
{
case 0: contador = 125;
--seg;
}
--contador;
}
void main(void)
{
set_tris_a(0x00); // Puerto A todo salidas
port_b_pullups(TRUE); // Resistencias de polarización
set_tris_b(0xFE); // Todo entradas excepto RB0 (zumbador)
set_tris_c(0x00); // Puerto C todo salidas
port_a=0;
port_b=0;
port_c=0;
seg = 9;
Disp4_On;
contador = 125;
setup_counters(RTCC_INTERNAL, RTCC_DIV_64);
enable_interrupts(INT_RTCC);
set_timer0(131); // (256-131)*125*64 = 10000uS
enable_interrupts(GLOBAL);
while(1) port_c = digitos[seg];
Como vereis, el switch del codigo (en negrita) es un poco estraño, aunque valido, de hecho funciona bien, pero cuando lo cambio por un if(contador = 0) deja de funcionar, por lo que no entiendo nada de nada
esto me supera