流久动 发表于 2012-6-3 22:02:57

高手帮我看下 这个单片机汇编 帮我解释下 语句意思好吗? 跪求

基于单片机的步进电机驱动电路设计
MOV 21H,#01H
  AJMP QUIT
  LOOP7: MOV P1,#0C0H
  MOV 20H,#01H
  MOV 21H,#80H
  AJMP QUIT
  ;***************电机反转*****************
  FAN: JB 08H,LOOQ0
  JB 09H,LOOQ1
  JB 0AH,LOOQ2
  JB 0BH,LOOQ3
  JB 0CH,LOOQ4
  JB 0DH,LOOQ5
  JB 0EH,LOOQ6
  JB 0FH,LOOQ7
  LOOQ0: MOV P1,#0A0H
  MOV 21H,#02H
  MOV 20H,#40H
  AJMP QUIT
  LOOQ1: MOV P1,#0E0H
  MOV 21H,#04H
  MOV 20H,#20H
  AJMP QUIT
  LOOQ2: MOV P1,#0C0H
  MOV 21H,#08H
  MOV 20H,#10H
  AJMP QUIT
  LOOQ3: MOV P1,#0D0H
  MOV 21H,#10H
  MOV 20H,#08H
  AJMP QUIT
  LOOQ4: MOV P1,#050H
  MOV 21H,#20H
  MOV 20H,#04H
  AJMP QUIT
  LOOQ5: MOV P1,#070H
  MOV 21H,#40H
  MOV 20H,#02H
  AJMP QUIT
  LOOQ6: MOV P1,#030H
  MOV 21H,#80H
  MOV 20H,#01H
  AJMP QUIT
  LOOQ7: MOV P1,#0B0H
  MOV 21H,#01H
  MOV 20H,#80H
  QUIT: RETI
  END

小甲鱼 发表于 2012-6-3 22:02:58

给你C的注释,跟汇编差别不大,理解下。

#include <reg52.h>



sbit A1=P1^0; //定义步进电机连接端口
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;


#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电
#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电
#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电
#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电

unsigned char Speed;
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
   
while(t--)
{
   //大致延时1mS
   DelayUs2x(245);
       DelayUs2x(245);
}
}
/*------------------------------------------------
                  主函数
------------------------------------------------*/
main()
{
unsigned int i=512;//旋转一周时间
Speed=8;
Coil_OFF
while(i--)//正向
{         
   Coil_A1                //遇到Coil_A1用{A1=1;B1=0;C1=0;D1=0;}代替
   DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
                           //数字越小,转速越大,力矩越小
   Coil_B1
   DelayMs(Speed);
   Coil_C1
   DelayMs(Speed);
   Coil_D1
   DelayMs(Speed);
}
Coil_OFF
i=512;
while(i--)//反向
{
   Coil_D1                //遇到Coil_A1用{A1=1;B1=0;C1=0;D1=0;}代替
   DelayMs(Speed);         //改变这个参数可以调整电机转速 ,
                               //数字越小,转速越大,力矩越小
   Coil_C1
   DelayMs(Speed);
   Coil_B1
   DelayMs(Speed);
   Coil_A1
   DelayMs(Speed);
}
}


页: [1]
查看完整版本: 高手帮我看下 这个单片机汇编 帮我解释下 语句意思好吗? 跪求