if((P2&0x01)==0) { fj++; if(fj==50) { fj=0; if((P2&0x01)==0) { t2++; if(t2==60) t2=0; } } }

if (sj !=0) { sj--; if (sj==0 && (P2&0x10)==0) { t3++; if(t3==24) t3=0; } } else if ((P2&0x10)==0) sj=25;

请问有谁知到 这两段程序的不同么

为什么第一个有问题啊? 以上两程序第一个是分钟加,第二个是时钟加 第一个是我写的,在开发板上测试按下按钮后先全部数码管暗掉 第二个是我参考的资料 没有任何问题 但是自己又看不出来有什么不同 望指点一下 P0口接段码P2口接位码

本人写的总程序 #include #include #define ui unsigned int #define uc unsigned char sbit dula=P2^6; sbit wela=P2^7; uc shih,shil,miaol,miaoh,fenl,fenh; ui t,t1,t2,t3,t4,fj,sj; uc code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; uc code tableh[]={ 0xbf,0x86,0xdb,0xcf,0xe6,0xed, 0xfd,0x87,0xff,0xef,0xf7}; void display(uc,uc,uc,uc,uc,uc); void delay(ui); void main() { TMOD=0X10; TH1=(65536-10000)/256; TL1=(65536-10000)%256; EA=1; ET1=1; TR1=1; while(1) {

display(shih,shil,fenh,fenl,miaoh,miaol); } }

void timer()interrupt 3 { TH1=(65536-10000)/256; TL1=(65536-10000)%256; t++; if(t==100) { t=0; t1++; } if(t1==60) { t1=0; t2++; } if(t2==60) { t3++; t2=0; } if(t3==24) t3=0;

if((P2&0x01)==0) { fj++; if(fj==50) { fj=0; if((P2&0x01)==0) { t2++; if(t2==60) t2=0; } } }

if (sj !=0) { sj--; if (sj==0 && (P2&0x10)==0) { t3++; if(t3==24) t3=0; } } else if ((P2&0x10)==0) sj=25;

miaol=t1%10; miaoh=t1/10; fenl=t2%10; fenh=t2/10; shil=t3%10; shih=t3/10; }

void display(uc sh,uc sl,uc fh,uc fl,uc mh,uc ml) { P0=0xff; wela=1; wela=0;

dula=1; P0=table[ml]; dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; delay(1);

P0=0xff; wela=1; wela=0;

dula=1; P0=table[mh]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; delay(1);

P0=0xff; wela=1; wela=0;

dula=1; P0=tableh[fl]; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(1);

P0=0xff; wela=1; wela=0;

dula=1; P0=table[fh]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(1);

P0=0xff; wela=1; wela=0;

dula=1; P0=tableh[sl]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(1);

P0=0xff; wela=1; wela=0;

dula=1; P0=table[sh]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(1);

}

void delay(ui z) { ui x,y; for(x=z;x>0;x--) for(y=10;y>0;y--); }