標題: 單片機用8位流水燈模擬二進制累加的問題 [打印本頁]

作者: denuvo_9    時間: 2019-3-26 22:58
標題: 單片機用8位流水燈模擬二進制累加的問題
如題 程序如下 開發(fā)板就是郭天祥的開發(fā)板 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
根據(jù)你說的,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.torrancerestoration.com/bbs/) Powered by Discuz! X3.1