ATmega8535L跑马灯程序(ICC编译)
扫描二维码
随时随地手机看文章
ATmega8535L跑马灯程序
//*********************ICCAVRV6.30编译*******************//
#include
#defineucharunsignedchar//数据类型说明
#defineuintunsignedint//数据类型说明
voidDelayMs(uinti)//Ms级延时函数,参数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)//程序无条件执行
{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秒
}
}