Programa de referencia:
#include lt; reg52.hgt;
sbit Beep = P3^0
unsigned char t1s, t50ms;
unsigned char flag30s = 0, flag1s = 0;
void delayms(unsigned int xms)
{
unsigned int i, j;
para(i=0; ilt; xms; i )
para(j=0; jlt; 110; j
); }
alarma nula(nulo)
{
Pitido = 0;
retardoms(200); > Pitido = 1;
}
void main()
{
TMOD = 0x01
TH0 = 0x3C;
TL0 = 0xB0; // Interrumpe una vez cada 50 ms
EA = 1
ET0 = 1; TR0 = 1;
while(1)
{
if(flag30s)Beep = 0 //El timbre sonará hasta los 30s
if(flag1s)//Cuando llegue 1s, sonará el timbre
{
flag1s = 0;
Alarm();
}
}
}
void TIM0(void) interrupción 1
{
TH0 = 0x3C;
TL0 = 0xB0;
t50ms
si(t50ms == 20)//1s
{
t50ms = 0;
t1s ;
bandera1s = 1
if(t1s == 30)//30s
{
TR0 = 0
bandera30s = 1;
}
}
}