回 帖 发 新 帖 刷新版面

主题:各位高手给看一下,1.3.5.7灯的第一灯不闪烁,问题出在哪里?

各位高手给看一下,1.3.5.7灯的第一灯不闪烁,问题出在哪里?
#include<reg52.h>
sbit d1=P1^0;
sbit d3=P1^2;
sbit d5=P1^4;
sbit d7=P1^6;
unsigned int a;
void main()
{
    while(1)
    {
        a=50000;
        d1=0;
        d3=0;
        d5=0;
        d7=0;
        while(a--);
        a=50000;
        d1=1;
        d3=1;
        d5=1;
        d7=1;
        while(a--);
    }
}

回复列表 (共2个回复)

沙发


老弟;看来你也是才学的吧,我也是,有二周了,看到你想让1357发光管闪亮的小程序,我看没有什么问题啊,你可能是用软件仿真的吧,那你看不到闪的原因是因为你要用手动点50000次后才能看到灯的亮化,如果是用硬件仿真,就可以看到效果的。
   你如果想用软件仿真又想看到效果,你可将50000次(a的值)改为5次,再去仿真你就可以看到效果了。另外你可以不必写那么麻烦,你可以用总线方式呀,这样不是更简单吗

 #include<reg52.h>
unsigned int a;
void main()
{
    while(1)
    {
        a=50000;
        P1=0x55;//1,3,5,7,亮
        while(a--);
        a=50000;
        P1=0xff;//1.3,5,7。熄灭
        while(a--);
    }
}
这样是不是要简单些啊。

板凳


多谢高手指点。
我用的是学林电子xl600实验板,仿真芯片sst89e564rd,出现的问题是;
1.用KEIL调试开始时光标不停在while(1)一行,而停在下一行a=50000上。
2.全程运行时1灯常亮,3.5.7.循环亮。
我以为:
1.小程序有问题。
2.while命令内部是不是坏了。
3.仿真芯片sst89e564rd有问题。
谢谢你给的小程序,它使我对16进制加深了认识。连上实验板闪烁不明显。
不知问题出在哪儿。

我来回复

您尚未登录,请登录后再回复。点此登录或注册