📄 门铃声发生器.c
字号:
//MCU:AT89S51
//晶振:12M
#include "AT89X51.H"
unsigned char time_500hz;
unsigned char time_700hz;
unsigned int tcount;
bit stop;
bit flag;
void main(void)
{
unsigned char i,j;
TMOD=0x02; //使用定时器0,选择方式2(常数自动重装的8位定时器)
TH0=0x06; //保存数值,用于自动重装
TL0=0x06; //定时250uS初值
TR0=1; //开定时器0
ET0=1; //开定时器0溢出中断
EA=1; //开总中断
P2_6=0;
while(1)
{
if(P2_0==0)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P2_0==0)
{
time_500hz=0;
time_700hz=0;
tcount=0;
flag=0;
stop=0;
TR0=1;
while(stop==0);
}
}
}
}
/********250uS中断服务程序*************/
void t0(void) interrupt 1 using 0
{
tcount++;
if(tcount==2500)
{
tcount=0;
if(flag==0)
{
flag=~flag;
}
else
{
stop=1;
TR0=0;
}
}
if(flag==0)
{
time_700hz++;
if(time_700hz==3)
{
time_700hz=0;
P2_6=~P2_6;
}
}
else
{
time_500hz++;
if(time_500hz==4)
{
time_500hz=0;
P2_6=~P2_6;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -