/********************************************************************
* 名称:矩阵键盘扫描
* 功能:矩阵键盘扫描,检测输入数字和运算符号
* 输入:键盘输入
* 输出:无
*********************************************************************/
void matrikeyscan()
{
uchar temp,fs,a;
float key;
P1=0xfd; //第三行
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xed:
key=1;
write('1');
if (sign1==0)//整数处理
{
if(sign2==0)
number1=number1*10+key;
else
number2=number2*10+key;
}
else //小数处理,sing1=1时
{
if(sign2==0) //第一个数
{
flo_s[fs]='1';
number3=atof(flo_s);
fs++;
}
else //第二个数
{
flo_s[fs]='1';
number3=atof(flo_s);
fs++;
}
}
break;
case 0xdd:
key=2;
write('2');
if (sign1==0)//整数处理
{
if(sign2==0)
number1=number1*10+key;
else
number2=number2*10+key;
}
else //小数处理
{
if(sign2==0)
{
flo_s[fs]='2';
number3=atof(flo_s);
fs++;
}
else
{
flo_s[fs]='2';
number3=atof(flo_s);
fs++;
}
}
break;
case 0xbd:
key=3;
write('3');
if (sign1==0)//整数处理
{
if(sign2==0)
number1=number1*10+key;
else
number2=number2*10+key;
}
else //小数处理
{
if(sign2==0)
{
flo_s[fs]='3';
number3=atof(flo_s);
fs++;
}
else
{
flo_s[fs]='3';
number3=atof(flo_s);
fs++;
}
}
break;
case 0x7d: //"+"加号
key=10;
write('+');
sign2=1;
symbol='+';
sign1=0;//小数标志清零
number1=number1+number3;
number3=0;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
* 名称:矩阵键盘扫描
* 功能:矩阵键盘扫描,检测输入数字和运算符号
* 输入:键盘输入
* 输出:无
*********************************************************************/
void matrikeyscan()
{
uchar temp,fs,a;
float key;
P1=0xfd; //第三行
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(10);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xed:
key=1;
write('1');
if (sign1==0)//整数处理
{
if(sign2==0)
number1=number1*10+key;
else
number2=number2*10+key;
}
else //小数处理,sing1=1时
{
if(sign2==0) //第一个数
{
flo_s[fs]='1';
number3=atof(flo_s);
fs++;
}
else //第二个数
{
flo_s[fs]='1';
number3=atof(flo_s);
fs++;
}
}
break;
case 0xdd:
key=2;
write('2');
if (sign1==0)//整数处理
{
if(sign2==0)
number1=number1*10+key;
else
number2=number2*10+key;
}
else //小数处理
{
if(sign2==0)
{
flo_s[fs]='2';
number3=atof(flo_s);
fs++;
}
else
{
flo_s[fs]='2';
number3=atof(flo_s);
fs++;
}
}
break;
case 0xbd:
key=3;
write('3');
if (sign1==0)//整数处理
{
if(sign2==0)
number1=number1*10+key;
else
number2=number2*10+key;
}
else //小数处理
{
if(sign2==0)
{
flo_s[fs]='3';
number3=atof(flo_s);
fs++;
}
else
{
flo_s[fs]='3';
number3=atof(flo_s);
fs++;
}
}
break;
case 0x7d: //"+"加号
key=10;
write('+');
sign2=1;
symbol='+';
sign1=0;//小数标志清零
number1=number1+number3;
number3=0;
break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
