Diseñe un cronómetro con microcontrolador que pueda mostrar el tiempo de 0,0 a 59,9 segundos

P3 está conectado al código de palabra y P2 está conectado al código de bits. No hay ninguna función de botón adicional.

#include?lt;reg51.hgt;

#define?uchar?unsigned?char

#define?uint?unsigned?int

//Tabla de fuentes de tubo digital, correspondiente a 0, 1, 2, 3, 4, 5, 6, 7, 8, 9//

uchar?Table[10]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};

uint?Data[2]={0, 0};?

datos?Buffer [1]={0};

uint?TIME=0;?//Tiempo de cuenta regresiva

uint?j;

sbit?BEEP=P1^ 2;?

sbit?Point=P3^7;

void?DelayMs(uint?i?)

{ for(;i!=0; i--) {for(j=100;j!=0;j--)?{;}}?

}

void?Display(uint?*p) ?//Función de visualización dinámica, el parámetro p es el nombre de la matriz que se mostrará

{ P2=0xfe; P3=Table[p[2]];?//Enviar código de fuente DelayMs(3) ;? P2=0xfb; P3=Table[p[1]];?//Enviar código de fuente Point=0; DelayMs(3);?//Mostrar retraso P2=0xfd;? ; DelayMs(3);? }

void?Proceso(uint?i, uint?*p)?

{ p[0]=i/100; p[1]=i/10; p[2]=i10;

}

vacío?principal(vacío)? { EA=1;?IT1=1;?ET0 =1; TMOD=0x01;?//T0 modo 1 temporización 0,01 segundos? TH0=65536-5000/256; TL0=65536-5000256;

TR0=1;?//Habilitar interrupción e inicio de temporización ¿Dispositivo? while(1)

{

Proceso(TIEMPO, Datos

Pantalla(Datos); ;599)

{

TIEMPO=0;

}?

}

}

/*?Subrutina de servicio de interrupción del contador del temporizador 0?*/

void?intserv1(void)?interrupt?1?using?1

{

TH0=65536-5000/256;

TL0=65536-5000256;

Buffer[0]=Buffer[0] 1;?//?Asignación del temporizador T0 de los cuatro bits inferiores

if?(Buffer[0]==10)//?Cien segundos transportan {TIME =1;

Buffer[0]=0 } <; /p>

}