哪位高手看看我哪里错了

2019-07-16 04:34发布

void scan()
{
INT8U tmp_num;
PORTB=0xfe;
key_num=PORTB;
key_num&=0xf0;
if(key_num!=0xf0)
{
  __delay_ms(10);
  key_num=PORTB;
  key_num&=0xf0;
  if(key_num!=0xf0)
  {
   tmp_num=key_num;
   while(tmp_num!=0xf0)
   {
    tmp_num=PORTB;
    tmp_num&=0xf0;
   }
   key_num|=0x0e;
  }
  
}
PORTB=0xfd;
key_num=PORTB;
key_num&=0xf0;
if(key_num!=0xf0)
{
  __delay_ms(10);
  key_num=PORTB;
  key_num&=0xf0;
  if(key_num!=0xf0)
  {
   tmp_num=key_num;
   while(tmp_num!=0xf0)
   {
    tmp_num=PORTB;
    tmp_num&=0xf0;
   }
   key_num|=0x0d;
  }
}
PORTB=0xfb;
key_num=PORTB;
key_num&=0xf0;
if(key_num!=0xf0)
{
  __delay_ms(10);
  key_num=PORTB;
  key_num&=0xf0;
  if(key_num!=0xf0)
  {
   tmp_num=key_num;
   while(tmp_num!=0xf0)
   {
    tmp_num=PORTB;
    tmp_num&=0xf0;
   }
   key_num|=0x0b;
  }
}
PORTB=0xf7;
key_num=PORTB;
key_num&=0xf0;
if(key_num!=0xf0)
{
  __delay_ms(10);
  key_num=PORTB;
  key_num&=0xf0;
  if(key_num!=0xf0)
  {
   tmp_num=key_num;
   while(tmp_num!=0xf0)
   {
    tmp_num=PORTB;
    tmp_num&=0xf0;
   }
   key_num|=0x07;

  }
}
}
void handle()
{
switch(key_num)
{
  case 0xee:count=0;break;
  case 0xde:count=1;break;
  case 0xbe:count=2;break;
  case 0x7e:count=3;break;
  case 0xed:count=4;break;
  case 0xdd:count=5;break;
  case 0xbd:count=6;break;
  case 0x7d:count=7;break;
  case 0xeb:count=8;break;
  case 0xdb:count=9;break;
  case 0xbb:count=10;break;
  case 0x7b:count=11;break;
  case 0xe7:count=12;break;
  case 0xd7:count=13;break;
  case 0xb7:count=14;break;
  case 0x77:count=15;break;
}
}
这是矩阵键盘扫描代码可我在进入sacn()函数后发现程序卡在那里了,一直循环  
我用的是PORTB接的键盘 RB0接0 RB1接1 .........
谢谢了
这是键盘原理图 这是键盘原理图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
yy251745080
1楼-- · 2019-07-16 06:08
...慢慢找吧。。
hushichao
2楼-- · 2019-07-16 08:33
新人帮顶 赚e币   
lstcspring
3楼-- · 2019-07-16 13:14
 精彩回答 2  元偷偷看……
batman1993
4楼-- · 2019-07-16 14:22
本帖最后由 lstcspring 于 2012-9-21 21:19 编辑
lstcspring 发表于 2012-9-20 21:54
while(tmp_num!=0xf0)
一直在这儿是不?你加这句做什么用的


用来检测键盘是否松手了啊 松手检测吗 请问下哪里错了

haiwen001
5楼-- · 2019-07-16 16:27
看不明白呢,如果用的是51单片机的话,且CN18接到PORTB,
貌似执行完 key_num=PORTB;这条语句,
key_num应该是0xff啊
lstcspring
6楼-- · 2019-07-16 19:43
batman1993 发表于 2012-9-21 18:08
用来检测键盘是否松手了啊 松手检测吗 请问下哪里错了


那你仿真看一下你的程序出不来,死在哪儿了呢?

一周热门 更多>