TI中文支持网
TI专业的中文技术问题搜集分享网站

cla.asm 32位/16位变量区别

我应用的是dsp f28035.我现在定义了两个变量,都是32位浮点。我在cla,asm中运行,32位的值_CputoCla._claa不随_CputoCla._clab的变化而变化,一直是初始值,但是_VoltFilt是可以的。_VoltFilt是定义的16位整形。难道是因为32位和16位的区别吗?cla不是可以用来32位的吗

我在main.C主函数中初始化:

CputoCla._clab=25000.0; 
CputoCla._claa=800.0;

在CLA.asm中运行以下:

;;;;;;;;;;;;;;;;;;;;;;;
MMOV32 MR0,@_CputoCla._clab
MMOV32 @_CputoCla._claa,MR0
MNOP ;3 Wait till I8 to read result
MNOP ;4 Wait till I8 to read result
MNOP ;5 Wait till I8 to read result
MNOP ;6 Wait till I8 to read result
MNOP

;;;;;;;;;;;;;;;;;;;;;;
;MMOVF32 MR0,#105.6
MF32TOUI16 MR2, MR0 ; Get back to Uint16 value
MMOV16 @_VoltFilt, MR2

现在的问题是_VoltFilt可以正常的为2500,而_CputoCla._claa为何不等于2500还是原来的初始值_CputoCla._clab呢?请大侠来帮帮忙。

user3900194:

补充

又如:我现在又定义了两个变量CputoClaAAA和CputoClaBBB,也还是出现类的情况。

#pragma DATA_SECTION(CputoClaAAA,"CpuToCla1MsgRAM");#pragma DATA_SECTION(CputoClaBBB,"CpuToCla1MsgRAM");

Uint16 CputoClaAAA,CputoClaBBB;

在main中初始化

CputoClaBBB=1258; CputoClaAAA=2536;

MMOVZ16 MR0,@_CputoClaAAA MMOV16 @_CputoClaBBB,MR0 MNOP ;3 Wait till I8 to read result MNOP ;4 Wait till I8 to read result MNOP ;5 Wait till I8 to read result MNOP ;6 Wait till I8 to read result MNOP

运行后CputoClaBBB=1258为何还是不能更新为CputoClaAAA的值2536呢,如何让_CputoClaBBB跟随_CputoClaAAA变化呢?网大侠支招。

我应用的是dsp f28035.我现在定义了两个变量,都是32位浮点。我在cla,asm中运行,32位的值_CputoCla._claa不随_CputoCla._clab的变化而变化,一直是初始值,但是_VoltFilt是可以的。_VoltFilt是定义的16位整形。难道是因为32位和16位的区别吗?cla不是可以用来32位的吗

我在main.C主函数中初始化:

CputoCla._clab=25000.0; 
CputoCla._claa=800.0;

在CLA.asm中运行以下:

;;;;;;;;;;;;;;;;;;;;;;;
MMOV32 MR0,@_CputoCla._clab
MMOV32 @_CputoCla._claa,MR0
MNOP ;3 Wait till I8 to read result
MNOP ;4 Wait till I8 to read result
MNOP ;5 Wait till I8 to read result
MNOP ;6 Wait till I8 to read result
MNOP

;;;;;;;;;;;;;;;;;;;;;;
;MMOVF32 MR0,#105.6
MF32TOUI16 MR2, MR0 ; Get back to Uint16 value
MMOV16 @_VoltFilt, MR2

现在的问题是_VoltFilt可以正常的为2500,而_CputoCla._claa为何不等于2500还是原来的初始值_CputoCla._clab呢?请大侠来帮帮忙。

user3900194:

回复 user3900194:

难道是因为CputoClaAAA,CputoClaBBB都在CpuToCla1MsgRAM这个cpu区间,它们之间不能相互传递值吗,不应该这样啊

我应用的是dsp f28035.我现在定义了两个变量,都是32位浮点。我在cla,asm中运行,32位的值_CputoCla._claa不随_CputoCla._clab的变化而变化,一直是初始值,但是_VoltFilt是可以的。_VoltFilt是定义的16位整形。难道是因为32位和16位的区别吗?cla不是可以用来32位的吗

我在main.C主函数中初始化:

CputoCla._clab=25000.0; 
CputoCla._claa=800.0;

在CLA.asm中运行以下:

;;;;;;;;;;;;;;;;;;;;;;;
MMOV32 MR0,@_CputoCla._clab
MMOV32 @_CputoCla._claa,MR0
MNOP ;3 Wait till I8 to read result
MNOP ;4 Wait till I8 to read result
MNOP ;5 Wait till I8 to read result
MNOP ;6 Wait till I8 to read result
MNOP

;;;;;;;;;;;;;;;;;;;;;;
;MMOVF32 MR0,#105.6
MF32TOUI16 MR2, MR0 ; Get back to Uint16 value
MMOV16 @_VoltFilt, MR2

现在的问题是_VoltFilt可以正常的为2500,而_CputoCla._claa为何不等于2500还是原来的初始值_CputoCla._clab呢?请大侠来帮帮忙。

user3900194:

回复 user3900194:

_VoltFilt的值能够跟随A4改变,而CputoClaBBB不能,就是因为_A4 和CputoClaBBB是同一区间,_A4 和_VoltFilt不在同一区间的缘故吗

在这定义

#pragma DATA_SECTION(A,          "CpuToCla1MsgRAM");

#pragma DATA_SECTION(CputoClaBBB,"CpuToCla1MsgRAM");

而#pragma DATA_SECTION(VoltFilt,   "Cla1ToCpuMsgRAM");

#if LOWPASSfloat32 A [FILTER_LEN] = {625, 100, 200, 300, 2000};#elif HIGHPASSfloat32 A [FILTER_LEN] = {625, 100, 200, 300, 2000};//T{0.0625L, 0.25L, 0.375L, 0.25L, 0.0625L}#endif

MMOV32 MR0,@_A4 MF32TOUI16 MR1,MR0; MMOVZ16 MR0,@_CputoClaAAA MMOV16 @_CputoClaBBB,MR1 MMOV16 @_VoltFilt, MR1

这个问题困扰好久了,请来帮助我,在这多谢了。

赞(0)
未经允许不得转载:TI中文支持网 » cla.asm 32位/16位变量区别
分享到: 更多 (0)