#include <REG51.H> #define uchar unsigned char #define uint unsigned int uchar code SEG7[10]={0x12,0xb7,0x19,0x91,0xb4,0xd0,0x50,0x97,0x10,0x90}; uchar ACT[4]={0xfe,0xfd,0xfb,0xf7}; /***************************************************************/ uint data cnt=0; bit bdata bitflag; /**********************************************/ void init(void) { bitflag=0; EX0=1; IT0=1; EA=1; } /**************************************************/ void delay(uint k) { uint data i,j; for(i=0;i<k;i++) { for(j=0;j<121;j++){;} } } /**************************************************/ void main(void) { uchar i; init(); while(1) { if(bitflag=!bitflag)cnt++; if(cnt>99)cnt=0; for(i=0;i<200;i++) { P1=SEG7[cnt/10]; P2=ACT[0]; delay(1); P1=SEG7[cnt%10]; P2=ACT[1]; delay(1); } } } /************************************************/ void extern_int0(void) interrupt 0 using 0 { bitflag=!bitflag; } 上面这个计数程序,用数码管显示。我用下降沿中断有效,我在INTO出接了个对地的开关,我这个程序的目的是按一下记一个数的,可是现在只要通电运行后就开始自己一个数一个数自加,就像秒表一样,为什么呢,是程序问题么,可我看不出有问题啊,高手请指教 |