#include<reg52.h>
long int code table[]= // 定义发出不同频率的各个时间长度table表,因为定义
//晶振为12MHZ,所以一个周期也正好为1US。
{
2000,4000
}
long int num1,num2
char num
void main()
{
TMOD=0x11 //定义定时器0,1工作方式1
EA=1ET0=1ET1=1
TH0=(65535-50000)/256 //装载定时器0初值,50ms为一次中断
TL0=(65535-50000)%256
TH1=(65535-1)/256 //装载定时器1初值,1us为一次中断
TL1=(65535-1)%256
TR0=1 //打开定时器0
while(1)
{
if(num1==2) //判断定时器0中断了2次,也就是100ms
{
TR0=0 //关闭定时器0
TR1=1 //打开定时器1
beep=0 //蜂鸣器报警
num1=0//让num1清零,以备再次计数
}
if(num2==table[num]) //判断当时间达到第num个秒数
{
TR1=0 //关闭定时器1
TR0=1 //打开定时器0
num2=0 //让num2清零,以备再次计数
beep=1 //关闭蜂鸣器
num++ //让num循环计数
}
if(num==2)
{
num=0
}
}
}
void T0_time()interrupt 1
{
TH0=(65535-50000)/256
TL0=(65535-50000)%256
num1++
}
void T1_time()interrupt 3
{
TH1=(65535-1000)/256
TL1=(65535-1000)%256
num2++
}
具体其它程序自己添加:#defineKey P1_0
#define BeepP1_2
#define Key_ON 0
#define Beep_ON1
#define Beep_OFF 0
if(Key==Key_ON)
{
Beep=Beep_ON
}
else
{
Beep=Beep_OFF
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)