c程序中有汇编,请高手解读(已解决)
本帖最后由 FSL_TICS_ZP 于 2014-7-8 14:51 编辑asm {
lddtemp; //带偏移量的间接寻址装载指令
ldx#4
idiv // 有符号数除法指令IDIV
stab ctemp
} 大哥,CPU内核型号给出来哇 同问,你的MCU型号是什么啊? mc9s12hy64 /****************************************************************************
* motor_update(char channel, char dir) -
*
* Description : Control motor drivers and polarity
* :
* Example : N/A
* Input : motor channel
* Output : MotorCurStyep[?]
* Modify : Motor driver and polarity
* Return : N/A
****************************************************************************/
void motor_update(char channel)//分步方式步进电机刷新程序
{
volatile unsigned char ctemp,*motor_channel;
int temp,itemp;
itemp=MotorFinalStep-MotorCurStep;//目标步数值减去了当前步数值
if (itemp!=0)
{
if (itemp<0)MotorCurStep--;
else if (itemp>0)MotorCurStep++;
//motor_channel=&MCDC0H+channel*4;
motor_channel=(unsigned char *)((unsigned int)&MCDC0 + (unsigned int)(channel*4));
temp = MotorCurStep;
asm {
ldd temp; //带偏移量的间接寻址装载指令
ldx #4
idiv // 有符号数除法指令IDIV
stab ctemp
}
if(ctemp==0)
{
*motor_channel &=~S0_DTC; //;Duty cycle channel 0 (A low /A PWM)
*(motor_channel+2) &=~S0_DTC; //;Duty cycle channel 1 (B low /B PWM)
}
else if(ctemp==1)
{
*motor_channel &=~S0_DTC; //;Duty cycle channel 0 (A low /A PWM)
*(motor_channel+2) |=S1_DTC; //;Duty cycle channel 1 (B PWM /B low)
}
else if(ctemp==2)
{
*motor_channel |=S1_DTC; //;Duty cycle channel 0 (A PWM /A low)
*(motor_channel+2) |=S1_DTC; //;Duty cycle channel 1 (B PWM /B low)
}
else if(ctemp==3)
{
*motor_channel |=S1_DTC; //;Duty cycle channel 0 (A PWM /A low)
*(motor_channel+2)&=~S0_DTC; //;Duty cycle channel 1 (B low /B PWM)
}
}
else
{
MotorStatus=OFF;
}
} 单片机是:MC9S12HZ256CPV 查一下对应的汇编指令表,不就知道了?只有几条! http://wenku.baidu.com/link?url=gP4tdEYr4R0c-IpJXNzYQEJf1fwJnEY4F7DfsuSqBU-v5ZjAt-nBLHYx1X3y4zaMwnwPR1QIZS-vcjGChyw-cygfQjf4OaQ7wymiQu3sfT7
lddtemp; 将内存单元的内同加载到累加器D
ldx#4 将内存单元的内容加载到变址寄存器X
idiv (D)/(X)→X,余数→D;
stab ctemp 将累加器B的内容存储到内存单元
话说本ID怎么觉得这几句汇编内容不全呢? 你确定这玩意能编译通过?
页:
[1]