導航:首頁 > 操作系統 > 單片機多位數加法實驗報告

單片機多位數加法實驗報告

發布時間:2022-08-18 05:11:24

A. 基於51單片機的簡易加法計數器

你好!這樣的效果可以嗎

B. 單片機的簡單實驗編程

循環3次即可。
MOV R0, #20H ;加數1地址、和的地址
MOV R1, #30H ;加數2地址
CLR C
MOV R2, #3 ;循環3次
A_LOOP:
MOV A, @R0 ;取
ADDC A, @R1 ;加
MOV @R0, A ;存
INC R0
INC R1
DJNZ R2, A_LOOP

CLR A
ADDC A, #0 ;得到進位
MOV 23H, A ;保存

RET

C. 單片機加法運算

你的問題應該出現在鍵盤處理不完善造成的,稍微修改了一下你試試。 #include #define uchar unsigned char #define unit unsigned int #define OPdata P0 //十位數據口 #define OPdata1 P1//個位數據口 sbit se0=P3^6;//十位選擇 sbit se1=P3^7;//個位選擇 sbit Q=P2^6; sbit W=P2^5; sbit E=P2^4; uchar cis; //按下鍵盤次數 uchar jia1; //加數1 uchar jia2; //加數2 uchar z; //中轉數 uchar shi; //十位數 uchar ge; //個位數 uchar s; //解碼結果 uchar j; //解碼結果 uchar sum; //加法結果 uchar keytemp; void judge(uchar m) //數碼顯像管解碼 { switch (m) { case 0: s=0x3F; break; case 1: s=0x06; break; case 2: s=0x5B; break; case 3: s=0x4F; break; case 4: s=0x66; break; case 5: s=0x6D; break; case 6: s=0x7D; break; case 7: s=0x07; break; case 8: s=0x7F; break; case 9: s=0x6F; break; } } void judge1(uchar h) //十位數碼顯像管解碼 { switch (h) { case 0: j=0x3F; break; case 1: j=0x06; break; } } void judgecis() { if (cis==1) { jia1=z; ge=z; shi=0; } else if (cis==2) { jia2=z; ge=z; shi=0; cis=0; } } void jiafa(uchar m,uchar n) //加法 { sum=m+n; if (sum>=10) { ge=sum-10; shi=1; } else { ge=sum; shi=0; } } void main() { cis=0; jia1=0; jia2=0; shi=0; ge=0; s=0; j=0; P2=0XFF; se0=0;//開啟十位 se1=0;//開啟個位 OPdata=0x3f;//十位 OPdata1=0x3f;//個位 while (1) { Q=0; keytemp=P2; switch (keytemp) { case 0xbb: z=3; cis++;while(P2==0xbb); break; case 0xbd: z=6; cis++;while(P2==0xbd); break; case 0xbe: z=9; cis++;while(P2==0xbe); break; case 0xb7: //等於號 jiafa (jia1,jia2); cis=0; break; } Q=1; W=0; keytemp=P2; switch (keytemp) { case 0xde: z=8; cis++;while(P2==0xde); break; case 0xdd: z=5; cis++;while(P2==0xdd); break; case 0xdb: z=2; cis++;while(P2==0xdb); break; case 0xd7: z=0; cis++;while(P2==0xd7); break; } W=1; E=0; keytemp=P2; switch (keytemp) { case 0xee: z=7; cis++;while(P2==0xee); break; case 0xed: z=4; cis++;while(P2==0xed); break; case 0xeb: z=1; cis++;while(P2==0xeb); break; } judgecis(); judge(ge); OPdata1=s; judge1(shi); OPdata=j; E=1; } }

D. 51單片機,使用keil軟體,4位元組加法或減法子程序

四個位元組加上四個位元組,和應該是4~5個位元組。
本程序,需要三個地址指針,但是一般只有兩個(R0和R1)可以用;如果換用工作區,就比較麻煩了。下面使用B充當「和」的地址指針,RESULT + 4單元,充當加數2的地址指針。
程序如下:

RESULT equ 30H ;和數的地址

ORG 0000H
;實驗數據如下:
MOV 20H, #22H ;加數1
MOV 21H, #33H
MOV 22H, #44H
MOV 23H, #0F3H
MOV 24H, #12H ;加數2
MOV 25H, #34H
MOV 26H, #56H
MOV 27H, #78H

MOV R0, #20H ;給定地址
MOV R1, #24H

LCALL _4_JIA_4 ;調用加法子程序
NOP
SJMP$

_4_JIA_4:
MOV RESULT + 4, R1 ;保存加數2地址
MOV B, #RESULT ;保存和的地址
CLR C
MOV R2, #4
LOOP:
MOV A, @R0
INC R0
MOV R1, RESULT + 4
ADDC A, @R1 ;加上加數2
INC R1
MOV RESULT + 4, R1

MOV R1, B
MOV @R1, A ;保存和數
INC R1
MOV B, R1

DJNZ R2, LOOP
CLR A
ADDC A, #0
MOV RESULT + 4, A ;保存第五位元組
RET

減法子程序,與上面的加法子程序雷同,只要把ADDC換成SUBB即可改為減法子程序。請樓主自行改寫。

E. 單片機運用循環和16位加法 計算數據塊(30H至37H)中,8個8位二進制數的和,最終結果放入R1

HE:
MOV R2, #0
MOV R1, #0
MOV R0, #30H
LOOP:
MOV A, R2
ADD A, @R0
MOV R2, A
JNC NEXT
INC R1
NEXT: INC R0
CJNE R0, #38H, LOOP
MOV A, R2
MOV R0, A
RET

END

F. 51單片機加法運算問題,資料如下圖所示!

他只是告訴你16位加法運行原理,並不是說8位單片機可以一次算16位加法,16位加法需要運算兩次的,第一次算低位,第二次算高位,沒有16位指令,16位加法要位元組寫程序,他告訴你寫運行原理。。。

G. 求一個大學51單片機加減法計數器設計實驗,高手進

這個不用高手吧,為什麼不用一個加一個減呢?這樣程序會更簡單

H. 51單片機能做兩個16位的加法運算嗎如1010h和1010h,求大蝦!!!!!

沒有問題的,可以的,如用匯編
MOV R5, #10H ; 第一數據高位元組
MOV R4,#10H ; 第一數據低位元組
MOV R3, #10H ; 第二數據高位元組
MOV R2,#10H ; 第二數據低位元組
MOV A, R4
ADD A, R2
MOV R4, A ; 和低位元組 在 R4 中
MOV A, R5
ADDC A, R3
MOV R5, A ; 和高位元組 在 R5 中
RET

閱讀全文

與單片機多位數加法實驗報告相關的資料

熱點內容
php商城並發 瀏覽:348
熊貓繪畫app怎麼做出大佬的筆刷 瀏覽:603
雲存儲伺服器知識 瀏覽:461
伺服器cpu是什麼指令集 瀏覽:590
糖貓t10怎麼安裝app 瀏覽:992
電腦加密u盤怎麼使用 瀏覽:517
linux如何升級php版本升級 瀏覽:841
二級程序員c語言難度 瀏覽:352
批處理編譯qt 瀏覽:66
鐵友app怎麼查詢機票訂單 瀏覽:197
myeclipselinux破解版 瀏覽:417
批處理命令語法不正確 瀏覽:889
pdf合並成一個pdf在線 瀏覽:383
柱加密區構造要求 瀏覽:514
地板木龍骨標准跟加密區別 瀏覽:150
解壓放鬆的好地方河南 瀏覽:965
搜狗怎麼移動到文件夾 瀏覽:617
文件自動選擇到文件夾 瀏覽:794
贈送的app怎麼在ipad下載 瀏覽:508
頸椎解壓後神經恢復 瀏覽:849