智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1179|回复: 4
打印 上一主题 下一主题

[编程类] 新手求助,矩阵键盘,希望大神可以帮助

[复制链接]

4

主题

156

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2472

活跃会员奖章优秀会员奖章

威望
1223
贡献
747
兑换币
672
注册时间
2014-7-3
在线时间
251 小时
跳转到指定楼层
1#
发表于 2014-7-3 13:51:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
#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口的第五端口的灯常亮,按键没有起到作用。
新手求教,不胜感激。


回复

使用道具 举报

14

主题

644

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4415

在线王奖章优秀会员奖章活跃会员奖章论坛元老奖章

威望
2369
贡献
358
兑换币
1614
注册时间
2013-9-23
在线时间
844 小时
2#
发表于 2014-7-3 21:04:48 | 只看该作者
单步调试找问题嘛,。。很简单
回复

使用道具 举报

4

主题

156

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2472

活跃会员奖章优秀会员奖章

威望
1223
贡献
747
兑换币
672
注册时间
2014-7-3
在线时间
251 小时
3#
 楼主| 发表于 2014-7-4 09:26:20 | 只看该作者
chenqiang 发表于 2014-7-3 21:04
单步调试找问题嘛,。。很简单

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

使用道具 举报

14

主题

644

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4415

在线王奖章优秀会员奖章活跃会员奖章论坛元老奖章

威望
2369
贡献
358
兑换币
1614
注册时间
2013-9-23
在线时间
844 小时
4#
发表于 2014-7-4 21:53:35 | 只看该作者
hdu 发表于 2014-7-4 09:26
新手,单步调试的时候,怎么按按键啊?

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

使用道具 举报

4

主题

156

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2472

活跃会员奖章优秀会员奖章

威望
1223
贡献
747
兑换币
672
注册时间
2014-7-3
在线时间
251 小时
5#
 楼主| 发表于 2014-7-7 16:21:50 | 只看该作者
谢谢啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 01:54 , Processed in 0.110989 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表