单片机新手,入门前的感悟第二篇。跑马灯。
最近自学了通用IO口的基本结构与输出应用。里面有一个跑马灯的例子,我自己尝试编了一个程序,要求是这样的:设计一个四种闪烁方式交替循环的彩灯,闪烁方式如下:1.8个LED逐一点亮0.5秒左循环2轮(16次)2.8个LED逐一点亮0.5秒右循环2轮(16次)3.8个LED间隔点亮0.5秒明暗交替16次。4.8个LED随机点亮每次0.5秒,共16次。
我自己编了一个程序,第一次,应该有不少错误,请各位大虾多留言,批评指正。
#include <mega16.h>
#include<delay.h>
void F1()
{
unsigned char position=0;
int i=0;
PORTA=0xFF;
DDRA=0xFF;
while(1)
{PORTA=~(1<<position);
if(++position>=8)
{i=i++;
if(i<=2)
position=0;
else
break;}
delay_ms(500);
};
}
void F2()
{
unsigned char position=0;
int i=0;
PORTA=0xFF;
DDRA=0xFF;
while(1)
{
PORTA=~(128>>position);
if(++position>=8)
{i=i+1;
if(i<=2)
position=0;
else
break;}
delay_ms(500);
};
}
void F3()
int i;
{PORTA=0xAA;
DDRA=0xFF;
for(i=1;i<=10;i++)
{PORTA=~PORTA;
delay_ms(500);};
}
void F4()
{
unsigned char position=0;
PORTA=0xFF;
DDRA=0xFF;
for(int i=0;i<=16;i++)
{ position=rand()%8;
cout<<position<<" ";
PORTA=~(1<<position);
delay_ms(500);}
}
void main(void)
{ F1;
F2;
F3;
F4;
while (1)
{
F1;
F2;
F3;
F4;
};
} |