最近在学51单片机,在矩阵键盘时,我想用穷举法扫描所有的矩阵键盘,然后用return返回,但是一直不成功,去调试函数的时候,发现都是跳过return语句,没有执行到。
#include <REGX52.H>
#include "Delay1.h"
unsigned char MatrixKey()
{
unsigned char KeyNumber=0;
P1=0xFF;
P1_3=0;
if(P1_7=0){Delay(20);while(P1_7=0);Delay(20);KeyNumber=1;} //扫描矩阵键盘
if(P1_6=0){Delay(20);while(P1_6=0);Delay(20);KeyNumber=5;}
if(P1_5=0){Delay(20);while(P1_5=0);Delay(20);KeyNumber=9;}
if(P1_4=0){Delay(20);while(P1_4=0);Delay(20);KeyNumber=13;}
P1=0xFF;
P1_2=0;
if(P1_7=0){Delay(20);while(P1_7=0);Delay(20);KeyNumber=2;}
if(P1_6=0){Delay(20);while(P1_6=0);Delay(20);KeyNumber=6;}
if(P1_5=0){Delay(20);while(P1_5=0);Delay(20);KeyNumber=10;}
if(P1_4=0){Delay(20);while(P1_4=0);Delay(20);KeyNumber=14;}
P1=0xFF;
P1_1=0;
if(P1_7=0){Delay(20);while(P1_7=0);Delay(20);KeyNumber=3;}
if(P1_6=0){Delay(20);while(P1_6=0);Delay(20);KeyNumber=7;}
if(P1_5=0){Delay(20);while(P1_5=0);Delay(20);KeyNumber=11;}
if(P1_4=0){Delay(20);while(P1_4=0);Delay(20);KeyNumber=15;}
P1=0xFF;
P1_0=0;
if(P1_7=0){Delay(20);while(P1_7=0);Delay(20);KeyNumber=4;}
if(P1_6=0){Delay(20);while(P1_6=0);Delay(20);KeyNumber=8;}
if(P1_5=0){Delay(20);while(P1_5=0);Delay(20);KeyNumber=12;}
if(P1_4=0){Delay(20);while(P1_4=0);Delay(20);KeyNumber=16;}
return KeyNumber;
}
#include <REGX52.H>// 这下面是主函数
#include "Delay1.h"
#include "LCD1602.h"
#include "MatrixKey.h"
unsigned char KeyNum;
void main()
{
LCD_Init();
LCD_ShowString(2,1,"CHINA");
while(1)
{
KeyNum=MatrixKey();
if(KeyNum!=0)
{
LCD_ShowNum(1,1,KeyNum,2);
}
}
}