用51单片机控制蜂鸣器的程序,用C语言,要完整
先以1khz播放0.5s,接着停止0.5s,再以2khz播放0.5s,再停0.5s,无限循环,谢谢!...
先以1khz 播放0.5 s,接着停止0.5s,再以2khz播放0.5s,再停0.5s,无限循环,谢谢!
展开
1个回答
展开全部
#include <REGX51.H>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit buzzer=P2^0;
uchar temp[4]={4,0,2,0};
uchar n=1;
void delay250uS(void)//延时250us
{
unsigned char a,b;
for(b=19;b>0;b--)
for(a=5;a>0;a--);
}
void main(void)
{
uchar i=0,n0=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
n0=n;
if(n0!=0)
{
if(++i==temp[n])i=1;
if((i==1)|(i==temp[n]/2))buzzer=~buzzer;
delay250uS();
}
}
}
void Timer0Interrupt(void) interrupt 1
{
static uchar temp1=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++temp1==10)
{
if(++n==4)n=0;
}
}
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit buzzer=P2^0;
uchar temp[4]={4,0,2,0};
uchar n=1;
void delay250uS(void)//延时250us
{
unsigned char a,b;
for(b=19;b>0;b--)
for(a=5;a>0;a--);
}
void main(void)
{
uchar i=0,n0=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
n0=n;
if(n0!=0)
{
if(++i==temp[n])i=1;
if((i==1)|(i==temp[n]/2))buzzer=~buzzer;
delay250uS();
}
}
}
void Timer0Interrupt(void) interrupt 1
{
static uchar temp1=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++temp1==10)
{
if(++n==4)n=0;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询