有一个单片机流水灯的程序
#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();
}
}
}
在程序中关于流水灯左移右移的地方,为什么要那样写,请高手解释一下
关于单片机流水灯左移右移的问题?
流水灯的左右移,第一用"intrins.h"的文件包,第二要要会定义赋值变量,第三延时,这是关键。
关于流水灯左移和右移的程序问题
LED灯右移到最右边后向左移时是这样的:右移一位→第二个延时程序→第一个延时程序→右移右移一位→第二个延时程序→第一个延时程序,这样不断循环,循环到最左边,就开始了右移的程序。这样左移的延迟大一点的!
如何实现51单片机的按键k1按下,LED流水灯向右移动,按键k2被按下,LED...
对控制LED口的寄存器进行位操作,按k1左移,按K2就是右移了。51单片机是对兼容英特尔8051指令系统的单片机的统称。51单片机广泛应用于家用电器、汽车、工业测控、通信设备中。因为51单片机的指令系统、内部结构相对简单,所以国内许多高校用其进行单片机入门教学。51单片机的特点:同样的一段程序,在各个单片机...
流水灯左移速度越来越快右移越来越慢
是逻辑重复的问题。解决方法:0x01会两次,0x80也会两次,cnt到7就归0,cnt到8后归1,cnt到7归0要改判断逻辑。
用51单片机写了一个流水灯程序,有一点问题,请高手解惑
单片机的流水灯程序,因为程序就这么写的,决定了流水灯左移7次,再右移7次,结束两个循环后,才能执行下面的while(!key),按键才有效,而在循环过程中,不执行while(!key),所以按键无效。下图画红框内的两个循环。要想按键随时有效,应该把两个移位函数_cror_,_crol_ 放在主程中,检测key也放在...
单片机流水灯从左到右再从右到左 但是一直显示从左到右看下程序哪里是...
你这句话的意思想要左移亮完八个等吧。最后一句,自减一。但是你又跳转到 RIGHT.请注意。你的第一句是什么。又把R1赋值为8了,那么R1就一直是7,8,7,8。。了。你可以吧MOV R1 ,#08H移到RIGHT的前面。程序是一句句来的,单片机执行的RIGHT。所谓左移。你换一面看就变右移了 ...
流水灯电路板右移左移全亮全灭
流水灯电路板右移左移全亮全灭原因如下:1、电路板有问题。流水的效果只有换一个电气原件已经烧坏。2、转向开关故障。转向灯不亮,是转向开关有故障,可用螺丝刀分别接通转向开关火线与左右灯线的接线柱。3、闪光器继电器损坏或转向灯熔断丝已熔断。
关于单片机流水灯0x7e的控制问题
>>是移位操作,在被操作数是无符号数时,每移动一位,最高位就会被置零,所以当移动8次以后,temp就等于零了,然后是temp再次赋值0x7e,依次循环。如果你想实现的是带进位的循环,可以自己写一个函数,也可以使用库函数_cror_(x,i)(右移)或者_crol_(x,i)(左移),但是如果使用这两个库函数...
51单片机流水灯有句1左移i位的代码1<
这个的意思是Di位为1 要流水的话要对i ++\/-- 还有要延时 我也在学 哈哈 你的程序的意思呢C加到60000是延时,之后i从0加到8,也就是00000001变为10000000的过程,完成一个循环,则i为0,再循环,再次重复i等于几,第几位就为1,其他为零 ...
...两边向中间的流水灯,我用的是两个数分别左移右移后相与实现的,这两...
\/\/ j初始化为0x01,左移初始值 for(i=0;i<8;i++) \/\/ for循环语句,完成8个循环 { P1= ~ j; \/\/ 对变量j 中的值按位取反后,从P1口输出 delay02s( ); \/\/ 延时0.2s j= j<<1; \/\/ 左移1位 } j=0x80; \/\/ 设置右移初始值j为0x80 for (i=0;i>1; \/\/ 右移1...