找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3148|回复: 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指点


回复

使用道具 举报

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;
回复

使用道具 举报

ID:123289 发表于 2019-3-27 08:25 | 显示全部楼层
硬件基础太差,先搞清楚,P1的输出与LED明暗的逻辑关系。
回复

使用道具 举报

ID:94031 发表于 2019-3-27 09:10 | 显示全部楼层
把 y=y++; 改成 y=y+1;试一下。
回复

使用道具 举报

ID:444215 发表于 2019-3-27 09:24 | 显示全部楼层
逻辑混乱
回复

使用道具 举报

ID:116723 发表于 2019-3-27 09:39 | 显示全部楼层
P1=y;
y++;
回复

使用道具 举报

ID:345562 发表于 2019-3-27 09:51 | 显示全部楼层
把 y=y++;改成y=++y;就好,只是我自己也不明白,两个都是加1一个先加一个后加,但 y=y++;就没加?
回复

使用道具 举报

ID:498925 发表于 2019-3-27 10:06 | 显示全部楼层
改成y=y+1  ;逻辑问题
回复

使用道具 举报

ID:498981 发表于 2019-3-27 10:45 | 显示全部楼层
把 y=y++改成y=++y 就可以了
回复

使用道具 举报

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 单片机教程网

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