keil流水灯问题?

# include <reg51.h>
# include <intrins.h>

void mDelay(unsigned int Delay)
{
unsigned int i;
for (;Delay>0;Delay--)
{
for(i=0; i<54; i++) ;
}
}
void main()
{
unsigned int x;
unsigned char Outdata=0xfe;
for(x=0;x<=7;x++)
{
P1 = Outdata;
Outdata = _crol_(Outdata,1);
mDelay(500);
}
}
怎么改一下这个程序,可以八个灯里两个灯一起从左往右流水
怎么可以一个灯从左往右,从右往左周而复始

两个灯一起流动,改Outdata的初值为0xfd; 或Outdata=0x3f;
左右来回流动,用两个for循环,一个循环里用_crol_,另一个循环里用_cror_函数。追问

仿真成功了,想问一下为什么两个灯一起流动,只要改一下初值就行了

追答

初始值就是两个灯亮,以后再循环也保持有两个灯亮,就这么简单吗。请采纳!

温馨提示:内容为网友见解,仅供参考
无其他回答

我用keil c51编了一个流水灯程序,编译无误却只有第一和第二个灯亮了...
1 你的定时器没有重装,导致第一次中断和后面的中断时间不一样,第一次时间短,后面的时间一直是以65536个周期中断的.2 你在中断函数里用了 for 循环,for循环是一下子就执行完了的,而不是你想象的每中断一次才执行一次.for(a=0;a<8;a++){ P1=(P1<<1)+1; \/\/---这一句,使得你的第二...

keil汇编语言编程流水灯出现错误1.asm(41): 错误 A45: UNDEFINED SYMBOL...
DO: MOV R1,#200这里的标号是DO D1: MOV R2,#123 NOP D2: DJNZ R2,D2 DJNZ R1,D1 DJNZ R0,D0 这里是D0 数字0和字母O写错了

keil软件中有段这样的程序大家帮忙看下!!!
temp 过渡作用。。用来存储P1口的高低电平状态 0xfe=1111 1110 你的P1口是led的话就是 1111 1110 让最后一个LED灯亮 下边那句是是一个左移函数,你的这个程序实现的是左移流水灯效果 (temp,1)控制一次左移一个LED灯

keil c51编写流水灯程序出现undefined identifier 求高手帮忙啊_百度知 ...
unsigned char led8[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char led81[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};这些移到include的下面 另外 j跟 k要定义

用keil4弄一个流水灯,要求,8个灯,第一次,1号亮,第二次,1号3号亮_百 ...
include<reg51.h> define uchar unsigned char uchar led[]={0xfe,0xfa,0xea,0xaa,0xfd,0xf5,0xd5,0x55};void delay(unsigned char a){ while(a--);} main(){ uchar i;while(1){ for(i=0;i<8;i++){ P1=led[i];delay(50000);} } } ...

keil 流水灯程序 开发板灯不亮。
sbit ENLED = P1^4,你写成3了,能一样吗,LED灯引脚定义出错,灯根本没有工作,能亮就怪了

谁帮我看下51单片机流水灯怎么不能正常流水闪亮
你程序最后的运行结果是不是所有LED都亮了,如果是这样的话,就是可能你P0口没有加上拉电阻,单片机P0不加上拉电阻的话,是输出不了高电平的。还有,楼主以后问程序问题的同时,最好也把硬件电路图给出,这样大家也才好回答。。。希望可以帮到你。。。

求助keil出现 LED.C(5): error C132: 'main': not in formal parameter...
void delay(unsigned int t);\/\/函数的声明 void main(){ unsigned char i;P1=0xfe;while(1) \/\/循环跳出时重新循环 使流水灯连续工作 { for(i=0;i<8;i++){ delay(50000);P1<<=1;P1=P1|0X01; \/\/左移后原来那一位变成1 } } } void delay(unsigned int t){ while(--t);\/\/0...

keil软件用单片机控制8个LED流水灯来回点亮(C语言程序)
w<<=1; \/\/点亮灯的位置移动,最低位补0 w=w|0x01; \/\/将最低位置1 delay(500); \/\/延时 } } } 或:include "reg51.h"\/\/程序中使用_crol_函数,所以要包含头文件"intrins.h"include "intrins.h"void delay(unsigned int t){ unsigned int i,j;for(i=t;i>0;i--)for(...

关于单片机流水灯 为什么我的灯都不亮啊??与proteus联调时还说代码没...
P0=_crol_(P0,1);这个函数=_crol_在哪里 很明显你的HEX文件没有生成,而且你的二极管负端全部都接的高电平,按照你这种接法 必须让你二极管的正端的电压高于VCC,那是不可能的。所以你重新看哈hex文件是否生成,再把二极管换过来

相似回答