找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3514|回復: 11
打印 上一主題 下一主題
收起左側

單片機用8位流水燈模擬二進制累加的問題

  [復制鏈接]
跳轉到指定樓層
樓主
ID:299714 發(fā)表于 2019-3-26 22:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如題 程序如下 開發(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指點


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:213173 發(fā)表于 2019-3-27 08:08 | 只看該作者
錯誤:    y=y++;
正確:    y++;  或  y=y+1;
回復

使用道具 舉報

板凳
ID:365802 發(fā)表于 2019-3-27 08:09 | 只看該作者
根據你說的,y=0x01, 第一個燈亮, 判斷你的電路為高電平有效, 所以 x=~y  改為 x=y.
回復

使用道具 舉報

地板
ID:164602 發(fā)表于 2019-3-27 08:10 | 只看該作者
給你改好了。
只要把y=y++改為y++就好了。
y++的意思,就是y=y+1;
回復

使用道具 舉報

5#
ID:123289 發(fā)表于 2019-3-27 08:25 | 只看該作者
硬件基礎太差,先搞清楚,P1的輸出與LED明暗的邏輯關系。
回復

使用道具 舉報

6#
ID:94031 發(fā)表于 2019-3-27 09:10 | 只看該作者
把 y=y++; 改成 y=y+1;試一下。
回復

使用道具 舉報

7#
ID:444215 發(fā)表于 2019-3-27 09:24 | 只看該作者
邏輯混亂
回復

使用道具 舉報

8#
ID:116723 發(fā)表于 2019-3-27 09:39 | 只看該作者
P1=y;
y++;
回復

使用道具 舉報

9#
ID:345562 發(fā)表于 2019-3-27 09:51 | 只看該作者
把 y=y++;改成y=++y;就好,只是我自己也不明白,兩個都是加1一個先加一個后加,但 y=y++;就沒加?
回復

使用道具 舉報

10#
ID:498925 發(fā)表于 2019-3-27 10:06 | 只看該作者
改成y=y+1  ;邏輯問題
回復

使用道具 舉報

11#
ID:498981 發(fā)表于 2019-3-27 10:45 | 只看該作者
把 y=y++改成y=++y 就可以了
回復

使用道具 舉報

12#
ID:342822 發(fā)表于 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--);   
      
  }
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表