code uchar kbd[4][4]={
{19,15,11,7},
{18,14,10,6},
{17,13,9,5},
{16,12,8,4},
};
uchar key_value=0;
uchar key_state=0;
uchar keyser_con=0;
bit keyser_flag=0;
void keyscan(){
uchar r=255,c=255;
P3=0x0f;
P4=0X00;
if(~P3&0x0f){
if(!P30)
r=0;
else if(!P31)
r=1;
else if(!P32)
r=2;
else if(!P33)
r=3;
P3=0xf0;
P4=0Xff;
if(!P34)
c=0;
else if(!P35)
c=1;
else if(!P42)
c=2;
else if(!P44)
c=3;
if(r!=255&&c!=255)
key_value=kbd[r][c];
if(key_state<250)
key_state++;
}else{
key_value=0;
key_state=0;
}
}
void keyser(){
if(keyser_flag){
keyser_flag=0;
keyscan();
if(key_value==4&&key_state==3){
screen=(screen+1)%5;
}
}
}