Timbre con temporizador de un solo chip
#include
#define uchar unsigned char
#define uint unsigned int
uint p=0; //Debe definirse como uint (p ocupa 2 bytes)
sbit K=P1^7;//keypress
sbit DoorBell=P3^0; //timbre p >
unsigned int i;
void main()
{
DoorBell=0;
TMOD=0x00; p> TH0=(8192-700)/32;//temporización 700us
TL0=(8192-700)%32;
IE=0x82;
while(1)
{
if(K==0)// Pulsa el botón para iniciar el cronómetro
{
for(i=0;i<2;i++)// Quiero tener dos "ding", pero solo un "ding"
{
TR0=1;
mientras(TR0);
}
}
}
}
}
void Timer0()interrupción 1
{
DoorBell=~DoorBell;
p++;
if(p<600) //Si necesitas arrastrar el sonido, puedes ajustarlo a 400. Si necesita arrastrar el sonido, puede ajustarlo a 400 y 800
{
TH0=(8192-700)/32 //700us timer
TL0=(8192-700)%32;
}
si no(p<1200)
{
TH0 =( 8192-1000)/32; /temporizador de 1 ms
TL0=(8192-1000)%32;
}
más
{
TR0=0;
p=0;
}
}
}