ATmega8535L跑馬燈程序(ICC編譯)
ATmega8535L跑馬燈程序
//*********************ICCAVRV6.30編譯*******************//
#include
#defineucharunsignedchar//數(shù)據(jù)類型說明
#defineuintunsignedint//數(shù)據(jù)類型說明
voidDelayMs(uinti)//Ms級延時函數(shù),參數(shù)i:延時時間
{uintj;
for(;i!=0;i--)
{for(j=8000;j!=0;j--);}
}
voidHorse(uchari)//跑馬燈程序,通過步判斷點亮相應的LED
{switch(i)//高電平點亮LED
{case1:PORTA=0x01;break;//00000001B點亮LED1
case2:PORTA=0x03;break;//00000011B點亮LED1~LED2
case3:PORTA=0x07;break;//00000111B點亮LED1~LED3
case4:PORTA=0x0f;break;//00001111B點亮LED1~LED4
case5:PORTA=0x1f;break;//00011111B點亮LED1~LED5
case6:PORTA=0x3f;break;//00111111B點亮LED1~LED6
case7:PORTA=0x7f;break;//01111111B點亮LED1~LED7
case8:PORTA=0xff;break;//11111111B點亮LED1~LED8
default:break;}
}
voidmain(void)
{uchari;
DDRA=0xff;//端口設置:PA口設置為推挽1輸出
PORTA=0xff;
PORTA=0x00;//PORTA初始值為0,滅掉所有的LED
DelayMs(1000);
while(1)//程序無條件執(zhí)行
{for(i=0;i<9;i++)//依次點亮LED1~LED8
{Horse(i);
DelayMs(1000);}//點亮時間約1秒
for(i=7;i!=0;i--)//依次熄滅LED8~LED1
{Horse(i);
DelayMs(1000);}//熄滅時間約1秒
}
}