Red de conocimiento informático - Material del sitio web - Cómo hacer un temporizador de cuenta regresiva usando un microcontrolador

Cómo hacer un temporizador de cuenta regresiva usando un microcontrolador

Este es un programa en lenguaje C que cuenta atrás 60 segundos. TO se utiliza para 60S más 1. T1 se utiliza para visualización. P0 está conectado a * * * selección de segmento de tubo digital. P2 está conectado a la selección de bits del tubo digital. Todas las interfaces son válidas a bajo nivel. Después de la depuración en la placa experimental, no se produjeron errores.

// = = = = declarar área = = = = = = = = = = = = =

# include & ltreg 51. H & gt; p>#Definir segmento P0

#definir recuento 50000//Declarar el valor inicial de T0.

#define TH_M1 (recuento 65536)/256

#define TL_M1 (recuento 65536)%256

#define recuento_M2 250

#Definir TH_M2 (256-count_M2)

#Definir TL_M2 (256-count_M2)

recuento de caracteres _ t 1 = 0;

char TAB[ 10] ={0xc0, 0xf9, 0xa4, 0xb0, 0x99,

0x92, 0x82, 0xf8, 0x80, 0x 90};

int count _ T0 //Número de interrupciones

p>

char disp[4]={0xc0, 0xc0, 0xc0, 0xc 0}; //área a mostrar

char segundos = 0 //segundos

char minutos = 0; // minutos

char scan = 0xf7

int I = 0

escáner de vacío (void); Función de visualización de declaración

//= = = = = = =Cinta principal= = = = = = = = =

Main()

{ EA = 1 ;

ET0 = 1;

et 1 = 1;

TMOD = 0x 21;

TH0 = TH_m 1; /p>

TL0 = TL_m 1;

TH0 = TL0 = TH_M2

TL0 = TL_M2

tr 1; = 1;

TR0 = 1;

mientras(1);

}

//= = = = = 60s a 1 enviado al área a mostrar = = = = = = = =

void T0_1S(void) interrupción 1

{ TH0 = TH_m 1;

TL0 = TL_m 1;

si (++count_T0==20)

{ count_T0 = 0;

segundos++;

si (segundos==60)

{segundos = 0;

minutos++;

}

si(minutos==60)

Minutos = 0;

}

disp[3]= TAB[minutos/10] //dividido en diez lugares

disp[2]= TAB[minutos % 10];

disp[1]= TAB[segundos/10]; //Diez dígitos por segundo

disp[0]= TAB [segundo % 10]; //bits

}

//= = = = = = = = Área de visualización = = = = = = = = =

void T1_8ms(void) interrupción 3

{

if(++count_T1==20)

{ count _ t 1 = 0

si (i==4)

{ I = 0

escanear = 0xf7

}

SEG; = 0xff

P2 = escanear;

SEG = disp[i++];

Escanear>>= 1;

}

}