智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1159|回复: 4
打印 上一主题 下一主题

[软件类] 汇编高手解读(程序里有汇编)

[复制链接]

2

主题

8

帖子

0

精华

高级会员

Rank: 4

积分
604
威望
341
贡献
187
兑换币
162
注册时间
2012-6-30
在线时间
38 小时
跳转到指定楼层
1#
发表于 2014-6-12 10:05:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
asm {
  ldd  temp;   //  带偏移量的间接寻址装载指令
  ldx  #4
  idiv      //    有符号数除法指令IDIV
  stab ctemp
}

回复

使用道具 举报

22

主题

411

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5566
威望
2470
贡献
1416
兑换币
1607
注册时间
2012-10-21
在线时间
840 小时
2#
发表于 2014-6-12 10:45:49 | 只看该作者
D=temp,X=4,D/X=temp/4→X,余数→D,ctemp=B(D=A:B)
回复

使用道具 举报

2

主题

8

帖子

0

精华

高级会员

Rank: 4

积分
604
威望
341
贡献
187
兑换币
162
注册时间
2012-6-30
在线时间
38 小时
3#
 楼主| 发表于 2014-6-12 12:06:28 | 只看该作者
/****************************************************************************
* 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[channel]-MotorCurStep[channel];//目标步数值减去了当前步数值
       
        if (itemp!=0)
        {
          if (itemp<0)  MotorCurStep[channel]--;
          else if (itemp>0)  MotorCurStep[channel]++;
       
          //motor_channel=&MCDC0H+channel*4;
          motor_channel=(unsigned char *)((unsigned int)&MCDC0 + (unsigned int)(channel*4));
          
          temp = MotorCurStep[channel];
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[channel]=OFF;               
    }
}
回复

使用道具 举报

2

主题

8

帖子

0

精华

高级会员

Rank: 4

积分
604
威望
341
贡献
187
兑换币
162
注册时间
2012-6-30
在线时间
38 小时
4#
 楼主| 发表于 2014-6-12 12:11:07 | 只看该作者
单片机是:MC9S12HZ256CPV
回复

使用道具 举报

2

主题

8

帖子

0

精华

高级会员

Rank: 4

积分
604
威望
341
贡献
187
兑换币
162
注册时间
2012-6-30
在线时间
38 小时
5#
 楼主| 发表于 2014-6-12 19:00:14 | 只看该作者
有人解读码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 18:56 , Processed in 0.047504 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表