现在的一个项目用到了移位指令,在一段汇编程序的开始有如下指令:
EALLOW
MOVW DP, #_GpioDataRegs.GPATOGGLE
MOV @_GpioDataRegs.GPATOGGLE, #0x0400
EDIS。
在末尾有相同的如下指令 :
EALLOW
MOVW DP, #_GpioDataRegs.GPATOGGLE
MOV @_GpioDataRegs.GPATOGGLE, #0x0400
EDIS
即在示波器中观测GPIO口高低电平,这是对GPIO10进行操作。GPIO已配置为:
GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0;
GpioDataRegs.GPASET.bit.GPIO10 =1;
GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO10 = 1;
程序测试后没问题,但现在有个问题:我现在需要对GPIO28进行操作,GPIO28口配置程序与GPIO10口配置一样,只在上述移位操作中将指令改为:MOV @_GpioDataRegs.GPATOGGLE, #0x10000000 测试示波器发现没有高低电平任何变化,请教的是MOV这个指令是不是在这里只能是对16位进行移动,32位的无法操作,是这样吗,请教各位大侠了,小弟在此先谢过!
Eric Ma:
yi wang,
是的,MOV只能对16位数进行操作。你可以使用MOVL。
Eric
现在的一个项目用到了移位指令,在一段汇编程序的开始有如下指令:
EALLOW
MOVW DP, #_GpioDataRegs.GPATOGGLE
MOV @_GpioDataRegs.GPATOGGLE, #0x0400
EDIS。
在末尾有相同的如下指令 :
EALLOW
MOVW DP, #_GpioDataRegs.GPATOGGLE
MOV @_GpioDataRegs.GPATOGGLE, #0x0400
EDIS
即在示波器中观测GPIO口高低电平,这是对GPIO10进行操作。GPIO已配置为:
GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0;
GpioDataRegs.GPASET.bit.GPIO10 =1;
GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO10 = 1;
程序测试后没问题,但现在有个问题:我现在需要对GPIO28进行操作,GPIO28口配置程序与GPIO10口配置一样,只在上述移位操作中将指令改为:MOV @_GpioDataRegs.GPATOGGLE, #0x10000000 测试示波器发现没有高低电平任何变化,请教的是MOV这个指令是不是在这里只能是对16位进行移动,32位的无法操作,是这样吗,请教各位大侠了,小弟在此先谢过!
user3681076:
回复 Eric Ma:
这一点我想到了,可是在上述语句中,我用MOVL时出现了报错啊,CCS编译通知报错。
现在的一个项目用到了移位指令,在一段汇编程序的开始有如下指令:
EALLOW
MOVW DP, #_GpioDataRegs.GPATOGGLE
MOV @_GpioDataRegs.GPATOGGLE, #0x0400
EDIS。
在末尾有相同的如下指令 :
EALLOW
MOVW DP, #_GpioDataRegs.GPATOGGLE
MOV @_GpioDataRegs.GPATOGGLE, #0x0400
EDIS
即在示波器中观测GPIO口高低电平,这是对GPIO10进行操作。GPIO已配置为:
GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0;
GpioDataRegs.GPASET.bit.GPIO10 =1;
GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO10 = 1;
程序测试后没问题,但现在有个问题:我现在需要对GPIO28进行操作,GPIO28口配置程序与GPIO10口配置一样,只在上述移位操作中将指令改为:MOV @_GpioDataRegs.GPATOGGLE, #0x10000000 测试示波器发现没有高低电平任何变化,请教的是MOV这个指令是不是在这里只能是对16位进行移动,32位的无法操作,是这样吗,请教各位大侠了,小弟在此先谢过!
user3681076:
回复 Eric Ma:
EALLOW
MOVW DP, #_GpioDataRegs.GPATOGGLE
MOVL @_GpioDataRegs.GPATOGGLE, #0x0400
EDIS
上述语句在CCS3.3中是报错的,这里不能用MOVL啊 。
现在的一个项目用到了移位指令,在一段汇编程序的开始有如下指令:
EALLOW
MOVW DP, #_GpioDataRegs.GPATOGGLE
MOV @_GpioDataRegs.GPATOGGLE, #0x0400
EDIS。
在末尾有相同的如下指令 :
EALLOW
MOVW DP, #_GpioDataRegs.GPATOGGLE
MOV @_GpioDataRegs.GPATOGGLE, #0x0400
EDIS
即在示波器中观测GPIO口高低电平,这是对GPIO10进行操作。GPIO已配置为:
GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0;
GpioDataRegs.GPASET.bit.GPIO10 =1;
GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO10 = 1;
程序测试后没问题,但现在有个问题:我现在需要对GPIO28进行操作,GPIO28口配置程序与GPIO10口配置一样,只在上述移位操作中将指令改为:MOV @_GpioDataRegs.GPATOGGLE, #0x10000000 测试示波器发现没有高低电平任何变化,请教的是MOV这个指令是不是在这里只能是对16位进行移动,32位的无法操作,是这样吗,请教各位大侠了,小弟在此先谢过!
user3681076:
回复 Eric Ma:
EALLOW
MOVW DP, #_GpioDataRegs.GPATOGGLE
MOV @_GpioDataRegs.GPATOGGLE, #0x0400
EDIS
在上述语句中,将上述MOV换成MOVL后在CCS3.3中是报错的,求助于各位大侠,这个问题困扰我好久。