单片机C语言,按一下键第一个灯闪烁,在按下,第2灯闪烁,第一个灭,在按下第3个闪烁,前两个灭,以此类推

如题所述

写得啰嗦点,但还看得明白
#include <reg51.h>
#define uchar unsigned char
uchar a;
void delay(unsigned int ms )
{
unsigned char i;
while(ms--)
for(i=0;i<123;i++);
}

void EX0INTinit()
{
EA=1;
EX0=1;
IT0=1;
}

void EX0INT() interrupt 0
{
a++;
if(a==9)
a=1;
}
void main()
{
EX0INTinit();
while(1)
{
if(a==1)
{
P1=0xfe;
delay(500);
P1=0xff;
delay(500);
}
if(a==2)
{
P1=0xfd;
delay(500);
P1=0xff;
delay(500);
}
if(a==3)
{
P1=0xfb;
delay(500);
P1=0xff;
delay(500);
}
if(a==4)
{
P1=0xf7;
delay(500);
P1=0xff;
delay(500);
}
if(a==5)
{
P1=0xef;
delay(500);
P1=0xff;
delay(500);
}
if(a==6)
{
P1=0xdf;
delay(500);
P1=0xff;
delay(500);
}
if(a==7)
{
P1=0xbf;
delay(500);
P1=0xff;
delay(500);
}
if(a==8)
{
P1=0x7f;
delay(500);
P1=0xff;
delay(500);
}
}
}

简单一点的。
#include <reg51.h>
#define uchar unsigned char
uchar a;
uchar code tab[]={0xff,0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
void delay(unsigned int ms )
{
unsigned char i;
while(ms--)
for(i=0;i<123;i++);
}

void EX0INTinit()
{
EA=1;
EX0=1;
IT0=1;
}

void EX0INT() interrupt 0
{
a++;
if(a==9)
a=1;
}
void main()
{
EX0INTinit();
while(1)
{
P1=tab[a];
delay(500);
P1=0xff;
delay(500);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-02
这个,随便那本教材上都有,一个“setb”好
相似回答
大家正在搜