当前位置:首页 > 单片机 > 单片机
[导读] ATmega8535L跑马灯程序//*********************ICCAVRV6.30编译*******************//#include//头文件,AT90S8535单片机的寄存器定义#defineucharunsignedchar//数据类型说明#defineuintunsignedint//

ATmega8535L跑马灯程序

//*********************ICCAVRV6.30编译*******************//

#include//头文件,AT90S8535单片机的寄存器定义

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


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭