微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求大神帮我看一下,为什么灯总是亮着不会闪啊!

求大神帮我看一下,为什么灯总是亮着不会闪啊!

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num1,num;
void delay() ;
void main()
{
         
        P2=0x00;
        delay();                                          
        P2=0xff;
        temp=0xfe;
        while(1)
        {
                P2=temp;
                delay();
            temp=_crol_(temp,1);
        }
}
void delay()
{
        for(num1=10000;num1>0;num1--)
                for(num=600;num>0;num--);
}

把p2=temp放到while外面

更改之后并没有什么变化 ,好像不是哪里的问题 。当num1<1000的时候都会闪烁

unsigned char 最大255,你的10000 ,delay 永远到不了,所以卡在 delay了。num1 和num可以定为unsigned int;

void delay(unsigned int time)//time最大到655535
{
    unsigned int i;
    while(time--)
    {
        for(i=0;i<100;i++);//i最大到65535
    }
}

这位才是正解。

就别忽悠人家了。

哈哈哈哈。

不懂 跟着小编一起学习一下

延时程序搞好应该没有问题了

uchar 最大是255,赋值不符合要求.我上机试了下你的程序.修改一下,能看到效果了:

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num1,num;
void delay() ;
void main()
{
        P1=0x00;
        delay();
        P1=0xff;
        temp=0xfe;
        while(1)
        {
                P1=temp;
                delay();
            temp=_crol_(temp,1);
        }
}
void delay()
{
        for(num1=200;num1>0;num1--)
                for(num=200;num>0;num--);
}

又马虎一次~~~~还不赶快谢谢4楼的姐姐!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top