#include
#define int8 unsigned char
#define int16 unsigned int
#define Ledout P0
int8 Led[]={0xff,0x7e,0x3c,0x18,0x00};
int8 i;
/*延时程序微妙*/
void Delay_us(int8 t)
{
while(--t);
}
/*延时程序毫秒*/
void Delay_ms(int16 t)
{
while(t--)
{
Delay_us(245);
Delay_us(245);
}
}
/*左循环*/
void Led_light()
{
int8 value=0xff;
for(i=0;i<=8;i++)
{
Ledout=value;
value<<=1;
Delay_ms(200);
}
}
/*右循环*/
void Led_right()
{
int8 value=0xff;
for(i=0;i<=8;i++)
{
Ledout=value;
value>>=1;
Delay_ms(200);
}
}
/*向内*/
void Led_inside()
{
for(i=0;i<5;i++)
{
Ledout=Led[i];
Delay_ms(200);
}
}
/*向外*/
void Led_outside()
{
for(i=0;i<4;i++)
{
Ledout=~Led[3-i];
Delay_ms(200);
}
}
/*中断初始化*/
void Inter_Inital()
{
EA=1; //打开总中断
IT0=1; //下降沿有效
EX0=1; //中断0允许
}
/*中断服务程序*/
void Inter0() interrupt 0
{
int8 port;
EA=0; //关闭总中断
port=(P1&0x0f);
if(port==0x0e)
{
Led_light();
}
if(port==0x0d)
{
Led_right();
}
if(port==0x0b)
{
Led_inside();
}
if(port==0x07)
{
Led_outside();
}
EA=1;//开启总中断
}
/*主函数*/
void main()
{
Inter_Inital();
while(1);
}