Una niña principiante quiere escribir un programa en lenguaje C que inicie y detenga el cronómetro usando un control de interrupción externo. Solo hay un botón para controlar el inicio y la parada. Han pasado dos días y aún no se ha activado. .
cargo sin firmar,shi,num,count,t;
código de carbón sin firmar Tab[]={0xC0,0xF9,0xA4,0xB0,0x99 ,0x92,0x82.0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void main()
{
TMOD=0x01; //T0, modo de trabajo 1
TH0=0xb1; //Tiempo de 20 ms
TL0=0xe0;
t=2; p>
EA=1; //Habilitar asignación total de interrupciones
ET0=1; //Permitir interrupción del temporizador T0
EX0=1; /p>
IT0=1;
IP=0x01; //La prioridad de interrupción externa es alta
P2=Tab[0];
P0=Tab[ 0];
num=0;
while(1) //Continúa llamando a la pantalla y espera la interrupción T0 para modificar los datos de la pantalla
{
shi=num/10; //Obtener dígitos de decenas
ge=num%10; //Obtener dígitos de unidades
P2=Tab[shi]; /P2 El puerto envía un código de visualización de datos de decenas de dígitos
P0=Tab[ge]; //El puerto P1 envía un código de visualización de datos de un solo dígito
}
}
void timer0() interrupción 1
{
TH0=0xb1;
TL0=0xe0;
count++ ;
if(count==50) //Suma a 50, que es 0. e.1 segundo
{ count=0;
num++;
if(num==60)
{num =0 ;}
}
}
void extern0(void) interrupción 0
{
t++;
if(t%2==0)
{
TR0=0;
P2=Tab[shi]; p>
p>
P0=Tab[ge];
}
else
{
TR0= 1;
}
}
He depurado el programa anterior y es exactamente lo que quieres. ¡Pruébalo! La interrupción externa 0 debe utilizar el puerto P3.2, no el puerto P1.1. Buena suerte. ¡Me entristece mucho responder a sus preguntas en este momento! jeje.