标题: 关于单片机变量名字的几个问题 [打印本页]

作者: zhyixi    时间: 2020-3-8 19:08
标题: 关于单片机变量名字的几个问题
void main()
{
        u8 i;
        LED = 0x7F;
        delay(50000);//延时450ms
        while(1)
        {
                for(i = 0;i < 8;i++)
                {
                        P2 = ~(0x01<<i);
                        delay(50000);
                }
        }
}
这一段代码是一个跑马灯的代码

void main()
{
        u8 i;
        LED = 0x7F;
        delay(50000);//延时450ms
        while(1)
        {
                for(i = 0;i < 8;i++)
                {
                        LED = ~(0x01<<i);
                        delay(50000);
                }
        }
}

为什么把跑马灯的代码的P2修改为LED的时候,这个灯就会逐渐全亮了呢?


作者: bayga456    时间: 2020-3-10 17:33
代码不完整。看不出来。
作者: zhyixi    时间: 2020-3-11 09:54
bayga456 发表于 2020-3-10 17:33
代码不完整。看不出来。

你好,就这个代码,我只写了主函数,用来控制单片机的LED灯
作者: bayga456    时间: 2020-3-11 14:45
zhyixi 发表于 2020-3-11 09:54
你好,就这个代码,我只写了主函数,用来控制单片机的LED灯

这里面的 LED 是什么?变量还是端口?还有流水灯接线是怎么的?
作者: odfggf    时间: 2020-3-11 15:21
#define LED P2定义正确,接线没错的话,P2修改为LED,效果是一样的,都是从左到右的流水灯
作者: Amlee    时间: 2020-3-12 20:56
检查一下宏定义是否出错,我把你的代码复制亲测了一下,主函数两种写法都没问题的,以下是完整代码
#include<reg52.h>
#define LED P1                           //宏定义LED等效于P1口
void delay(unsigned int z)
{ unsigned int x,y;
  for(x=0;x<100;x++)
      for(y=0;y<z;y++);
}
/*void main()
{
        unsigned char i;
        LED=0x7f;
        delay(5000);//延时450ms
        while(1)
        {
                for(i=0;i<8;i++)
                {
                                    P1=~(0x01<<i);
                    delay(500);
                }
        }
}
*/

void main()
{
        unsigned char i;
        LED=0x7f;
        delay(500);//延时450ms
        while(1)
        {
                for(i=0;i<8;i++)
                {
                        LED=~(0x01<<i);
                        delay(500);
                }
        }
}

作者: 后继就    时间: 2020-3-13 20:23
zhyixi 发表于 2020-3-11 09:54
你好,就这个代码,我只写了主函数,用来控制单片机的LED灯

得完整的
作者: ggyu7    时间: 2020-3-24 14:20
因为你这个程序代码在开头的时候就写了LED = 0x7F;这就意味着在后面的程序中LED所代表的就是~(0x01<<i)LED = 0x7F;当吧LED写成P2时,这才意味着LED对应着是
作者: ggyu7    时间: 2020-3-24 23:13
ggyu7 发表于 2020-3-24 14:20
因为你这个程序代码在开头的时候就写了LED = 0x7F;这就意味着在后面的程序中LED所代表的就是~(0x01

刚才回复的字有点乱了,我现在重新发一下。
因为你这个程序代码在开头的时候就写了LED = 0x7F;这就意味着在后面的程序中LED所代表的就是0x7f。而在后面若写成P2则才表示为~(0x01<<1)




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1