找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3480|回复: 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 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:223214 发表于 2017-8-12 00:28 | 只看该作者
延时程序那里看看。
回复

使用道具 举报

板凳
ID:223214 发表于 2017-8-12 00:28 | 只看该作者
延时的定义你可以改一下。
回复

使用道具 举报

地板
ID:218365 发表于 2017-8-12 08:02 来自手机 | 只看该作者
都是零了就都亮,循环也是零
回复

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

7#
ID:78850 发表于 2017-8-12 23:06 | 只看该作者
用 do{} while()试试?
回复

使用道具 举报

8#
ID:218870 发表于 2017-8-13 05:56 | 只看该作者
void main()
{
    whiie(1)
   {

   }
}
回复

使用道具 举报

9#
ID:218870 发表于 2017-8-13 05:57 | 只看该作者
主程序加个while(1)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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