智能车制作
标题:
新手求助,矩阵键盘,希望大神可以帮助
[打印本页]
作者:
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