Академический Документы
Профессиональный Документы
Культура Документы
{
if(flag>var){
//ya es 1 segundo?
var--;
//SI -> decremento var...
if(var<18)
var=10;
//...ajuste fino de 1s
flag=0;
//reset flag para contar 1s
i++;
//incrementos...
j++;
z++;
w++;
//...indices para mostrar en 7seg
if(i>3)
//Ha llegado fin tab7seg?
i=0;
//SI -> restaura indice i
if(j>3)
//Ha llegado fin tab7seg?
j=0;
//SI -> restaura indice j
if(z>3)
//Ha llegado fin tab7seg?
z=0;
//SI -> restaura indice z
if(w>3)
//Ha llegado fin tab7seg?
w=0;
//SI -> restaura indice w
}
set_timer0(61);
//reset TMR0
flag++;
//incremento variable flag
}
///PROGRAMA
void main(void)
{
int tab7seg[4]={0x76,0x3F,0x38,0x77};
//7seg H O L A
set_tris_b(0x00);
//portb como salida
set_tris_a(0x00);
//porta como salida
enable_interrupts(INT_TIMER0);
//interrupcion TIMER0 activada
setup_counters(RTCC_INTERNAL,RTCC_DIV_256); //configuracion interrupcion
TMR0
set_timer0(61);
//carga TMR0
enable_interrupts(GLOBAL);
//activadas interrupciones
do{
//bucle...
output_low(PIN_A0);
//activado...
output_high(PIN_A1);
output_high(PIN_A2);
output_high(PIN_A3);
output_b(tab7seg[ i ]);
//...1 7seg
delay_ms(10);
output_high(PIN_A0);
output_low(PIN_A1);
//activado...
output_high(PIN_A2);
output_high(PIN_A3);
output_b(tab7seg[ j ]);
//...2 7seg
delay_ms(10);
output_high(PIN_A0);
output_high(PIN_A1);
output_low(PIN_A2);
//activado...
output_high(PIN_A3);
output_b(tab7seg[ z ]);
//...3 7seg
delay_ms(10);
output_high(PIN_A0);
output_high(PIN_A1);
output_high(PIN_A2);
output_low(PIN_A3);
//activado...
output_b(tab7seg[ w ]);
//...4 7seg
delay_ms(10);
}while(TRUE);
//...infinito
}