Red de conocimiento informático - Conocimiento de la instalación - Buscando un programa de despertador con temporizador de 51 microcontroladores. Necesita lenguaje C.

Capaz de ajustar el tiempo

Buscando un programa de despertador con temporizador de 51 microcontroladores. Necesita lenguaje C.

Capaz de ajustar el tiempo

Te enviaré un programa de reloj del microcontrolador en lenguaje C 51, espero que te pueda ayudar

/*?Función del programa: ¿con despertador programado?*/

/*---------------------------------------------- ---- -*/

#include?/*Incluir archivo de configuración del dispositivo*/

#define ?uchar?unsigned?char

#define?uint?unsigned?int

char?DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,

0x92,0x82,0xF8,0x80,0x90,};/*Código de segmento de tubo Nixie de 0 a 9*/

uchar?hour=0,min=0,sec= 0;/*unidad de hora, minutos y segundos borrada*/

uchar?deda=0;/*unidad de conteo de 5mS borrada*/?

bit?d_05s=0;/* Marca de 0,5 segundos */

uchar?set=0;?/*Indicador de configuración de modo*/

uchar?m=0;

uchar?flag= 0; ?/*Indicador de apagado de RAM*/

void?delay(uint?k);?/*Función de retardo*/

void?conv();? /* Conversión de unidades de tiempo de viaje*/

void?disp();?/*Función de visualización del tiempo de viaje*/

/*---------- --- -----------¿Tiempo de viaje? ¿Parte de función?---------------------*/

/*Inicialización del dispositivo de sincronización T0?5mS*/

void?init_timer()

{

TMOD=0x01;

TH0 =-(4800 /256);

TL0=-(4800%256);

IE=0x82;

TR0=1;

}

/*---------------------------------*/

/*¿Servicio de interrupción programada de 5mS?*/

void?T0_srv(void)?interrupt?1?

{

TH0= -(4800/ 256);

TL0=-(4800%256);

deda++;

}

/*- ---- -----------------------*/

/*Hora, minuto, segunda unidad y conversión de unidades de tiempo de viaje */

void?conv()

{?

if(deda<=100)d_05s=0; 1;

if(deda>=200){sec++;deda=0;}

if(sec==60){min++;sec=0;}

if(min==60){hora++;min=0;}

if(hora==24){hora=0;}

}

/* ------------------------?¿Pantalla?¿Parte de función?--------------- --------- --*/

/*Función de visualización del tiempo de viaje*/

void?disp()

{

P0=DATA_7SEG [hora/10];P2=0xf7;retraso(1);

P0=DATA_7SEG[hora%10

];P2=0xfb;retraso(1);

if(d_05s==1){if(P2_2==0)P0_7=0;else?P0_7=1;}

retraso(1);

P0=DATA_7SEG[min/10];P2=0xfd;retraso(1);

P0=DATA_7SEG[min%10];P2=0xfe ;retraso(1);

}

/*----------------------?Ajustar tiempo?función ¿Parte?------------*/

/*Ajustar tiempo de viaje*/

void?set_time()< / p>

{uchar?m; if(P2_5==0)retraso(1); if(P2_5==0)hora++; if(hora==24)hora=0; 30;m++) { disp(); si(P2_2==0)P0_7=0; si(P2_6== 0); )min++; si(min==60)min=0; para(m=0;m<30;m++) { disp();

if(P2_2==0)P0_7=0; ?P0_7=1; retraso(1); }

}

/*------------------?Escaneo de claves, ¿Retraso, etc.? Parte de función------------------*/

/*¿Programa de tiempo de viaje?*/

void?time()?

{

conv();/*?¿Conversión de unidad de tiempo de viaje?función?*/

disp();/ * ?Función de visualización del tiempo de viaje?*/

}?

/*---------------------- - -------------*/

/*Función de escaneo?*/

void?scan_key()

{

retraso(1);

if(P2_4==0)set++;

if(set>=2)set=0;

if(set==1)flag=0x55;?

F0:if(P2_4==0)goto?F0;?/*El botón no se suelta, esperando aquí*/

}

/*---------------------------------* /

/*Función de retardo*/

void?delay(uint?k)

{

uint?i,j ;

for(i=0;i

for(j=0;j<121;j++)

{;} }

}

/*-----------------------?Función principal?----- ---- ----------------?*/

/*Función principal*/

void?main()

{? init_timer();?/*Inicialización del temporizador T0*/ while(1)?/*Bucle infinito*/ {

if(P2_4==0)scan_key();/ *Hay una clave, ¿llamar a la función de escaneo de claves?*/

switch(set)?/*Cambiar según el valor de clave establecido*/

{?

case?0: time();?break;/*programa de tiempo de viaje*/

case?1:set_

time();break;/*Ajuste del tiempo de viaje*/

default:break;?/*Otra salida*/

} if(flag!=0x55)?/* Determinar el indicador de apagado*/ {?

P0=0xc0;?P2=0xc0;?delay(100);?P2=0xff;?delay(400) }

}

}