/*
下载此程序后会听到蜂鸣器间断的响,主要学习用定时器产生方波
*/
#include<reg51.h>
sbit sound=P3^7;
sbit led_k=P1^4;
sbit a1=P1^0;
sbit a2=P1^1;
sbit a3=P1^2;
sbit a4=P1^3;
void delayms(unsigned int i);/*延时函数*/
unsigned char i=0;
void t0()interrupt 1 using 1//产生蜂鸣器频率
{
sound=!sound;
}
main()
{
TMOD=0X02;/* t0工作在方式2.*/
TH0=0;//初值决定蜂鸣器的声音频率
EA=1;/* 开全局中断.*/
TR0=1;/* 开始计数.*/
ET0=1;/*允许t0中断.*/
a1=a2=a3=a4=0;/*关闭数码管,否则数码管会拉低P0口电平,导致流水灯不亮*/
P0=0xff;
led_k=1;/*打开6个led的总开关*/
while(1)
{
EA=0; //蜂鸣器不响
delayms(1000);
EA=1; //蜂鸣器响
delayms(1000);
}
}
void delayms(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=100;j>0;j--);
}