代码如下:
#include<reg52.h>
#define uchar unsigned char
sfr LED=P1; //发光二极管
sbit BUZZ=P3^7; //蜂鸣器
sbit SW=P3^4; //按钮开关
void main()
{
uchar i,j,k;
uchar a=0xff;
for(i=8;i>0;i--)
{
while(SW);
while(!SW);
a<<=1;
for(j=0;j<100;j++)
{
BUZZ=1;
for(k=12;k>0;k--);
BUZZ=0;
for(k=12;k>0;k--);
}
LED=a;
}
}
按理说按下并放开按钮,蜂鸣器叫一声,增加一个亮灯,但运行的结果,灯正常,而蜂鸣器一直在叫。为什么?
此帖出自
小平头技术问答
谢谢回答,我用的是成品开发板,硬件没有问题。烦请帮忙分析一下我的代码,其中while(SW)和while(!SW)两句,如果按钮不按下,应该一直停在这里等待,不应该执行下面的所有语句,蜂鸣器不应该叫,发光管也不应该左移。现在的问题是发光管反应正常,按一下按钮增加一个亮灯,不按不增加,但蜂鸣器却不是叫一下,而是一直叫个不停。我也是在编写其它程序时偶尔发现的,非常困惑。
一周热门 更多>