关于单片机流水灯左移右移的问题?
有一个单片机流水灯的程序#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();
}
}
}
在程序中关于流水灯左移右移的地方,为什么要那样写,请高手解释一下 展开
#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();
}
}
}
在程序中关于流水灯左移右移的地方,为什么要那样写,请高手解释一下 展开
展开全部
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"的文件包,第二要要会定义赋值变量,第三延时,这是关键。
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 广告
2024-11-28 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡...
点击进入详情页
本回答由宿兴电子提供
展开全部
没什么为什么 就是保证每次只有一个灯亮 fe>>(8-i)保证了第i位及前为0,且第i位后面的位为1 而fe<<i保证了i位及后为0 i位前为1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是说这几句吧:
a=led<<i;
b=led>>(8-i);
P1=a|b;
这样写可以防止产生错误吧,就像读数据是要用异或一样的
其实不这样也可以
就写
a=led《i;
P1=a;
不发生特殊情况时和上面一样的
a=led<<i;
b=led>>(8-i);
P1=a|b;
这样写可以防止产生错误吧,就像读数据是要用异或一样的
其实不这样也可以
就写
a=led《i;
P1=a;
不发生特殊情况时和上面一样的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
51单片机内有左移右移命令,何苦自己再写???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询