找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2967|回复: 11
打印 上一主题 下一主题
收起左侧

单片机用8位流水灯模拟二进制累加的问题

  [复制链接]
跳转到指定楼层
楼主
ID:299714 发表于 2019-3-26 22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题 程序如下 开发板就是郭天祥的开发板 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2019-3-27 08:08 | 只看该作者
错误:    y=y++;
正确:    y++;  或  y=y+1;
回复

使用道具 举报

板凳
ID:365802 发表于 2019-3-27 08:09 | 只看该作者
根据你说的,y=0x01, 第一个灯亮, 判断你的电路为高电平有效, 所以 x=~y  改为 x=y.
回复

使用道具 举报

地板
ID:164602 发表于 2019-3-27 08:10 | 只看该作者
给你改好了。
只要把y=y++改为y++就好了。
y++的意思,就是y=y+1;
回复

使用道具 举报

5#
ID:123289 发表于 2019-3-27 08:25 | 只看该作者
硬件基础太差,先搞清楚,P1的输出与LED明暗的逻辑关系。
回复

使用道具 举报

6#
ID:94031 发表于 2019-3-27 09:10 | 只看该作者
把 y=y++; 改成 y=y+1;试一下。
回复

使用道具 举报

7#
ID:444215 发表于 2019-3-27 09:24 | 只看该作者
逻辑混乱
回复

使用道具 举报

8#
ID:116723 发表于 2019-3-27 09:39 | 只看该作者
P1=y;
y++;
回复

使用道具 举报

9#
ID:345562 发表于 2019-3-27 09:51 | 只看该作者
把 y=y++;改成y=++y;就好,只是我自己也不明白,两个都是加1一个先加一个后加,但 y=y++;就没加?
回复

使用道具 举报

10#
ID:498925 发表于 2019-3-27 10:06 | 只看该作者
改成y=y+1  ;逻辑问题
回复

使用道具 举报

11#
ID:498981 发表于 2019-3-27 10:45 | 只看该作者
把 y=y++改成y=++y 就可以了
回复

使用道具 举报

12#
ID:342822 发表于 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--);   
      
  }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表