c语言--请大神帮我检查下矩阵键盘程序哪里出错了

2019-07-16 05:07发布

请大神帮我检查下矩阵键盘程序哪里出错了
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z);
void display(uchar a);
uchar keyscan();
uchar n,i;
uchar code table[]=
{
0xc0, 0xf9, 0xa4, 0xb0, 0x99,
0x92, 0x82, 0xf8, 0x80, 0x90, 0xff
}

void main()
{
i=17;
P2=0x00;
while(1)
{
  display(keyscan());
}
}
uchar keyscan()
{
P1=0xfe;
n=P1;
n=n&0xf0;
while(n!=0xf0)
{
  delay(10);
  n=P1;
  n=n&0xf0;
  while(n!=0xf0)
  {
   n=P1;
   switch(n)
   {
    case 0x7e:i=1;
    break;
    case 0xbe:i=2;
    break;
    case 0xde:i=3;
    break;
    case 0xee:i=4;
    break;
   }
  }
}
P1=0xfd;
n=P1;
n=n&0xf0;
while(n!=0xf0)
{
  delay(10);
  n=P1;
  n=n&0xf0;
  while(n!=0xf0)
  {
   n=P1;
   switch(n)
   {
    case 0x7d:i=1;
    break;
    case 0xbd:i=2;
    break;
    case 0xdd:i=3;
    break;
    case 0xed:i=4;
    break;
   }
  }
}
P1=0xfb;
n=P1;
n=n&0xf0;
while(n!=0xf0)
{
  delay(10);
  n=P1;
  n=n&0xf0;
  while(n!=0xf0)
  {
   n=P1;
   switch(n)
   {
    case 0x7b:i=1;
    break;
    case 0xbb:i=2;
    break;
    case 0xdb:i=3;
    break;
    case 0xeb:i=4;
    break;
   }
  }
}
P1=0xf7;
n=P1;
n=n&0xf0;
while(n!=0xf0)
{
  delay(10);
  n=P1;
  n=n&0xf0;
  while(n!=0xf0)
  {
   n=P1;
   switch(n)
   {
    case 0x77:i=1;
    break;
    case 0xb7:i=2;
    break;
    case 0xd7:i=3;
    break;
    case 0xe7:i=4;
    break;
   }
  }
}
return i;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void display(uchar a)
{
P0=table[a-1];
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
zzwan
1楼-- · 2019-07-16 11:06
你这应该是4*4矩阵键盘吧,键盘扫描返回值怎么只有1、2、3、4. 你是复制、黏贴后忘了修改了吧?
zzwan
2楼-- · 2019-07-16 14:56
 精彩回答 2  元偷偷看……
zhy1989
3楼-- · 2019-07-16 15:44
1、2、3、4改后还是不行啊,不能生成HEX文件
ZHY1.C(16): error C141: syntax error near '{'
ZHY1.C(17): error C231: 'i': redefinition
ZHY1.C(17): error C231: 'i': redefinition
ZHY1.C(18): error C231: 'P2': redefinition
ZHY1.C(18): error C231: 'P2': redefinition
ZHY1.C(19): error C141: syntax error near 'while'
ZHY1.C(19): error C141: syntax error near '1'
ZHY1.C(21): error C141: syntax error near '(', expected ')'
ZHY1.C(21): error C141: syntax error near ')'
Target not created
zhy1989
4楼-- · 2019-07-16 18:42
大哥,帮个忙撒
zhy1989
5楼-- · 2019-07-16 19:18
哦,我发现错误了,原来在编码那里要加分号
细节很重要啊
希望大家引以为戒
zhy1989
6楼-- · 2019-07-17 00:07
不行,是乱码
改了还不行
帮下,版主

一周热门 更多>