#include <avr/io.h>
#include <avr/delay.h>
//注: 内部函数_delay_ms() 最高延时 262.144mS@1MHz 即 32.768ms@8MHz
// 该函数可以实现较精确的定时for()/while()指令很难计算延时时间
// 为了使 _delay_ms()函数的延时正确,须在makefile中设定F_CPU为实际的系统时钟频
// 本范例为1MHz内部RC振荡器 即 F_CPU=1000000
int main(void)
{
unsigned char i,j,k; //定义变量
PORTA=0xFF;
DDRA=0xFF; //PA口设为输出高电平,灯灭
while(1)
{
i=1;
for (j=0;j<8;j++) //循环8次,即PA0~~PA7轮流闪亮
{
PORTA=~i; //反相输出,低电平有效
for (k=0;k<10;k++) _delay_ms(30); //延时 30*10=300毫秒,可自行调节
i=i<<1; //左移一位
// 0b00000001 PA0
// 0b00000010 PA1
// 0b00000100 PA2
// 0b00001000 PA3
// 0b00010000 PA4
// 0b00100000 PA5
// 0b01000000 PA6
// 0b10000000 PA7
}
}
}