鱼C论坛

 找回密码
 立即注册
查看: 2193|回复: 1

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

[复制链接]
发表于 2012-6-3 22:02:57 | 显示全部楼层 |阅读模式
20鱼币
基于单片机的步进电机驱动电路设计
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

最佳答案

查看完整内容

给你C的注释,跟汇编差别不大,理解下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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);
  }
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-20 10:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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