我在写一个stc12c5a60s2的A/D转换程序,其中高8位结果放在ADC_RES寄存器中,低2位在ADC_RESL中,试问
1个回答
展开全部
这就要看你设置的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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询