當前位置:編程學習大全網 - 源碼下載 - 源代碼乘法和除法運算

源代碼乘法和除法運算

# include & ltreg 51 . h & gt;

#定義uchar無符號字符

龍首,尾;//定義全局變量

無效延遲(整數)/* * *延遲程序* *//

{int i,j;

for(I = 0;我& ltn;i++)

{ for(j = 0;j & lt50;j++)

;}

}

長加法(長x,長y)/* * *加法程序* *//

{龍z;

z = x+y;

返回(z);

}

Long sub (long x,long y)/* * *減法程序* *//

{龍z;

if(x & gt;=y)

z = x-y;

其他

{ z = y-x;

z = z+10e 6;}/* * *負數的最高有效位是1 * * *//

返回(z);

}

Long Mul (Long X,Long Y)/* * *乘數* *//

{龍z;

z = x * y;

返回(z);

}

Long div (long x,long y)/* * *除法程序* *//

{龍z;

z = x/y;

返回(z);

}

Uchar kbscan (void)/* * *鍵盤掃描儀* * *//

{

uchar sccode

p 1 = 0xf 0;

if((p 1 & amp;0xf0)!=0xf0) //發送所有0行掃描碼,帶列行輸入。

{ delay(222);//延遲去抖

if((p 1 & amp;0xf0)!=0xf0)

{ sccode = 0xfe//逐行掃描初始值

while((sc code & amp;0x10)!=0)

{ p 1 = sc code;//輸出行掃描代碼

if((p 1 & amp;0xf0)!=0xf0)

{

return(p 1);}//如果檢測到按鍵,則返回鍵值。

其他

sc code =(sc code & lt;& lt1)| 0x 01;//行掃描碼左移壹位。

}

}

}

return(0);//沒有按鍵,返回值為0。

}

Void顯示(void)/* * *顯示程序* * *//

{ int I;

uchar code rel[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0x Fe };//數碼管門控

uchar碼led[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b };//定義0-9

uchar數據編號[8];

num[0]= First/10000000;//壹千萬位

num[1]= First/100000% 10;//百萬位

num[2]= First/100000% 10;//十萬

num[3]= First/10000% 10;//壹萬位

num[4]= First/1000% 10;//千

num[5]= First/100% 10;//數百

num[6]= First/10% 10;//十個人

num[7]=第壹個% 10;//位

for(I = 7;我& gt=0;我-)

{ P3 = rel[I];//位選擇輸出

P2 = led[num[I]];//數據輸出

延遲(2);//這個延遲有必要嗎?

}

}

Void main (void)/* * *主程序* * *//

{ int k,n;

uchar f,g,key,gn 1;

n = 0;

f = 0;

P0 = 0;//指示燈壹開始就滅了。

而(1) //不斷查詢是否有按鍵動作。

{ key = kbs can();//獲取返回的鍵值

如果(關鍵!=0)

{

Switch(key) //解碼,將對應鍵的返回值轉換為對應的數值。

{

案例0x ee:k = 0;打破;//0

case 0x de:k = 1;打破;//1

案例0x be:k = 2;打破;//2

案例0x7e:k = 3;打破;//3

案例0x ed:k = 4;打破;//4

案例0x DD:k = 5;打破;//5

案例0x BD:k = 6;打破;//6

案例0x7d:k = 7;打破;//7

案例0xeb:k = 8;打破;//8

案例0x db:k = 9;打破;//9

案例0x bb:k = 10;first = 0;end = 0;f = 0;打破;//清除

案例0x7b:k = 11;打破;//等於

案例0xe 7:k = 12;f = 1;打破;//添加

案例0xd 7:k = 13;f = 2;打破;//減號

案例0xb 7:k = 14;f = 3;打破;//相乘

案例0x 77:k = 15;f = 4;打破;//除法

}

P0 = 1;

延遲(280);//有鍵時指示燈顯示時間。

P0 = 0;//鍵表示關閉。

if(k & lt;10) //當它是數字鍵(0-9)時

{

如果(f!=0) //當它是數字鍵時,如果按下了功能鍵。

{

n++;//記錄數字鍵被按下的次數。

gn 1 = 0;//清除標誌,再次為功能鍵時操作。

g = f;//保存操作標誌

If(n==1) //當輸入是位數時,直接賦值。

first = k;

else if(n & gt;1) //當輸入為多位數時,轉換為10系統中的多位數。

First = First * 10+k;

}

否則//如果沒有按下功能鍵,

{

n++;

gn 1 = 1;//定義標誌,下次是功能鍵時停止數據輸入。

如果(n==1)

first = k;

else if(n & gt;1)

First = First * 10+k;

End = First//保存第壹個號碼。

}

}

else if(k & gt;當11) //是功能鍵(+-*/)

{

If(gn1==1) //當前壹個數字鍵後面跟著壹個功能鍵時,

{

n = 0;//清除計數標誌

}

Else //如果再次輸入功能鍵,將執行該操作。

{ n = 0;//清除計數標誌

開關(g)

{case 1: First=add(End,First);打破;

情況二:First=sub(End,First);打破;

案例三:First=mul(End,First);打破;

案例四:First=div(End,First);打破;}

}

End = First//保存這個結果。

}

Else if(k==11) //等於符號(=)

{ n = 0;

gn 1 = 1;//作為功能鍵輸入就可以繼續操作。

開關(g)

{case 1: First=add(End,First);打破;

情況二:First=sub(End,First);打破;

案例三:First=mul(End,First);打破;

案例四:First=div(End,First);打破;

}

End = First//保存最終的操作結果。

f = 0;//清除操作標誌

}

}

顯示();//調用顯示程序

}

}

  • 上一篇:什麽是開源操作系統,什麽是閉源操作系統?
  • 下一篇:午夜模板源代碼
  • copyright 2024編程學習大全網