单片机编程流水灯呢,循环左移,还有补齐那一块看不懂啊,为毛啊? 50

/*间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。*//**********************************... /*
间隔300ms第一次一个管亮流动一次,
第二次两个管亮流动,依次到8个管亮,
然后重复整个过程。
*/
/*********************************************************/
#include<reg52.h> //52单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{ //delay(500);大约延时500ms.
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函数
{
uchar a,i,j;
while(1) //大循环
{
a=0xfe; //赋初值
for(j=0;j<8;j++)
{
for(i=0;i<8-j;i++) //左移
{
P1=a; //点亮小灯
delay(200); //延时200毫秒
a=_crol_(a,1); //将a变量循环左移一位
}
a=_crol_(a,j); //补齐,方便下面的左移一位
P1=0xff; //全部关闭
a=a<<1; //左移一位让多一个灯点亮
}
}
}
展开
 我来答
zhxiufan
推荐于2018-04-12 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38387
国家科技进步奖

向TA提问 私信TA
展开全部
补齐那句就是将a的值移到最初状态,第一次是回到:0xfe,第二次是回到0xfc......。
lslzx63
2015-02-16 · TA获得超过1万个赞
知道大有可为答主
回答量:1884
采纳率:78%
帮助的人:526万
展开全部
可用Proteus 仿真一下就知道为什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2015-02-15 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4970万
展开全部
关注这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式