为啥led灯不会亮灭的 如果改成led=~led的话就会亮灭亮灭 求解

2019-07-15 18:51发布

#include <REGX51.H>
#define uchar unsigned char
#define led  P1
void main()
{   
      
   
    TMOD = 0x01;
    TH0  = 0x4c;
    TL0 = 0x00;
    TR0 = 1;
   
    while(1)
   {
       uchar n;
   
   if(TF0==1)
   {
    TF0=0;
   TH0 = 0x4c;
         TL0 = 0x00;
   n++;
   }

   if(n==20)
   {
     n=0;
     led=0xaa;
   
   }
   }
}


为啥led灯不会亮灭的  如果改成led=~led的话就会亮灭亮灭 求解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
zy2014
1楼-- · 2019-07-15 19:58
程序中led的值不就是在if(n==20)中赋值的吗?之后这个值有没有改变,所以肯定不会亮灭的。

当改成led=~led时,led的值当满足n==20的时候就会自动改变的。(0x00 0xff 0x00 0xff……)
落尘浅羽
2楼-- · 2019-07-16 00:45
你的LED一直等于AAH,没用改变他的状态,要亮灭,就得让0变1一变0
TGM-游民
3楼-- · 2019-07-16 04:32
 精彩回答 2  元偷偷看……
244798611
4楼-- · 2019-07-16 07:27
你把n定义放在while里面?把它放到while上面就可以了
柠檬守护
5楼-- · 2019-07-16 07:48
楼主,这个是使用定时器延时,为什么LED 不会亮灭,主要是在if {}中,P1 赋的是固定的值,而不是变化的值。LED=~LED 这个就是赋值是变化的! 所以才会有亮灭!
孤星独吟之无名
6楼-- · 2019-07-16 11:45
朋友,请问下万能板上的地线是如何布置的 ,我不知道地线在万能板上如何设计!

一周热门 更多>