请教大家:AD转换结果寄存器
分为转换结果的高4位(如:00001101)和转换结果的低8位(如:10001001),共12位输出.用什么方法或指令把这两个寄存器里的数合并在一起,然后再和设定的寄存器里的内容(8位)进行比较.
全部回复(8)
正序查看
倒序查看
现在还没有回复呢,说说你的想法
@hxdjb
那样转换精度会不会降低,本来是12位数字量精度.用什么指令把两个字节的连起来?谢谢!
你可以先把两字节的数据暂存一下,右移只是为了比较而已,为了与8位的单字节相比较,必须这样做,另一种防办法就是把8位的数据左移4位,然后比较,不麻烦吗?
右移四位很简单:
MOV R2,#4
MOV R5,ByteH
MOV R4,ByteL
LOOP:
MOV A,R5
CLR C
RRC A
MOV R5,A
MOV A,R4
RRC A
MOV R4,A
DJNZ R2,LOOP
CJNE A,ByteRef,$+3
JNC BigOrEqu
右移四位很简单:
MOV R2,#4
MOV R5,ByteH
MOV R4,ByteL
LOOP:
MOV A,R5
CLR C
RRC A
MOV R5,A
MOV A,R4
RRC A
MOV R4,A
DJNZ R2,LOOP
CJNE A,ByteRef,$+3
JNC BigOrEqu
0
回复
提示
@sdjufeng
你可以先把两字节的数据暂存一下,右移只是为了比较而已,为了与8位的单字节相比较,必须这样做,另一种防办法就是把8位的数据左移4位,然后比较,不麻烦吗?右移四位很简单:MOV R2,#4MOV R5,ByteHMOV R4,ByteLLOOP:MOV A,R5CLR CRRC AMOV R5,AMOV A,R4RRC AMOV R4,ADJNZ R2,LOOPCJNE A,ByteRef,$+3JNC BigOrEqu
如果我要得到12位高精度的转换结果就只能把RC,RD合在一起,然后右移变成8位.
如果我只要得到8位精度的转换结果,就可以直接读取RB里的数据.
也就是两种结果的精度是不一样的,是吗?500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/39/1143034354.gif');}" onmousewheel="return imgzoom(this);">
如果我只要得到8位精度的转换结果,就可以直接读取RB里的数据.
也就是两种结果的精度是不一样的,是吗?500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/39/1143034354.gif');}" onmousewheel="return imgzoom(this);">
0
回复
提示
@hxdjb
如果我要得到12位高精度的转换结果就只能把RC,RD合在一起,然后右移变成8位.如果我只要得到8位精度的转换结果,就可以直接读取RB里的数据.也就是两种结果的精度是不一样的,是吗?[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/39/1143034354.gif');}"onmousewheel="returnimgzoom(this);">
是的
0
回复
提示
@hxdjb
如果我要得到12位高精度的转换结果就只能把RC,RD合在一起,然后右移变成8位.如果我只要得到8位精度的转换结果,就可以直接读取RB里的数据.也就是两种结果的精度是不一样的,是吗?[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/39/1143034354.gif');}"onmousewheel="returnimgzoom(this);">
你用的这种单片机是用这种方法实现8/12位精度转换的,ADuC812的方式是有一个精度设置位A,当设置成8位精度时,结果高字节无效.
0
回复
提示
@sdjufeng
你用的这种单片机是用这种方法实现8/12位精度转换的,ADuC812的方式是有一个精度设置位A,当设置成8位精度时,结果高字节无效.
我用的是义隆78P417单片机.500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/39/1143089073.gif');}" onmousewheel="return imgzoom(this);">
0
回复
提示