dsp[1]=0;
//清零
for(i=2;i《9;i++) dsp[i]=12; c=1;
//已輸入a
/***goto跳轉(zhuǎn)標(biāo)志***/ goto KSC;
}
else if(c==1) {
for(i=0;i《8;i++) //將第二個數(shù)存入b[8] {
b[i]=dsp[i+1]; }
c=2;
//已輸入b
if(dsp[0]!=15) //b輸完后操作符不是等號
{
calculate(k,a,b);
for(i=0;i《8;i++) //將計算結(jié)果存入a[8],a值更新 {
a[i]=dsp[i+1];
}
k=dsp[0]; //更新計算符
c=1;
/***goto跳轉(zhuǎn)標(biāo)志***/ goto KSC; }
}
}while((dsp[0]==15)&&(c《2)); //直到ab輸入完成且按下等號
calculate(k,a,b); //進行最后計算
/***goto跳轉(zhuǎn)標(biāo)志***/
goto KSC; //跳回KSC,等待新一輪計算 while(1); //防止程序跑飛
}
char keyscan() {
char KeyL;
char KeyR;
char j;
do
{
do
{
P3=0xF0;
P3=P3|0xF0;//行掃描11110000
if(P3!=0xF0)
{
KeyL=P3;
P3=0x0F;
P3=P3|0x0F;//列掃描00001111
KeyR=P3;
}
}
while(KeyL==0xF0||KeyR==0x0F);
for(j=0;j《12;j++) //延時0.001s=1ms
{;}
}while(P3!=0x0F);
switch(KeyL&KeyR) {
case 0x28:{return 0;break;}
case 0x11:{return 1;break;}
case 0x21:{return 2;break;}
case 0x41:{return 3;break;}
case 0x12:{return 4;break;}
case 0x22:{return 5;break;} case 0x42:{return 6;break;} case 0x14:{return 7;break;} case 0x24:{return 8;break;}
case 0x44:{return 9;break;}
case 0x81:{return 10;break;}//加法(第一行,第四列)
case 0x82:{return 11;break;}//減法(第二行,第四列)
case 0x84:{return 12;break;}//乘法(第三行,第四列)
case 0x88:{return 13;break;}//除法(第四行,第四列)
case 0x18:{return 14;break;}//清零(第四行,第一列)
case 0x48:{return 15;break;}//計算結(jié)果(第四行,第三列) }
}
評論