智能车制作

标题: 新手求助,矩阵键盘,希望大神可以帮助 [打印本页]

作者: hdu    时间: 2014-7-3 13:51
标题: 新手求助,矩阵键盘,希望大神可以帮助
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

void DelayMs(int h) {
int i ;
while(h--){
for(i=0;i<=3300;i++) {
;}}
}

int KeyScan() {
int K;
DDRT=0X00;
PPST=0X00;
PERT=0XFF;

DDRB=0XF1;
PORTB=0X00;

if(PTT!=0XFF) {
DelayMs(10);

if(PTT!=0XFF) {
PORTB=0XE0;
if(PTT!=0XFE){
K=PTT&0xEF;
while(PTT!=0XFE);
return K;
}
PORTB=0XD0;
if(PTT!=0XFD){
K=PTT&0XDF;
while(PTT!=0XFD);
return K;
}

PORTB=0XB0;
if(PTT!=0XFB){
K=PTT&0XBF;
while(PTT!=0XFB);
return K;
}
PORTB=0X70;
if(PTT!=0XF7){
K=PTT&0X7F;
while(PTT!=0XF7);
return K;
}

}

}


  return 0xFF;

}


int  KeyProcess(  )
{
    switch( KeyScan( ) )
    {   case 0xEE: return 0;    break;                    /* 键值0 */
        case 0xDE: return 1;    break;                    /* 键值1 */
        case 0xBE: return 2;     break;                   /* 键值2 */
        case 0x7E: return 3;      break;                  /* 键值3 */
        case 0xED: return 4;      break;                  /* 键值4 */
        case 0xDD: return 5;     break;                   /* 键值5 */
        case 0xBD: return 6;    break;                    /* 键值6 */
        case 0x7D: return 7;    break;                    /* 键值7 */
        case 0xEB: return 8;    break;                    /* 键值8 */
        case 0xDB: return 9;    break;                    /* 键值9 */
        case 0xBB: return 10;    break;                   /* 键值10 */
        case 0x7B: return 11;   break;                    /* 键值11 */
        case 0xE7: return 12;   break;                    /* 键值12 */
        case 0xD7: return 13;   break;                    /* 键值13 */
        case 0xB7: return 14;   break;                    /* 键值14 */
        case 0x77: return 15;  break;                     /* 键值15 */
        default:   return 0xFF; break;                    /* 无键值 */
    }

}


void main(void) {

  for(;;) {
  if (KeyProcess()==2)  {

  DDRB=0X01;
  PORTB=0X01;   
  }
  else
  PORTB=0X00;
  }
}






其中,B口的高四位控制行线,低四位控制列线,为什么下载完程序后,B口的第五端口的灯常亮,按键没有起到作用。
新手求教,不胜感激。



作者: chenqiang    时间: 2014-7-3 21:04
单步调试找问题嘛,。。很简单
作者: hdu    时间: 2014-7-4 09:26
chenqiang 发表于 2014-7-3 21:04
单步调试找问题嘛,。。很简单

新手,单步调试的时候,怎么按按键啊?

作者: chenqiang    时间: 2014-7-4 21:53
hdu 发表于 2014-7-4 09:26
新手,单步调试的时候,怎么按按键啊?

就用手按按键啊,然后多设几个断点,看看在哪一步出错就好了

作者: hdu    时间: 2014-7-7 16:21
谢谢啊





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2