打印

如何计算总和?

[复制链接]
2614|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mugangzhu|  楼主 | 2009-9-17 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, ADC, dc, DCM, tmp
本帖最后由 mugangzhu 于 2009-9-17 17:06 编辑

;计算总和并存放在ADC_DH4T 和ADC_DL4(包括两个被清零的)
CAL_AD_ADD:
LDI TMP4,00H;清0
LDA ADC_DL1,01H;取ADC_DL1值
ADDM ADC_DL2,01H;ADC_DL1、ADC_DL2相加
LDA ADC_DH1,01H;取ADC_DH1值
ADCM ADC_DH2,01H;ADC_DH1、ADC_DH2相加(带进位)
LDI TBR,00H;A=0
ADCM TMP4,00H;相加后不是0吗(CY=0时)??????
LDA ADC_DL2,01H
ADDM ADC_DL3,01H
LDA ADC_DH2,01H
ADCM ADC_DH3,01H
139
LDI TBR,00H
ADCM TMP4,00H
LDA ADC_DL3,01H
ADDM ADC_DL4,01H
LDA ADC_DH3,01H
ADCM ADC_DH4,01H
LDI TBR,00H
ADCM TMP4,00H
沙发
mugangzhu|  楼主 | 2009-9-21 09:11 | 只看该作者
????

使用特权

评论回复
板凳
warm_ice| | 2009-9-21 11:48 | 只看该作者
1# mugangzhu
这个例子是将4组数据求和,TMP4是将4组数据求和后产生的最高位。

您指出的CY=0时,它等于0,这很正常,不知道您想问什么问题?

使用特权

评论回复
地板
mugangzhu|  楼主 | 2009-9-21 14:21 | 只看该作者
我的意思是说这四次取得数是如何实现相加的看不懂???

使用特权

评论回复
5
warm_ice| | 2009-9-21 14:43 | 只看该作者
每一级数据有高低2位,低位跟低位加(ADDM),然后把高位跟高位加再加上低位加的进位位(CY),即ADCM,做4次就加完了。

使用特权

评论回复
6
mugangzhu|  楼主 | 2009-9-21 14:53 | 只看该作者
是啊,就是这样的,可是
LDI TBR,00H
ADCM TMP4,00H
这两条指令在里面管什么用?不用不可以吗?

使用特权

评论回复
7
warm_ice| | 2009-9-21 15:12 | 只看该作者
你去查一下ADCM指令的介绍就清楚了,如果不清楚,再回来问,我给你答案。

使用特权

评论回复
8
mugangzhu|  楼主 | 2009-9-21 15:26 | 只看该作者
本帖最后由 mugangzhu 于 2009-9-21 16:26 编辑

之前,我没看懂的时候就返回看这个ADCM指令了,还是没有看懂,所以才咨询您的,
我看着是为了加那个进位CY才用的着两条指令
LDI TBR,00H
ADCM TMP4,00H
还有下面这个怎么回事?
;总和除以2,得到平均值,存放在ADC_DH4T 和ADC_DL4
CAL_AD_DIV:
LDA ADC_DL4,01H
SHR
STA ADC_DL4,01H
LDA ADC_DH4,01H
SHR
STA ADC_DH4,01H
BNC $+3
LDI TBR,1000B
ORM ADC_DL4,01H
LDA TMP4,00H
SHR
BNC $+3
LDI TBR,1000B
ORM ADC_DH4,01H
;----------------------------
CAL_ADCDATA_END:
RTNI
;************************************************
为什么不判断低位的CY呢???

使用特权

评论回复
9
warm_ice| | 2009-9-21 16:36 | 只看该作者
1.ADCM指令是将M的值加上A再加上CY,而在实际操作中我们只要加上CY而不想加A,故在执行ADCM前先把A值清零。
2.第二个问题,我想反问一下你,为什么要判断低位的CY,判断它有什么用呢?除以2后是要得到一个整数还是要精确到小数点后一位?你再想一想就明白了

使用特权

评论回复
10
mugangzhu|  楼主 | 2009-9-21 16:48 | 只看该作者
假如低位为0011的话,如果不管CY的话,经过SHR指令之后就变成0001了,那个小数就不要了,如果加上的话,就比除以2后的结果大了,那在实际应用中必须要舍去那个小数0.5??

使用特权

评论回复
11
warm_ice| | 2009-9-21 17:02 | 只看该作者
当然是这样了,0011为3,除以2后,结果为1,余1。

使用特权

评论回复
12
mugangzhu|  楼主 | 2009-9-21 17:21 | 只看该作者
对啊,那个余数如果不管CY的话,不就是没了吗?

使用特权

评论回复
13
warm_ice| | 2009-9-21 17:23 | 只看该作者
对啊,那个余数如果不管CY的话,不就是没了吗?
mugangzhu 发表于 2009-9-21 17:21

是的,这个除2是结果取整。
如果您有兴趣,当然可以自己修改一下程序,把这个余数利用起来。

使用特权

评论回复
14
mugangzhu|  楼主 | 2009-9-21 17:31 | 只看该作者
呵呵,谢谢啊:)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

358

帖子

1

粉丝