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 展开
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 展开
展开全部
可以仿真运行一下这程序,把数据放在2CH,2DH中,然后运行,计算结果在R2,R3中,看一下R2,R3的值,与原数据比较一下,看是什么关系。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是转换输入的数字值,放大1000倍的子程序。。
一般模数转换来的电压电流数值都比较小,需要放大后才能适合匹配进行相关的应用和控制。。
一般模数转换来的电压电流数值都比较小,需要放大后才能适合匹配进行相关的应用和控制。。
更多追问追答
追问
乘1000直接乘不行吗?怎么需要这么多,大概都是干什么用的?
追答
#03E8 就是10进制的1000。。
单片机是8位的,只能计算256以内的数,计算大于8位的数值乘法,就需要用双字节才能计算。。低8位和8位分别计算,后再相加才行。
你要找些相关8位乘法算法的简单例题,仔细随着相关步骤搞清楚为何这样。。然后再看复杂些的就明白了。
汇编语言是机器底层语言,所以运算就需要一步一步的来做。。这点汇编程序是算简单的,一般复杂点的汇编程序都要几千上万条语句,才能实现功能。
别着急,要先从简单的学起、学会,然后复杂的就不再是很难了。。就如盖楼,地基盖好了,再起高层就顺理成章,不是很难了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个子程序功能是将AD转换的结果乘以1000。
追问
乘1000直接乘不行吗?怎么需要这么多,大概都是干什么用的?
追答
51单片机是8位机,1000已经超过字节容量了。这历史双字节乘法运算。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
汇编这麼高级的语言不懂,只懂C
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询