单片机中断实验

#include<reg51.h>
#define True 1
#define False 0
int status=3,i=0;
int kl[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned int t=0;
void light(int l_r){
    int b=0;
    if(l_r==True){
        for(b=0;b<8;b++){
            P0=kl[b];
            for(t=0;t<30000;t++);
            if(P1==0xfd){status=3;break;}
        }
    }
    else{
        for(b=7;b>-1;b--){
            P0=kl[b];
            for(t=0;t<30000;t++);
            if(P1==0xfd){status=3;break;}
        }
    }
}
void main(){
    IT1=1;
    IT0=0;
    EA=1;
    EX1=1;
    while(1){
        if(P1==0xfd)status=3;
        switch(status){
            case 3:P0=0xff;break;
            case 0:light(True);break;
            case 1:light(False);break;
            case 2:P0=0x00;for(t=0;t<30000;t++);P0=~P0;for(t=0;t<30000;t++);
        }
    }
}
void f()interrupt 2{
    static int i=0;
    if(i>2)i=0;
  status=i;
    ++i;
}

附上电路图:

keil-zd.png