导航:首页 > 操作系统 > 单片机多位数加法实验报告

单片机多位数加法实验报告

发布时间: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

阅读全文

与单片机多位数加法实验报告相关的资料

热点内容
铁友app怎么查询机票订单 浏览:197
myeclipselinux破解版 浏览:417
批处理命令语法不正确 浏览:889
pdf合并成一个pdf在线 浏览:383
柱加密区构造要求 浏览:514
地板木龙骨标准跟加密区别 浏览:150
解压放松的好地方河南 浏览:965
搜狗怎么移动到文件夹 浏览:617
文件自动选择到文件夹 浏览:794
赠送的app怎么在ipad下载 浏览:508
颈椎解压后神经恢复 浏览:849
怎么看app订阅扣费 浏览:314
linux系统的负载均衡 浏览:419
遇到挫折解压视频 浏览:778
什么指令看服务器运行负载 浏览:84
因硕智能门锁卡片是加密的么 浏览:336
为什么会服务器不可用 浏览:290
wow宏命令设置 浏览:264
解压神器一张纸折叠魔术球 浏览:23
怎么样可以取消加密软件oppo 浏览:580