永发信息网

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

答案:1  悬赏:60  手机版
解决时间 2021-03-24 01:52
  • 提问者网友:低吟詩仙的傷
  • 2021-03-23 20:49
我在写一个stc12c5a60s2的A/D转换程序,其中高8位结果放在ADC_RES寄存器中,低2位在ADC_RESL中,试问
最佳答案
  • 五星知识达人网友:舍身薄凉客
  • 2021-03-23 21:09
这就要看你设置的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
>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯