关于单片机流水灯左移右移的问题?

有一个单片机流水灯的程序#include<reg52.h>unsignedcharled;unsignedchari;unsignedchara,b;voiddelay(... 有一个单片机流水灯的程序
#include<reg52.h>
unsigned char led;
unsigned char i;
unsigned char a,b;
void delay(void)
{
unsigned char m,n,k;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(k=250;k>0;k--);
}
void main(void)
{
while(1)
{
sbit led=0xfe;
P1=led;
delay();
for(i=1;i<8;i++)
{
a=led<<i;
b=led>>(8-i);
P1=a|b;
delay();
}
for(i=1;i>0;i++)
{
a=led>>i;
b=led<<(8-i);
P1=a|b;
delay();
}
}
}
在程序中关于流水灯左移右移的地方,为什么要那样写,请高手解释一下
展开
 我来答
xingqigongmeng
推荐于2017-10-04 · TA获得超过180个赞
知道答主
回答量:204
采纳率:0%
帮助的人:125万
展开全部
51单片机的左移右移,首先在开始要调用"intrins.h"的文件包,这个文件包含_cror_(右移),_crol_(左移);然后通过for语句来控制;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(k=250;k>0;k--);
理解这三句,第一句是指:m=20;m>0然后m--是真就执行:
for(n=20;n>0;n--)
for(k=250;k>0;k--);
这两句,m--一直减,减一次,里面就执行一次,这里是20次。
流水灯的左右移,第一用"intrins.h"的文件包,第二要要会定义赋值变量,第三延时,这是关键。
宿兴电子
2024-11-28 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡... 点击进入详情页
本回答由宿兴电子提供
百度网友ec39437d4
2010-10-20 · TA获得超过225个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:308万
展开全部
没什么为什么 就是保证每次只有一个灯亮 fe>>(8-i)保证了第i位及前为0,且第i位后面的位为1 而fe<<i保证了i位及后为0 i位前为1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0ca364616
2010-10-20 · TA获得超过222个赞
知道答主
回答量:114
采纳率:0%
帮助的人:50.3万
展开全部
是说这几句吧:
a=led<<i;
b=led>>(8-i);
P1=a|b;

这样写可以防止产生错误吧,就像读数据是要用异或一样的
其实不这样也可以
就写
a=led《i;
P1=a;
不发生特殊情况时和上面一样的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
因贝特工作
2010-10-21 · TA获得超过283个赞
知道小有建树答主
回答量:489
采纳率:0%
帮助的人:332万
展开全部
51单片机内有左移右移命令,何苦自己再写???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式