找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4419|回复: 8
收起左侧

为什么这单片机程序不能循环啊,八个灯亮了后程序就停了

[复制链接]
ID:225054 发表于 2017-8-11 23:44 | 显示全部楼层 |阅读模式
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint);
void main()
{
uchar a;
uint i;
a=0xff;
while(1)
{ //如果把a=0xff放在这就只有一个灯循环了
for(i=0;i<8;i++)
{
a=a<<1;
P1=a;
delay(300);
for(i=0;i<8;i++)
{
a=_crol_(a,1);
  P1=a;
delay(300);
}

}

  }
   }
void delay(uint xm)
{
uint j,k;
for(j=xm;j>0;j--)
for(k=110;k>0;k--);
}

评分

参与人数 1黑币 +5 收起 理由
萌面大超人 + 5 赞一个!

查看全部评分

回复

使用道具 举报

ID:223214 发表于 2017-8-12 00:28 | 显示全部楼层
延时程序那里看看。
回复

使用道具 举报

ID:223214 发表于 2017-8-12 00:28 | 显示全部楼层
延时的定义你可以改一下。
回复

使用道具 举报

ID:218365 发表于 2017-8-12 08:02 来自触屏版 | 显示全部楼层
都是零了就都亮,循环也是零
回复

使用道具 举报

ID:164602 发表于 2017-8-12 08:16 | 显示全部楼层
循环没有停,只是你看不到效果而已!
原因是:
你的第一次循环,让灯全部亮了,没有复位,所以,以后的所有循环,你都看不到效果了。
这样改:
循环完后,重新赋值a=0xff
回复

使用道具 举报

ID:225054 发表于 2017-8-12 10:05 来自触屏版 | 显示全部楼层
HC6800-ES-V2.0 发表于 2017-8-12 08:16
循环没有停,只是你看不到效果而已!
原因是:
你的第一次循环,让灯全部亮了,没有复位,所以,以后的所 ...

要是在while(1)下赋值a=0xff就不能进第一个for里的i值只能加一了,该怎么解决
回复

使用道具 举报

ID:78850 发表于 2017-8-12 23:06 | 显示全部楼层
用 do{} while()试试?
回复

使用道具 举报

ID:218870 发表于 2017-8-13 05:56 | 显示全部楼层
void main()
{
    whiie(1)
   {

   }
}
回复

使用道具 举报

ID:218870 发表于 2017-8-13 05:57 | 显示全部楼层
主程序加个while(1)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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