WinAVR(GCC)快速入门源代码1

整理/测试:阿莫(armok) / 代码设计:HJJourAVR / 2005-08-28 / www.OurAVR.com

#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
                }
       }
}