This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DSP汇编语言中用ZeroNet 什么意思呢?



ZeroNet  .usect "ZeroNet_Section",2,1,1 ;

MOVL XAR0, #ZeroNet

还有符号之间的优先级问题:

_ADCDRV_1ch_Rlt:n:.usect "ADCDRV_1ch_Section",2,1,1

MOVW DP, #_ADCDRV_1ch_Rlt:n:>>6

这里# 和》哪个优先级高?

  • 建议做实验看一下。

    ZeroNet 是地址,即ZeroNet_Section中存放的2个字节数据,第一个数据的地址。

    MOVW DP, #ZeroNet>>6,是把在ZeroNet中的data page,右移6位给到DP。

    比如ZeroNet为0xc200,他的datapage就为0x308,再右移6位给到DP的就是0XC

    具体的可以参考下面两份文档:

    www.ti.com/.../spru513d

    www.ti.com/.../spru430e

  • 很感谢啊!谢谢!

    再请教一个问题:

    _ADCDRV_1ch_Rlt:n: .usect "ADCDRV_1ch_Section",2,1,1

    ADCDRV_1ch_Rlt:n:中的“:n:”是什么意思?

    是不是在汇编中_ADCDRV_1ch_Rlt:n: 相当于ADCDRV_1ch_Rlt[ ]?

  • 能加我的QQ:773566433  聊下吗?谢谢!

  • 里面的n是Macro中的Substitution Symbols,怕编译器识别不了加:  :。

    Substitution Symbols的作用有点类似于函数中的参数,但又有本质差别。

    具体的还是看上面谈到的spru513d,里面有给出详细的例子和说明。

    没有QQ........汗。

  • 谢谢你的回答,很好!

    我想再请教下:

    ZeroNet .usect "ZeroNet_Section",2,1,1 ; output terminal 1

    .text

    ; label to DP initialisation function

    .def _DPL_Init

    _DPL_Init:

    ZAPA

    MOVL XAR0, #ZeroNet

    MOVL *XAR0, ACC

    ZeroNet是个指针变量对吧,上面的程序好像是用这个指针变量去初始化辅助寄存器XAR0,为什么不直接给XAR0赋值0,而是通过指针变量去赋值呢?

    DCDRV_1ch_INIT .macro n

    _ADCDRV_1ch_Rlt:n: .usect "ADCDRV_1ch_Section",2,1,1 ; output terminal 1

    ; publish Terminal Pointers for access from the C environment

    .def _ADCDRV_1ch_Rlt:n:

    MOVL XAR2, #ZeroNet    ; "ZeroNet" is initialised to 0 in ISR

    MOVW DP, #_ADCDRV_1ch_Rlt:n:>>6

    MOVL @_ADCDRV_1ch_Rlt:n:, XAR2   ; zero output terminal pointer

    .endm

    语句MOVW DP, #_ADCDRV_1ch_Rlt:n:>>6中,

    我能看懂MOVW DP, #_ADCDRV_1ch_Rlt:n:

    就是把ADCDRV_1ch_Rlt:n:所在的页号告诉给DP,但是为什么又要在之后右移6位呢?

    谢谢解答!

  • 关于第一个,请做实验看一下

    MOVL XAR0, #ZeroNet  把ZeroNet的地址给到XAR0

    MOVL *XAR0, ACC         把ACC的值写入到XAR0指向的地址

    关于第二个问题,我认为是写错了,忽视了MOVW本身已经对 #_ADCDRV_1ch_Rlt:n:右移6位。

    下面的程序你可以看到写的是MOVW DP, #_ADCDRV_1ch_Rlt:n:

  • 我想请问,ZeroNet在CNTL_2P2Z.asm及PWMDRV_1ch.asm中的作用

    MOVL XAR2, #ZeroNet ; Initialize XAR2 pointer with the ; 22-bit address of ZeroNet 

    ........

    在2P2Z中,XAR2三次作为源寄存器,它们都是作什么用呢?