程序比较简单,不过没用过avr的人要看懂程序估计还要熟悉avr atmega16的寄存器,这要看数据手册的,都是中文的,很方便。
编译环境是ICC AVR7.2
#include<iom16v.h>
#define uchar unsigned char
#define uint unsigned int
void Delay(uchar i)//延时函数
{
uchar j;
for(;i!=0;i--)
{
for(j=250;j!=0;j--);
}
}
void Horse(uchar i)//流水模式选择
{
switch(i)
{
case 0:PORTA=0x00;break;
case 1:PORTA=0x01;break;
case 2:PORTA=0x03;break;
case 3:PORTA=0x07;break;
case 4:PORTA=0x0f;break;
case 5:PORTA=0x1f;break;
case 6:PORTA=0x3f;break;
case 7:PORTA=0x7f;break;
case 8:PORTA=0xff;break;
default:break;
}
}
void main()
{
uchar i;
DDRA=0xff;//置为输出
PORTA=0xff;//初始为高电平
Delay(10);
PORTA=0x00;
while(1)
{
for(i=0;i<9;i++)
{
Horse(i);
Delay(100);
}
for(i=8;i!=0;i--)
{
Horse(i);
Delay(100);
}
}
}