Red de conocimientos turísticos - Información de alquiler - Programa de cronómetro en lenguaje C del microcontrolador. ¡Solicite modificación! ¿Cómo puedo detener la cuenta regresiva y comenzar de nuevo cuando termine?

Programa de cronómetro en lenguaje C del microcontrolador. ¡Solicite modificación! ¿Cómo puedo detener la cuenta regresiva y comenzar de nuevo cuando termine?

#include

#define?uchar?unsigned?char

#define?uint?unsigned?int

uchar?seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//Mostrar 0-9 segmentos de código

uchar?count,time;

sbit?start=P3^4;

sbit?stop=P3^5;

sbit?reset=P3^6;

/***** Función de retardo*****

void?delay(uchar?k)

{

uchar?i,j ;?

for(i=0;i

}

void?main()

{ TMOD=0x01;?//Establecer en modo temporizador 1 TH0=0x3c;?// Oscilador de cristal 6MHz, tiempo de sincronización 100ms TL0=0xb0;IE=0x82;//Abrir Interrupciones globales e interrupciones programadas

time=24; count=0; while(1) {

if(start==0)?TR0=1;?//start switch

if(stop==0)?TR0=0;//interruptor de parada

if(reset==0)?time=24;//interruptor de reinicio

P2=0xfe;?//Mostrar números

P0=seg[time%10];?//Obtener el primer dígito del valor de tiempo y enviarlo al puerto P0

delay(2);

P2=0xfd;?//Mostrar dígitos de decenas

P0=seg[time/10] ?//Obtener el valor de tiempo de 10 dígitos y enviarlo al puerto P0

delay(2);

}

}

void?timer0()?interrupt?1

{ TH0=0x3c; TL0=0xb0; count++; if( count==10)?// Interrumpe 10 veces, es decir, 1s=10×100ms

{

count=0;// Borrar recuento

time--;// Restar 1 del valor del temporizador

if(time==0)?

{

time=24;?// Volver al valor inicial cuando el valor del tiempo disminuye a 0

TR0=0;

}?

}

}