标题: 单片机用8位流水灯模拟二进制累加的问题 [打印本页]

作者: denuvo_9    时间: 2019-3-26 22:58
标题: 单片机用8位流水灯模拟二进制累加的问题
如题 程序如下 开发板就是郭天祥的开发板 P1就是接的灯 置0就亮
  1. #include<reg52.h>
  2. void main()
  3. {
  4.   unsigned int x,y,i,j;
  5.   x=0xFF;
  6.   y=0x00;
  7.   while(1)
  8.   {
  9.     P1=x;
  10.     y=y++;
  11.     x=~y;
  12.     for(i=1000;i>0;i--)
  13.       for(j=110;j>0;j--);         
  14.   }
  15. }
复制代码
keil没报任何错 但是流水灯就是不亮
把第六行改成“y=0x01;”第一个灯就一直在亮了
实在想不出是怎么回事了 感谢dalao指点



作者: wulin    时间: 2019-3-27 08:08
错误:    y=y++;
正确:    y++;  或  y=y+1;
作者: ping264888    时间: 2019-3-27 08:09
根据你说的,y=0x01, 第一个灯亮, 判断你的电路为高电平有效, 所以 x=~y  改为 x=y.
作者: HC6800-ES-V2.0    时间: 2019-3-27 08:10
给你改好了。
只要把y=y++改为y++就好了。
y++的意思,就是y=y+1;
作者: yzwzfyz    时间: 2019-3-27 08:25
硬件基础太差,先搞清楚,P1的输出与LED明暗的逻辑关系。
作者: xuyaqi    时间: 2019-3-27 09:10
把 y=y++; 改成 y=y+1;试一下。
作者: 249449417@qq.co    时间: 2019-3-27 09:24
逻辑混乱
作者: xinxinyu    时间: 2019-3-27 09:39
P1=y;
y++;
作者: PBL    时间: 2019-3-27 09:51
把 y=y++;改成y=++y;就好,只是我自己也不明白,两个都是加1一个先加一个后加,但 y=y++;就没加?

作者: 就在这呢    时间: 2019-3-27 10:06
改成y=y+1  ;逻辑问题
作者: sony819    时间: 2019-3-27 10:45
把 y=y++改成y=++y 就可以了
作者: taotie    时间: 2019-3-27 14:37
#include<reg52.h>
void main()
{
  unsigned int x,y,i,j;
x=1;
y=1;

  while(1)
  {
    P1=x;
x=x*2;
    y=x;

  if (y==256)
{
x=1;
}
for(i=1000;i>0;i--)
      for(j=110;j>0;j--);   
      
  }
}




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