Programa de timbre

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;

}

}

}