单片机实现间隔300ms第一次一个管亮流动一次, 第二次两个管亮流动,依次到8个管亮, 然后重复整个过程。 5
我自己写了后第一和第二次是可以的。。。可是第三次开始就错了。。。求解。。。求大神帮忙。。。。。程序#include<reg51.h>#include<math.h>#de...
我自己写了后第一和第二次是可以的。。。可是第三次开始就错了。。。求解。。。求大神帮忙。。。。。
程序
#include<reg51.h>
#include<math.h>
#define uint unsigned int
#define uchar unsigned char
#include <intrins.h>
uchar temp;
uint a,b,c;
uint d;
void delay(uint);
void main()
{
while (1)
{
temp=0xff;
for(a=0;a<8;a++)
{
temp=temp-pow(2,a);
for(c=a;c<8;c++)
{
P1=temp;
delay(500);
temp=_crol_ (temp,1);
};
};
};
}
void delay(z)//延时程序
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=110;y>0;y--)
{};
};
} 展开
程序
#include<reg51.h>
#include<math.h>
#define uint unsigned int
#define uchar unsigned char
#include <intrins.h>
uchar temp;
uint a,b,c;
uint d;
void delay(uint);
void main()
{
while (1)
{
temp=0xff;
for(a=0;a<8;a++)
{
temp=temp-pow(2,a);
for(c=a;c<8;c++)
{
P1=temp;
delay(500);
temp=_crol_ (temp,1);
};
};
};
}
void delay(z)//延时程序
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=110;y>0;y--)
{};
};
} 展开
展开全部
用kei软件可以用c语言编写单片程序在通过lSTC-ISP V29 Beta5软件下载到单片机的! 给你看看我的一个小程序: //8个发光管来回流动,每个管亮100ms, /,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
pow的意思你可能没看懂 在第三次的时候temp =temp-4; 这儿temp的值就是1111 1011 应该就只有第三个灯亮起 第二次应该也有问题吧, temp=1111 11101 不会两个灯一起亮;temp=temp-pow(2,a+1)-1;这样就对了
追问
首先谢谢你的回答。。。你的回答也是可行的。。。。不过要改为temp=temp-pow(2,a+1)+1并且temp=0xff要加到第一个for循环里面。。。。这样就好了。。。。还有我的源程序里temp=0xff在for语句外面所以temp是随着for循环在变。。。我自己的程序只要在第二个for循环执行完后执行一句 temp=_crol_(temp,a);使temp值变为刚执行第二个for循环的值。。。这样也能成功。。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是我编的,经过反复修改,已经很短了,实际上此题的难点是算法。
#include <REGX52.H>
#include <INTRINS.H>
#define ui unsigned int
#define uc unsigned char
void yanshi(ui);
ui x,y,e;
uc a,b,c,d;
void main()
{
while(1)
{
e=1;
for(a=1;a<=8;a++)
{
b=9-a;
c=0xff;
e=e*2;
d=c-e+1;
while(b)
{
P1=d;
yanshi(300);
d=_crol_(d,1);
b--;
}
}
}
}
void yanshi(ui k)
{
for(x=k;x>0;x--)
for(y=110;y>0;y--);
}
#include <REGX52.H>
#include <INTRINS.H>
#define ui unsigned int
#define uc unsigned char
void yanshi(ui);
ui x,y,e;
uc a,b,c,d;
void main()
{
while(1)
{
e=1;
for(a=1;a<=8;a++)
{
b=9-a;
c=0xff;
e=e*2;
d=c-e+1;
while(b)
{
P1=d;
yanshi(300);
d=_crol_(d,1);
b--;
}
}
}
}
void yanshi(ui k)
{
for(x=k;x>0;x--)
for(y=110;y>0;y--);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议你自己加断点走一下程序,希望对你有帮助。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询