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;
}
新手帮下,谢谢
我知道是加一个变量,但是我是新手不会加,麻烦帮我写出来好吗,谢谢了,写在我代码里 展开
{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;
}
新手帮下,谢谢
我知道是加一个变量,但是我是新手不会加,麻烦帮我写出来好吗,谢谢了,写在我代码里 展开
3个回答
展开全部
AVR 的我没用过 不过其他的单片机都是加延时的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对于楼主的提问,我的大概思想如下:关键就是该延时时间,多了慢,少了快
#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;
} }
}
#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;
} }
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询