打印

AD问题

[复制链接]
1736|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hopewise|  楼主 | 2011-7-14 16:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
每次AD转换后都进行下面AD处理(8为AD,共256次),想了很久还是不明白---为何第⑨的结果(ad_dath)就是256次AD平均的数字?            
①         siz  n_ad            //n_ad增1,结果为零,则GOTO  voltage_chkok----------这个就是所谓的256次累加----------

②         jmp  voltage_chk2    //若结果不为0,则GOTO  voltage_chk2

             jmp  voltage_chkok
④  voltage_chk2:

             clr  c                     //清进位C
             mov  a,adrh          //ad采样结果(8位)送A
             adcm a,ad_datl     //采样结果累加,最后放ad_dath(高8位),ad_datl(低8位)---(在此过程中,注意进位标志)
             clr  acc        
             adcm a,ad_dath      
                ret
voltage_chkok:
                mov  a,ad_dath       //取高8位的AD结果,即ad_dath,送ad_dat,作为AD的最终结果
                mov  ad_dat,a
                clr  ad_datl             //采样结束,清ad_datl,ad_dath.为下一次采样做初始化准备
                clr  ad_dath
                ret

相关帖子

沙发
mcu5i51| | 2011-7-14 17:00 | 只看该作者
没分清是那种芯片;
从注释上看是把AD值相加256次,相当于 *256 ,取平均值在 /256 就好了,/256其实就是取高位字节,直接取多方便呀

使用特权

评论回复
板凳
joyme| | 2011-7-14 17:00 | 只看该作者
简单的除法,/256 就是去掉低8位(右移8位的效果)

使用特权

评论回复
地板
hopewise|  楼主 | 2011-7-14 17:22 | 只看该作者
我搞软件时间不长,更不用说AD方面了,只是以后想学AD内容.
附件是朋友的一段内容.
       只是我还是不怎么明白2位高手的含义,可否祥细点?
       HT46R47
       为何adcm a,ad_datl这条指令所产生的C累加就是高字节内容?
       我不明白它怎么就右移了8位?

使用特权

评论回复
5
joyme| | 2011-7-14 17:59 | 只看该作者
它没有做移位的动作,而是只是取了高8位即ad_dath,我所说的移位是让你用16位的概念理解,8位的数据+256次到一个16位的变量里,那么除以256就是右移8位或取高8位。
用汇编写8位单片机不能直接处理16位的变量,所以用了ad_datl和ad_dath两个8位变量
clr acc
adcm a,ad_dath 就完成了C累加到ad_dath的功能
觉得汇编难以理解就直接写C多好

使用特权

评论回复
6
hopewise|  楼主 | 2011-7-14 19:22 | 只看该作者
经你指点,我终明白了,非常感谢joyme的无私热心的正确的回答.

使用特权

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

本版积分规则

46

主题

468

帖子

3

粉丝