Red de conocimiento informático - Material del sitio web - ¿Cómo agregar un programa de temporizador al sistema de sincronización basado en 51 microcontroladores?

¿Cómo agregar un programa de temporizador al sistema de sincronización basado en 51 microcontroladores?

Hay dos métodos de implementación: consultar (si el bit TF se desborda) e interrumpir.

¿#ifndef? _MAIN_H

#¿Definición? _MAIN_H

#¿Definición? u16? ¿No firmado? (Igual que las organizaciones internacionales) Organizaciones internacionales

#Definición? u8 no está firmado? Té

#Definición? uint? ¿No firmado? (Igual que las organizaciones internacionales) Organizaciones internacionales

#Definición? ucharunsigned? Té

#Definición? ¿Completamente cerrado? ¿P2? =?((P2 & 0x1f)|0x00)

#Definición? ¿LED_ONP2? =?((P2 & 0x1f)|0x80)

#Definición? TUB_DUP2? =?((P2 & amp;0x1f)|0xe0)

#Definición? TUB_WEP2? =?((P2 & amp;0x1f)|0xc0)

#Definición? ¿CLK Osker? 110592000 ?//¿Yo? ¿No entiendes? ¿Por qué? 0?Más

#Contiene? " intrins.h "

#¿Contiene? " math.h "

#¿Contiene? " stdio.h "

#¿Contiene? " reg52.h "

#¿Incluir? " retraso.h "

#¿Contiene? " tube.h "

#¿Contiene? "Teclado. h "

externo? uint? seg

#endif #Contiene? ¿"principal.h"?

¿u16? cuenta0, cuenta 1;

uint? Segundos, minutos;

¿No válido? principal()

{

u8? temp = 0xff

uint? ¿I? =?1000;

//?Configuración de interrupción del temporizador-.

TMOD? =?0x 10; //¿Temporizador 0? ->? ¿modo? 1

TH1=? 0xfc//1 milisegundo

TL1=? 0x65

TR1=? 1;

TH0=? 0xfc//1 milisegundo

TL0=? 0x65

TR0=? 1;

ET0=? 1;

EA? =?1;

//LED _ ON;

//P0? =?0xfe

//While(I-)//El programa de interrupción interrumpirá este largo retraso.

//Delayus(1000);

//P0? =?DSP buf[2];

//TODO _ APAGADO;

mientras(1)

{

tecla _ Función ();

if(TF1?==?1)

{

TF1? =?0;

TH1=? 0xfc//1 milisegundo

TL1=? 0x65

Display();

DSP buf[7]= seg % 10;

DSP buf[6]= seg/10;

DSP buf[4]= min % 10;

DSP buf[3]= min/10;

}

}

}

¿Anulado? Temporizador0()? ¿interrumpir? 1

{

TH0=? 0xfc//¿Tiempo de calibración? ->? Asignación de valor inicial secundario

TL0=? 0x65

cuenta +;

if(cuenta0?==?1000)

{

cuenta0? =0;

segundos? ++;

Si (segundos == 60)

{

seg? =?0;

min++;

}

}

}Tengo ambos métodos en este programa, puedes verlo. Espero adoptarlos.