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>
}