Red de conocimiento informático - Material del sitio web - Cómo llamar al reloj del sistema en c para mostrarlo digitalmente con precisión en segundos y convertir 12 horas a 24 horas con AMPM

Cómo llamar al reloj del sistema en c para mostrarlo digitalmente con precisión en segundos y convertir 12 horas a 24 horas con AMPM

#includelt;reg51.hgt;

#define uchar unsigned char

#define uint unsigned int

//////////// ////////////////////////// /////////////////////

//definición de función clave

/////////////////////////////////// //// ///////////////////

sbit se=P2^0 //selección del bit de calibración

sbit; ad=P2^1 ; //agregar/borrar

sbit dw=P2^2; //Reducir/iniciar/pausar cronómetro

sbit ch=P2^3; cronómetro y reloj

//Para simplificar el código, se agrega un interruptor y la tecla del cronómetro ya no se reutiliza

/////////// //// ////// /////////////////////////////////////////

uchar code tab[] ={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xbf};

uchar buf[3]= {15, 4, 19}; //caché de datos

/////////////////////////////// ////////////// /////////////////////////////////////

uint sec=0; / /segundos

uchar n, count; //count

número de uchar; //bit de selección de tiempo

bit flag, flag1; //cambio de función de bandera; bandera1 pausa/ iniciar bit de bandera

/////////////////////// /// //////////////// /////////////////////////////

retraso nulo(uchar i) //retraso i*2ms

{

uchar j=240;

while(i--)

while (j--);

}

void display(bit t) //Mostrar subfunción, indicador de visualización de bits de parámetro formal, reloj bit 0 , bit 1 cronómetro

{

uchar i , flash

static cn=0

uchar tbuf[8]; /p>

uchar dbuf[8];

if(! t) //visualización del reloj

{

tbuf[0]=tab[buf[0]10]

tbuf[1]=tab[buf] [0]/10];

tbuf[2]=tab[10];

tbuf[3]=t

ab[buf[1]10];

tbuf[4]=tab[buf[1]/10];

tbuf[5]=tab[10]; p>

tbuf[6]=tab[buf[2]10];

tbuf[7]=tab [buf[2]/10];

switch( número)

{

caso 1: tbuf[0]=tbuf[0]|flash; tbuf[1]=tbuf[1]|flash;

p>

caso 2: tbuf[3]=tbuf[ 3]|flash; tbuf[4]=tbuf[4]|break

caso 3: tbuf[6]=tbuf; [6 ]|flash; tbuf[7]=tbuf[7]|flash; romper;

}

for(i=0;ilt;8.i)

{

P0=(0x01lt;lt;i);

P1=tbuf[i]

retraso(1);

P1=0xff;

}

cn

si(cn==25)

{

cn=0;

flash=~flash;

}

}

else //visualización del cronómetro

{

dbuf[0]=n/10;

dbuf[1]=10

dbuf[2]=sec6010; ;

dbuf[3]=sec60/10;

dbuf[4]=10

dbuf[5]=seg/6010; >

dbuf[6]=seg/60/1010;

dbuf[7]=seg/60/ 100;

for(i=0; ilt; 8; i )

{

P0=(0x01lt;lt;i);

P1=tab[dbuf[i]];

retraso (1);

P1=0xff;

}

}

}

}

void chang() // Cambio de funciones, cambio entre reloj y cronómetro, así como pausar/iniciar y borrar subfunciones

{

if(ch; ==0 )

{

retraso(15);

si(ch==0)

{

while(ch==0) display(flag); // Libera la detección, llama a la función de visualización para evitar la interrupción de la visualización, como se muestra a continuación

flag=~flag;

if(bandera )

{

número=0

TR0=1

TR1=0;

}

más

{

TR0=1

TR1=0;

}

}

}

si(bandera)

{

si(dw= =0)

{<

/p>

retraso(15);

if(dw==0)

{

while(dw==0) mostrar(1 );

bandera1=~bandera1

if(bandera1)

{

TR1= 1; > TR0=1;

}

más

{

TR1=0

TR0=1; ;

}

}

}

}

}

si( anuncio==0)

{

retraso( 15);

if(ad==0)

{

while(ad==0) display(1);

seg=0; n=0;

TR1=0;

}

}

}

}

}}

void ch_time() // Subfunción de ajuste de tiempo

{

if(!flag)

{

if(se==0)

{

retraso(15);

si(se==0)

{

mientras(se= = 0) mostrar(0);

TR0=0

número

if(número==4)

{

número=0; //Evitar el escape del programa

TR0=1

}

}

}

}

if(ad==0) // Modo de ajuste del reloj, agrega

{

delay(15);

if(ad==0)

{

mientras(ad==0) mostrar(0);

cambiar( número )

{

caso 1: buf[0]; if(buf[0]==60) buf[0]=1; > caso 2: buf[1]; if(buf[1]==60) buf[1]=1;

caso 2: buf[1]; = 60) buf[1]=1; romper

caso 3: buf[2] ; if(buf[2]==24) buf[2]=1;

Valor predeterminado: descanso

}

}

}

}

if(dw = =0) // Modo de ajuste del reloj signo menos

{

p> delay(15);

if(dw==0)

{

while(dw==0) display(0);

cambiar(número)

{

caso 1: buf[0]--; if(buf[0]==0) buf[0]=59;

ejemplo 2: buf[1]--; if(buf[1]==0) buf[1]=59;

caso 3: buf[2]--; 2]==0) buf[2]=23; romper

predeterminado:

}

}

}

}

}

}

void main()

{

IE=0x8a; // Activa las interrupciones generales, las interrupciones del temporizador T1 y T0

TMOD=0x11; // Establece los bits T1 y T0.

//Establece el modo de trabajo 1 del bit T1, T0

TH0=0xD8;

TL0=0xF0; //T0 reimprime el valor inicial

TH1=0xD8;

TL1=0xF0; //T1 reimprime el valor inicial

TR0=1; //Inicia el reloj y comienza a trabajar

while( 1)

{

ch_time(); // Configuración de hora

chang(); // Cambio de modo

display(flag);

}

}

void time_T0() interrupción 1 // Temporizador 0, modo de trabajo 1, interrupción del reloj

{

TH0=0xD8

TL0=0xF0

cuenta

si(cuenta==90)

{

cuenta=0;

buf[0] ;<

si(buf[0]==60)

{

buf[0]=0;

buf[1]

si(buf[1]==60)

{

buf[1]=0

buf[2]

si (buf[2]==60) buf[2]=0;

}

}

}

}

}

nulo sec_T1; ( ) Interrupción 3 // Temporizador 1, modo de funcionamiento 1, interrupción del cronómetro

{

TH1=0Xd8

TL1=0Xf0; p > contar ;

n

si(n==90)

{

n=0;

seg;

if(sec==65000) //El temporizador puede ser de hasta 650 minutos

sec=0;<

}< / p>

if(count==90)

{

count=0

buf[0]; > if(buf[0]==60)

{

buf[0]=0

buf[1]

<; p > if(buf[1]==60)

{

buf[1]=0

buf[2]

;

if(buf[2]==60) buf[2]=0

}

}

}

}

}

}

}