单片机实现5X5矩阵键盘

来源:百度知道 编辑:UC知道 时间:2024/06/08 19:27:12
首先小弟是单片机初学,望见谅,我现在想做一个测试装置,需要用到5X5矩阵键盘扫描,我的程序如下所示,用KEIL编译时始终出现错误提示“D3.C(47): error C175: 0x1: duplicate case value”,请各位大虾帮帮小弟,最好把我的程序运行一下就知道什么错误提示,我就这点分全部给了,谢了,小弟在线等,我快崩溃了
#include<reg52.h>
unsigned char y,z,x,temp1,temp2;
sbit a=P0^0;
sbit b=P0^1;
sbit c=P0^2;
sbit d=P0^3;
sbit e=P0^4;
sbit f=P0^5;
sbit g=P0^6;
sbit h=P0^7;
sbit i=P2^0;
sbit j=P2^1;
sbit k=P2^2;
sbit l=P2^3;
sbit m=P2^4;
sbit n=P2^5;
sbit o=P2^6;
sbit p=P2^7;
void delay(z)
{
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
void main()
{
while(1)
{
P1=0xfe;//第一行为0,进行列扫描
P3=0xff;
temp1=P1;
temp2=P3;
temp1=temp1&0xe0;
temp2=temp2&0xff;
if((temp1!=0xe0)&&(temp2!=0xff))
{
delay(10);
if((temp1!=0xe0)&&(temp2!=0xff))
{
temp1=P1;
temp2=P2;
switch(temp1&&temp

哎,语法错误帮你找出来了,
有两点,第一:main里面少了两个 }}
以后写{}要成对写,
第二:case 0xde&&0xff: a=0; break;
0xde&&0xff 应该是0xde&0xff,
因为0xde&&0xff的值不是0就是1;所以你这样写
case后面的值就会有相同的,所以会报错.

你写得太乱了,帮你找出语法错误。逻辑错误自己搞定
#include<reg52.h>
unsigned char y,z,x,temp1,temp2;
sbit a=P0^0;
sbit b=P0^1;
sbit c=P0^2;
sbit d=P0^3;
sbit e=P0^4;
sbit f=P0^5;
sbit g=P0^6;
sbit h=P0^7;
sbit i=P2^0;
sbit j=P2^1;
sbit k=P2^2;
sbit l=P2^3;
sbit m=P2^4;
sbit n=P2^5;
sbit o=P2^6;
sbit p=P2^7;
void delay(z)
{
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
void main()
{
while(1)
{
P1=0xfe;//第一行为0,进行列扫描
P3=0xff;
temp1=P1;
temp2=P3;
temp1=temp1&0xe0;
temp2=temp2&0xff;

if((temp1!=0xe0)&&(temp2!=0xff))
{
delay(10);
if((temp1!=0xe0)&&(temp2!=0xff))