AVR 单片机C语言怎样实现流水灯一次循环以后如何加快发光速度在循环,一直循环到感觉LED全亮的时候在减速

constunsignedcharLED_TABLE[16]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe... const unsigned char LED_TABLE[16] =
{0xfe, 0xfc, 0xf8, 0xf0,0xe0,0xc0, 0x80, 0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};

unsigned long i = 0;
unsigned char j = 0;

void main(void)
{
PORTC = 0xff;
DDRC = 0xff;

while (1)
{
// if (++i > 347826)
if (++i>50000)
{
PORTC = LED_TABLE[j];
if(++j > 15)
{
j = 0;
}
i=0;
}
新手帮下,谢谢

我知道是加一个变量,但是我是新手不会加,麻烦帮我写出来好吗,谢谢了,写在我代码里
展开
 我来答
ahong2hao
2011-04-04 · 超过13用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:40.1万
展开全部
加一个变量,unsigned int x;
x=50000;
while (1)
{

if (++i>x)
{
PORTC = LED_TABLE[j];

if(++j > 15)
{
j = 0;
x--;//这样,每循环一次,x就越来越小,速度就越快了,如果你觉得变化太慢,
//那就x-=100,x-=200,减的越多,变化越快。

}
i=0;
}
辛德滴瑞拉bC
2011-04-04 · TA获得超过152个赞
知道答主
回答量:78
采纳率:0%
帮助的人:32.9万
展开全部
AVR 的我没用过 不过其他的单片机都是加延时的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
snyanglq
2011-04-04
知道答主
回答量:31
采纳率:0%
帮助的人:21.6万
展开全部
对于楼主的提问,我的大概思想如下:关键就是该延时时间,多了慢,少了快
#include<iom16v.h>
#include<macros.h>
void delay(int k)
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<1141;j++);
}
void main(void)
{
int i,j=100,k;
DDRB=0xff;
while(1)
{
for(i=0;i<8;i++)
{
PORTB=BIT(i);
delay(j);
if(j==100)
k=0;
if(j==0)
k=1;
if(k==0)
j=j-10;
if(k==1)
j=j+10;

} }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式