51单片机倒计时15秒后为什么蜂鸣器不响?

#include"reg52.h"typedefunsignedintu16;typedefunsignedcharu8;sbitbeep=P1^5;u16b=1000,... #include"reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit beep=P1^5;

u16 b=1000,c=15;
u8 a[2];
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(u16 i)
{
while(i--);
}

void s()
{
u8 j;
for(j=0;j<=7;j++)
{
switch(j)
{
case 0:P2=0X00;break;
case 1:P2=0X04;break;
case(2):
P2=0X08; break;//显示第2位
case(3):
P2=0X0c; break;//显示第3位
case(4):
P2=0X10; break;//显示第4位
case(5):
P2=0X14; break;//显示第5位
case(6):
P2=0X18; break;//显示第6位
case(7):
P2=0X1c; break;
}
}
P0=a[j];
delay(100);
P0=0X00;

}

void csh()
{
TMOD|=0X01;
TH0=0Xfc;
TL0=0X18;
ET0=1;
EA=1;

TR0=1;
}

void szh()
{
a[0]=smgduan[c%10];
a[1]=smgduan[c/10];

}

void main()
{
csh();
while(1)
{
szh();
s();

if(c==12)
{
EA=0;

beep=~beep;
delay(100);
}
}
}

void zd()interrupt 1
{
TH0=0Xfc;
TL0=0X18;
b--;
if(b==0)
{
b=1000;
c--;

}
}
展开
 我来答
赢皮大8
2016-12-06 · TA获得超过889个赞
知道小有建树答主
回答量:991
采纳率:75%
帮助的人:515万
展开全部
虽然程序有部分隐患,但不响大概只是你延时太短了,可以改为
beep=~beep;
delay(50000);
delay(50000);
delay(50000);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式