n=15;
else
n=16;
}
}
else
n=0;
P1=0xF0;
return(n);
}
//LED數(shù)值顯示程序
void led_display(unint m){
switch(m)
{
case 1:P2=~0xf1;P0=0xf9;break;//LED以二進(jìn)制形式顯示1
case 2:P2=~0xf2;P0=0xa4;break;//LED以二進(jìn)制形式顯示2
case 3:P2=~0xf3;P0=0xb0;break;//LED以二進(jìn)制形式顯示3
case 4:P2=~0xf4;P0=0x99;break;//LED以二進(jìn)制形式顯示4
case 5:P2=~0xf5;P0=0x92;break;//LED以二進(jìn)制形式顯示5
case 6:P2=~0xf6;P0=0x82;break;//LED以二進(jìn)制形式顯示6
case 7:P2=~0xf7;P0=0xf8;break;//LED以二進(jìn)制形式顯示7
case 8:P2=~0xf8;P0=0x80;break;//LED以二進(jìn)制形式顯示8
case 9:P2=~0xf9;P0=0x90;break;//LED以二進(jìn)制形式顯示9
case 10:P2=~0xfa;P0=0x88;break;//LED以二進(jìn)制形式顯示10
case 11:P2=~0xfb;P0=0x83;break;//LED以二進(jìn)制形式顯示11
case 12:P2=~0xfc;P0=0xc6;break;//LED以二進(jìn)制形式顯示12
case 13:P2=~0xfd;P0=0xa1;break;//LED以二進(jìn)制形式顯示13
case 14:P2=~0xfe;P0=0x86;break;//LED以二進(jìn)制形式顯示14
case 15:P2=~0xff;P0=0x8e;break;//LED以二進(jìn)制形式顯示15
case 16:P2=~0x00;P0=0xc0;break;//CLR
}
}
void service_int0()interrupt 0 using 2//采用中斷0觸發(fā)中斷的程序
{
unint last;//第一次鍵入的數(shù)值
unint second;//第二次鍵入的數(shù)值
unint result;//最終運(yùn)算結(jié)果
unint op;//用來(lái)存儲(chǔ)+、-、*、/操作符鍵值
last=0;
second=0;
result=0;
op=0;
keyscan();
if(keyscan()>0&&keyscan()<10){//得到的鍵盤數(shù)值是數(shù)字的1-9之間的。
if (last==0){
last=keyscan();
led_display(last);//顯示第一次按鍵鍵值
delay(200);}
else{
second=keyscan();
led_display(second);//顯示下一次按鍵鍵值
delay(200);
}
}
else if(keyscan()>9&&keyscan()<14){//返回的鍵值為10代表+,11代表-,12代表*,13代表/。
op=keyscan();//將+、-、*、/的鍵值賦給操作符OP
}
else if((keyscan()==14) (keyscan()==15)){//返回的鍵值為15則代表=。
led_display(result);
delay(200);//顯示最終的計(jì)算結(jié)果。
last=0;//清零回復(fù)初始狀態(tài),當(dāng)然我們也可以設(shè)置一個(gè)CLR鍵來(lái)達(dá)到此目的。
second=0;
result=0;
op=0;
}
else if(keyscan()==16){//返回的鍵值為16代表CLR。
led_display(16);
last=0;//清零回復(fù)初始狀態(tài),當(dāng)然我們也可以設(shè)置一個(gè)CLR鍵來(lái)達(dá)到此目的。
second=0;
result=0;
op=0;
}
//***** 四則運(yùn)算程序*****
if(op!=0&&last!=0&&second!=0)
{
// 判斷是否操作符鍵以及先后兩次的數(shù)值鍵都已經(jīng)按下。
switch(op){
case 10:result=last+second;if(result>=16){result=result%10;} break;
case 11:result=last-second;if(result>=16){result=result%10;}break;
case 12:result=last*second;if(result>=16){result=result%10;}break;
case 13:result=last/second;if(result>=16){result=result%10;}break;
}
}
}
void main(void){
P0=0xc0;
P2=0xff;//四個(gè)LED全滅
P1=0xF0;//處于初始狀態(tài),當(dāng)然隨便你設(shè)置一個(gè)合適的值即可。
P3_4=0;
P3_5=1;
IT0=1;
EX0=1;
EA=1;
while(1);
}





