单片机为什么按键按了数码管显示的数字没改变啊

img


按下去灯也亮了但数码管的数字没改变


#include "stc.h"
#include "hjc52.h"
#include "delay.h"
#include "intrins.h"
sbit DU=P2^6;
sbit WE=P2^7;
char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x0f,0x6f,0x77,0X7C,0X39,0X5E,0X79,0X71};


void change_P0(char i){
    

    
    DU=1;
    P0=table[i];
    DU=0;
    WE=1;
    P0=0x00;
    WE=0;
    

    
    
    
    
    

}
char temp;
void judge(char i){

    change_P0(0);
    temp=P3;
    temp=temp>>4;
    if(temp!=0xf){
        temp=P3;
        temp=temp>>4;
        delay50ms();
        if(temp!=0xf){
            
            
        temp=temp|0xf0;
        P1=temp;
        
        
//        while(temp!=0xfe){
//            
//        temp=_crol_(temp,1);
//        i++;
//    
//    }
        change_P0(1);
}
         
        }
    
    
}

void scan(){
        P3=0xfe;
        judge(1);
//      P3=0xde;
//        judge(5);
//        P3=0xbe;
//        judge(9);
//        P3=0x7e;
//        judge(13);


        


}

void main(){
    P3=0xff;
    while(1){
    
        scan();
        

    }
    
}

电路图呢