STC单片机A/D转换后数值处理程序

下面的程序是STC单片机A/D转换后形成了一个10位2进制数,高2位存放到了2CH中,低8位存放到了2DH中,我不太明白下面的程序转换能实现什么功能,或者说这是一种什么算... 下面的程序是STC单片机A/D转换后形成了一个10位2进制数,高2位存放到了2CH中,低8位存放到了2DH中,我不太明白下面的程序转换能实现什么功能,或者说这是一种什么算法,麻烦有单片机相关编程经验的老师指点一下,谢谢。
MOV R2,2CH
MOV R3,2DH
MOV R6,#03H
MOV R7,#E8H
MOV A,R3
MOV B,R7
MUL AB
MOV R4,B
MOV R5,A
MOV A,R3
MOV B,R6
MUL AB
ADD A,R4
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2
MOV B,R7
MUL AB
ADD A,R4
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2
MOV B,R6
MUL AB
ADD A,R3
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
NOP
NOP
RET
展开
 我来答
一剑出血
高粉答主

2018-10-31 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
“乘1000直接乘不行吗?怎么需要这么多,大概都是干什么用的?”
你使用的STC单片机是八位机,就乘法而言,原生只支持两个8位数相乘得到一个16位数。如果想要实现两个十六位数相乘,就只能自己用算法来实现,即通过程序采用乘法结合律进行分块相乘再累加,还得时刻注意各个部分的进位。
lycdl
高粉答主

2018-10-31 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4892万
展开全部
可以仿真运行一下这程序,把数据放在2CH,2DH中,然后运行,计算结果在R2,R3中,看一下R2,R3的值,与原数据比较一下,看是什么关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bj_jp996e49a
2018-10-31 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:78%
帮助的人:2607万
展开全部
就是转换输入的数字值,放大1000倍的子程序。。
一般模数转换来的电压电流数值都比较小,需要放大后才能适合匹配进行相关的应用和控制。。
更多追问追答
追问
乘1000直接乘不行吗?怎么需要这么多,大概都是干什么用的?
追答
#03E8 就是10进制的1000。。
单片机是8位的,只能计算256以内的数,计算大于8位的数值乘法,就需要用双字节才能计算。。低8位和8位分别计算,后再相加才行。
你要找些相关8位乘法算法的简单例题,仔细随着相关步骤搞清楚为何这样。。然后再看复杂些的就明白了。
汇编语言是机器底层语言,所以运算就需要一步一步的来做。。这点汇编程序是算简单的,一般复杂点的汇编程序都要几千上万条语句,才能实现功能。
别着急,要先从简单的学起、学会,然后复杂的就不再是很难了。。就如盖楼,地基盖好了,再起高层就顺理成章,不是很难了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2018-10-31 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38384
国家科技进步奖

向TA提问 私信TA
展开全部
这个子程序功能是将AD转换的结果乘以1000。
追问
乘1000直接乘不行吗?怎么需要这么多,大概都是干什么用的?
追答
51单片机是8位机,1000已经超过字节容量了。这历史双字节乘法运算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shacat200d38
2018-10-31 · TA获得超过4469个赞
知道大有可为答主
回答量:9799
采纳率:61%
帮助的人:2487万
展开全部
汇编这麼高级的语言不懂,只懂C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式