|
下面是线反转法的程序。。我把这个函数用在程序中但是运行起来出错了。高四位引脚总是保持在低电平。按了键也没反应
这两个电路图的接法有什么不同啊。。
- /*请问这个程序有什么问题没??怎么我调用了这个函数按了键没反应呢。*/
- void keyScan5()
- {
- UCHAR i, j;
- while(1)
- {
- P2=0x0F;
- if((P2&0x0F)!=0x0F)
- {
- switch(P2)
- {
- case 0x07: i=3; break;
- case 0x0b: i=2; break;
- case 0x0d: i=1; break;
- case 0x0e: i=0; break;
- default: break;
- }
- }
- delay(10);//软件去抖动
- P2=0xF0;//反转行和列上的电平
- if((P2&0xF0)!=0xF0)
- {
- switch(P2)
- {
- case 0x70: j=3; break;
- case 0xb0: j=2; break;
- case 0xd0: j=1; break;
- case 0xe0: j=0; break;
- default: break;
- }
- //P1=num[j][i];//P1输出对应的按键值
- *下面的语句我是为了测试下按键扫描的程序是否有问题
- 本来按下第一行第二个键灯就应该会亮的。但是我按了不亮
- */
- if(i == 0 && j == 1)
- {
- P1 = 0x00;
- while(1);
- }
- }
- }
- }
- void main()
- {
- while(1)
- {
- keyScan5();
- }
- }
复制代码
我画的电路画
|
|