先看我的程序: P3=0x0f; if(P3!=0x0f) { for(a=0x00;a<0xff;a++); if(P3!=0x0f) { a=P3; P3=0xf0; a=a+P3; } } else next=1; if(next==1) { switch(a) { case 0xe7:puttobuf(a);break; //按1 case 0xeb:puttobuf(a);break; //按2 case 0xed:puttobuf(a);break; //按3 case 0xd7:puttobuf(a);break; //按4 case 0xdb:puttobuf(a);break; //按5 case 0xdd:puttobuf(a);break; //按6 case 0xb7:puttobuf(a);break; //按7 case 0xbb:puttobuf(a);break; //按8 case 0xbd:puttobuf(a);break; //按9 case 0x7b:puttobuf(a);break; //按0 case 0xee:key[0]=0x00;break; //del case 0xde:puttobuf(0xff);break; //返回 case 0xbe:break; //输入字 case 0x7e:break; //确认 case 0x77:break; //空格 case 0x7d:break; //输入号码 default:{break;} } 我的p3.1脚测到系低,p3.0、p3.2、p3.3都是高,p3.4至p3.7为低。程序中next的作用是让按一次执行一次,要等放开手才让它置回1。据我所观察,程序由于某种原因在一开始便自锁在next=0的状态使我按的所有键无效。而且奇怪的是低四位应该一致,但就是第二只脚不同。p3.0~p3.7分别为4、3、2、1行和1、2、3、4列。请高手指教,亿分感激!!! |