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

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

发布时间: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后台 浏览:710
图形化编程有面试题吗 浏览:678
怎样将文件夹中的文件上移 浏览:917
如何在盒马app更换盒马门店 浏览:747
淘宝压缩图教程 浏览:237
谷歌浏览器安卓怎么用插件 浏览:78
商业源码网vipym 浏览:598
使用阿里云服务器怎么选操作系统 浏览:388
双付天下app下载哪里靠谱 浏览:245
pdf转化图片格式 浏览:762
如何向实体店推广app 浏览:647
g32斜进刀反螺纹编程 浏览:542
android获取已安装的apk 浏览:811
app图标如何放一起 浏览:720
云服务器设置通过ip访问网站 浏览:914
生命代源码女主角 浏览:740
空调扇加压缩机 浏览:310
linux镜像写入 浏览:480
多媒体卡文件夹 浏览:30
java类转map 浏览:856