急求高手解决!!!!!!跑马灯、流水灯和闭何展开,分别是led1()、 2、 3,而led4()

我想表达的是让前面3种,自动显示,但是失败了,第4种用keil c运行没错误,但是就是达不到让前面三种花色自动显示的效果,我用的proteus软件仿真的。电路图是

麻烦高手解答下,我错在在什么地方,谢谢,我的积分只有30,但真希望能解决一下

#include<reg52.h>
#define uchar unsigned char#define uint unsigned int#define dat P2#define dat2 P3void delay();void led1();void led2();void led3();void led4();void EXINTinit();void EX0INT();
uint t,n,s1,s2,s3,k,i;sbit L1=P1^0;sbit L2=P1^1;sbit L3=P1^2;sbit L4=P1^3;
void delay(uint t) {uint i,j;for(i=0;i<t;i++)for(j=0;j<100;j++);}void EXINTinit(){ EA=1; EX0=1; EX1=1; IT0=1; IT1=1;}void led1(){ dat=0x7f; delay(500); dat=0xbf; delay(500); dat=0xdf; delay(500); dat=0xef; delay(500); dat=0xf7; delay(500); dat=0xfb; delay(500); dat=0xfd; delay(500); dat=0xfe; delay(500);}void led2(){ dat=0xaa; delay(500); dat=0x55; delay(500);}void led3(){ dat=0x7e; delay(500); dat=0xbd; delay(500); dat=0xdb; delay(500); dat=0xe7; delay(500); dat=0xdb; delay(500); dat=0xbd; delay(500); dat=0x7e; delay(500);}void led4(){dat=0x7f; delay(500); dat=0xbf; delay(500); dat=0xdf; delay(500); dat=0xef; delay(500); dat=0xf7; delay(500); dat=0xfb; delay(500); dat=0xfd; delay(500); dat=0xfe; delay(500); dat=0xaa; delay(500); dat=0x55; delay(500); dat=0x7e; delay(500); dat=0xbd; delay(500); dat=0xdb; delay(500); dat=0xe7; delay(500); dat=0xdb; delay(500); dat=0xbd; delay(500); dat=0x7e; delay(500);
}void EX0INT() interrupt 0{ if(L1==0) {i=1;} if(L2==0) {i=2;} if(L3==0) {i=3;} if(L4==0) {i=4;}
}
main(){ EXINTinit(); while(1) { if(i==1) {led1();} if(i==2) {led2();} if(i==3) {led3();} if(i==4) {led4();} } }

第1个回答  2013-04-22
不清楚你的L1、L2、L3、L4指的是什么?
第2个回答  2013-04-22
可以看看无锡昕尔美LED
相似回答