我在写一个stc12c5a60s2的A/D转换程序,其中高8位结果放在ADC_RES寄存器中,低2位在ADC_RESL中,试问

程序怎么写才能把十位结果合到一起,提取出来,并把其转换成十进制数??????急救呀... 程序怎么写才能把十位结果合到一起,提取出来,并把其转换成十进制数??????急救呀 展开
 我来答
百度网友7247a56
2013-10-01 · TA获得超过4616个赞
知道大有可为答主
回答量:1422
采纳率:92%
帮助的人:481万
展开全部

这就要看你设置的AUXR1值是多少了。

可以这样,首先定义一个16位无符号整型ADC_RESULT

如果AUXR1=0则

ADC_RESULT=ADC_RES;先将结果高字节放入
ADC_RESULT=ADC_RESULT<<2;然后左移2位
ADC_RESL=ADC_RESL&0x03;确保无用位为0
ADC_RESULT=ADC_RESULT | ADC_RESL;最后组合起来称为16位二进制数

如果AUXR1=1则

ADC_RESULT=ADC_RES;先将结果高字节放入
ADC_RESULT=ADC_RESULT<<8;然后左移8位
ADC_RESULT=ADC_RESULT | ADC_RESL;最后组合起来称为16位二进制数
追问
恩,但是还是想问一下“| ”这个运算符是什么意思?
追答
我猜你是用汇编语言编写的吧,而且你没学过C语言。
C语言提供的位运算符列表:
运算符 含义 描述
& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1
^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1
~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式