|
可以根據(jù)這個(gè)程序改自己想要的
#include<reg52.h>
sbit beep=P1^5;
sbit k1=P3^1;
sbit k3=P3^2;//外部中斷0 p32
sbit led=P2^0;
#define N P2
typedef unsigned int ui;
typedef unsigned char uc;
uc num;
uc zd_bz;
void delay(ui i)
{
while(i--);
}
void fmq()//蜂鳴器
{
beep=~beep;
delay(100);
}
void led0()//流水燈
{
N=0xff;
N=0xfe;
fmq();
delay(50000);
if(num!=0){return;}
P0=0xfe;
N=0xfd;
fmq();
delay(50000);
if(num!=0){return;}
P0=0xfe;
N=0xfb;
fmq();
delay(50000);
if(num!=0){return;}
P0=0xfe;
N=0xf7;
fmq();
delay(50000);
if(num!=0){return;}
P0=0xfe;
N=0xef;
fmq();
delay(50000);
if(num!=0){return;}
P0=0xfe;
N=0xdf;
fmq();
delay(50000);
if(num!=0){return;}
P0=0xfe;
N=0xbf;
fmq();
delay(50000);
if(num!=0){return;}
P0=0xfe;
N=0x7f;
fmq();
delay(50000);
if(num!=0){return;}
P0=0xfe;
}
void led1()//led對稱亮
{
while(1)
{
N=0x7e;
fmq();
delay(35000);
//delay(35000);
if(num!=1){break;}
P0=0xfc;
N=0xbd;
fmq();
delay(35000);
//delay(35000);
if(num!=1){break;}
P0=0xfc;
N=0xdb;
fmq();
delay(35000);
//delay(35000);
if(num!=1){break;}
P0=0xfc;
N=0xe7;
fmq();
delay(35000);
//delay(35000);
if(num!=1){break;}
P0=0xfc;
N=0xe7;
fmq();
delay(35000);
//delay(35000);
if(num!=1){break;}
P0=0xfc;
N=0xdb;
fmq();
delay(35000);
//delay(35000);
if(num!=1){break;}
P0=0xfc;
N=0xbd;
fmq();
delay(35000);
//delay(35000);
if(num!=1){break;}
P0=0xfc;
N=0x7e;
fmq();
delay(35000);
//delay(35000);
if(num!=1){break;}
P0=0xfc;
}
}
void led2()//led分別單雙數(shù)亮
{
while(1)
{
N=0xaa;
fmq();
delay(50000);
delay(50000);
if(num!=2){break;}
P0=0xf8;
N=0x55;
fmq();
delay(50000);
delay(50000);
P0=0xf8;
if(num!=2){break;}
P0=0xf8;
}
}
void led3()//通過按鍵k1使led一個(gè)一個(gè)亮
{
ui i;
N=0xfe;
while(1)
{
if(k1==0)
{
switch(i)
{
case(0):N=0xfd;fmq();i++;break;
case(1):N=0xfb;fmq();i++;break;
case(2):N=0xf7;fmq();i++;break;
case(3):N=0xef;fmq();i++;break;
case(4):N=0xdf;fmq();i++;break;
case(5):N=0xbf;fmq();i++;break;
case(6):N=0x7f;fmq();i++;break;
case(7):N=0xff;fmq();i++;break;
}
while(!k1);
}
if(i>=8){i=0;break;}
P0=0xf0;
if(num!=3){break;}
}
}
void init()//中斷初始化
{
IT0=1;//外部中斷0 跳變觸發(fā)
EX0=1;//外部中斷0 p32
EA=1;
}
void main()
{
init();
while(1)
{
switch(num)
{
case(0):led0();
P0=0xfe;
break;
case(1):led1();
P0=0xfc;
break;
case(2):led2();
P0=0xf8;
break;//num++;
case(3):led3();
P0=0xf0;
break;
}
}
}
void init0() interrupt 0//中斷程序 k3
{
//EX0=0;
if(num==0){P0=0xfe;}
num=num+1;
if(num==1){P0=0xfc;}
if(num==2){P0=0xf8;}
if(num==3){P0=0xf0;}
if(num>3){num=0;}
//EX0=1;
} |
評分
-
查看全部評分
|