微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于流水灯的程序 灯不能全灭?

关于流水灯的程序 灯不能全灭?

时间:10-02 整理:3721RD 点击:
#include <reg52.h>
void main ()
{
  unsigned int n;
unsigned char LED;
LED = 0x00;          
    while (1)
      {
          P2 = LED;
           if(P2 == 0Xff)
                  {
                   LED=0X00 ;                 
                     }
         for (n=0;n<20000;n++) ;
         LED = LED << 1;
          LED =LED+1;  
    }
}
这是我写的关于流水灯的程序
为什么 重新赋值LED,LED=0x00的时候会直接跳过到LED=0x01?不显示灯全灭呢?
各位大神帮忙看看 谢谢了!

if(P2 == 0Xff)
{
    LED=0X00 ;                 
}
LED = LED << 1;
LED =LED+1;  
当P2=0xff的时候,循环之后LED值为0x01,而循环当中0x00并未赋值给P2;
可以把P2 = LED;放到for循环下边。这样应该就可以了

把延时放到P2=LED;后面

谢谢帮助  你的方法是成功的我后面改换 IF 句型的位置 到LED =LED+1;后 也可以正常运行了,但是还是稍微不明白 IF 在前在后的区别。

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

网站地图

Top