Quantcast
Channel: C2000™︎ 微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 12343

28335例程中ADC_cal()的汇编程序问题求教

$
0
0

.def _ADC_cal
.asg "0x711C", ADCREFSEL_LOC

.sect ".adc_cal"

_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

这个AD的校准程序,之前看过一个帖子的回复如下:

.def _ADC_cal                                          /* 定义代码段名称 */

.asg "0x711C",   ADCREFSEL_LOC          /* ADCREFSEL_LOC 是 ADC Reference Select Register, 地址0x711C */

/* C28 core 中, DP是 数据段 的 地址,每段大小64, 32bitDataAddr(21:6) = DP(15:0) */

MOVW  DP,   #ADCREFSEL_LOC >> 6  /* 右移动6bit 获得 数据段首地址 */

/* 此时, DP = 0x7100 */

MOV   @28,  #0xAAAA   /* 地址 : 0x7100 + 28 */

MOV   @29,  #0xBBBB   /* 地址 : 0x7100 + 29 */

这里有几个问题不是很明白,问题如下:

一、MOVW  DP,   #ADCREFSEL_LOC >> 6  /* 右移动6bit 获得 数据段首地址 */

/* 此时, DP = 0x7100 */

这个#ADCREFSEL_LOC >> 6  ,DP为什么=0x7100,  之前的0x711C右移6位不是应该是0000000111000100?难道是0~5位被替换成0的?

二、下面2个语句不是很明白意思

MOV   @28,  #0xAAAA   /* 地址 : 0x7100 + 28 */

MOV   @29,  #0xBBBB   /* 地址 : 0x7100 + 29 */

三、像这样的汇编程序能在调试的过程中设置断点来调试?

麻烦请技术人员解答一下。谢谢!


Viewing all articles
Browse latest Browse all 12343

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>