专家你好!
ADC_cal
MOVW DP, #ADCREFSEL_LOC >> 6
MOV @28, #0xAAAA ; actual value may not be 0xAAAA
MOV @29, #0xBBBB ; actual value may not be 0xBBBB
LRETR
第一条指令移位6位?ad不是12位精度么 16位的数据不是移位4位么?呵呵 那个ADCREFSEL_LOC看不懂 主要是 麻烦解释下 谢了0…0可以的话把后面两句指令也解释下 呵呵
yong mao:
额 专家上面还有一条语句是这样的 看不懂
.def _ADC_cal
.asg "0x711C", ADCREFSEL_LOC
专家你好!
ADC_cal
MOVW DP, #ADCREFSEL_LOC >> 6
MOV @28, #0xAAAA ; actual value may not be 0xAAAA
MOV @29, #0xBBBB ; actual value may not be 0xBBBB
LRETR
第一条指令移位6位?ad不是12位精度么 16位的数据不是移位4位么?呵呵 那个ADCREFSEL_LOC看不懂 主要是 麻烦解释下 谢了0…0可以的话把后面两句指令也解释下 呵呵
shen lee:
回复 秋之初:
MOVW DP, #ADCREFSEL_LOC >> 6 /* 右移动6bit 获得 数据段首地址 */
/* 此时, DP = 0x7100 */
怎么理解 右移6位 又没有移回去啊?
0xAAAA
0xBBBB
怎么理解啊
谢谢
专家你好!
ADC_cal
MOVW DP, #ADCREFSEL_LOC >> 6
MOV @28, #0xAAAA ; actual value may not be 0xAAAA
MOV @29, #0xBBBB ; actual value may not be 0xBBBB
LRETR
第一条指令移位6位?ad不是12位精度么 16位的数据不是移位4位么?呵呵 那个ADCREFSEL_LOC看不懂 主要是 麻烦解释下 谢了0…0可以的话把后面两句指令也解释下 呵呵
Xiaolong Yang:
回复 秋之初:
这是通过BOOT 模式中,经由ADC_cal进行引导,再进入main()函数代码吧?
专家你好!
ADC_cal
MOVW DP, #ADCREFSEL_LOC >> 6
MOV @28, #0xAAAA ; actual value may not be 0xAAAA
MOV @29, #0xBBBB ; actual value may not be 0xBBBB
LRETR
第一条指令移位6位?ad不是12位精度么 16位的数据不是移位4位么?呵呵 那个ADCREFSEL_LOC看不懂 主要是 麻烦解释下 谢了0…0可以的话把后面两句指令也解释下 呵呵
Bruce_旋:
回复 秋之初:
秋之初你好,想请教你几个问你。
1、根据的的学习理解,对ADC矫正应该是根据下面的图进行,通过精准电源求得偏移然后对采样修正。而adc_cal函数的矫正原理是什么呢?
2、手册说adc_cal函数是对ADCFEFSEL和ADCOFFTRIM寄存器初始化,但是ADCFEFSEL寄存器是参考电压选择,怎么是矫正呢?
3、另外,该代码的最后两句的意思是什么呢,是向ADCREFSEL 写0xAAAA ,向ADCOFFTRIM 写 0xBBBB吗?
4、如果ADC_cal函数可以起到矫正作用,请问在实际操作中是不是应该自己再对其代码进行一些修改,还是直接调用呢?