Programación de la posición del sol
# incluir & ltREGX51.
H & gt
#define uchar carácter sin firmar
#define V_TH1 0XFE
#define V_TL1 0X0C
#define V_TMOD 0X11< / p>
void init _ sys(void); /*Función de inicialización del sistema*/
Carbón sin firmar ZH ZL;
Administrador no válido (no válido)
{
init _ sys();
while(1)
{
Temporal int sin signo
int 16 zkb = 50;
Temporal=2^16-5*zkb;
ZH = temp/256;
ZL = temp % 256;
k();
}
}
Void init_sys(void) /*Función de inicialización del sistema*/
{
TMOD = TMOD; /*Inicialización del temporizador*/
TH0 = ZH
TL0 = ZL;
th 1 = V _ th 1;
TL 1 = V _ TL 1
tr 1 = 1
et 1 = 1 ;
ET0 = 1; /*Permitir interrupción T0
EA = 1; /*Interrupción de CPU
}
Nulo k( int16 vk, ik )
{ static int 16 prek;
pk = vk * ik
prek = 0;
vk = 0; p>
if(prvpk==pk)
{
Devolver;
}
Otros
{
if(PK & gt;preparatorio)
{ prek = pk
if(vk & gt;prevk) p>
{
ZK b++;
prevk = vk
prepk = pk
}
Otro p>
{
ZK B-;
prevk = vk
prepk = pk
}
}
Otro
{
if(vk & gt; prevk)
{
ZK b++;
prevk = vk
prepk = pk
}
Otro
{
ZK B-;
prevk = vk
prepk = pk
}
}
}
/*Función de interrupción*/
Temporizador no válido 0 (no válido) interrupción 1
{
P2_2 =! P2_2;
TR0 = 0;
}
Temporizador 1 no válido (no válido) interrupción 2
{
th 1 = V _ th 1; /*Restaurar el valor inicial del temporizador T0*/
TL 1 = V _ TL 1;
P2_2=! P2 _ 2;
TH0 = ZH; /*Restaurar el valor inicial del temporizador T0*/
TL0 = ZL;
TR0 = 1; p>
TR0 = 1;
p>
}