📄 motor_control.lst
字号:
A51 MACRO ASSEMBLER MOTOR_CONTROL 08/21/2008 10:45:12 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN motor_control.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE motor_control.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2
3
4
0000 5 RUB:
0000 7820 6 MOV R0,#20H ;指向状态计数器
0002 06 7 INC @R0 ;计数器加一,正转
0003 8690 8 MOV P1,@R0 ;送输出口
0005 C2AF 9 CLR EA ;关总中断
0007 08 10 INC R0 ; 指针指向21H
0008 06 11 INC @R0 ;绝对坐标加一
0009 B60D07 12 CJNE @R0,#0DH,RUB1;不进位则转
000C 08 13 INC R0 ;进位则位加一
000D 06 14 INC @R0 ;
000E B60D02 15 CJNE @R0,#0DH,RUB1 ;
0011 08 16 INC R0 ;高位加一
0012 06 17 INC @R0 ;
0013 18 RUB1: ;
0013 D2AF 19 SETB EA ; 开总中断
0015 1E 20 DEC R6 ; 增量坐标减
0016 BEFF01 21 CJNE R6,#0FFH,RUB2 ; 查借位否
0019 1F 22 DEC R7 ;
23 ;
001A 24 RUB2: ;;
001A EE 25 MOV A,R6 ;
001B 4F 26 ORL A,R7 ;
001C 7004 27 JNZ RUB3 ;;查增量坐标为0否
001E C28C 28 CLR TR0 ;
0020 800E 29 SJMP RUB4 ; 不为0转出继续执行
0022 30 RUB3: ;
0022 C28C 31 CLR TR0 ; 加载定时器
0024 EA 32 MOV A,R2 ;
0025 258A 33 ADD A,TL0 ;
0027 F58A 34 MOV TL0,A ;
0029 EB 35 MOV A,R3 ;
002A 358C 36 ADDC A,TH0 ;
002C F58C 37 MOV TH0,A ;
002E D28C 38 SETB TR0 ;
0030 39 RUB4: ;
0030 32 40 RETI ;
41
42
0031 752114 43 mov 21h,#20
0034 752200 44 mov 22h,#0
0037 752300 45 mov 23h,#0
46
47
48
49
50
51
52
53
54
55 ;R0:中间结果寄存器;
56 ;20H,状态寄存器;
57 ;21H、22H、23H系统绝对坐标值;
58 ;R1,存储过程速度字,初始存储启动速度字
A51 MACRO ASSEMBLER MOTOR_CONTROL 08/21/2008 10:45:12 PAGE 2
59 ;R3,存储每档运行的步数,初始存储启动速度档的运行参数sN,s为启动速度字
60 ;24H,25H:存储升速过程总步数1N+2N+....(m-1)N,其中1,2....(m-1)为速度字,m为要求的恒速运行速
度字
61 ;26H,27H,28H存储恒速过程总步数,由起点至终点运行的总步数减去两倍升速过程总步数得到
62 ;29H,2AH:存储降速过程总步数,可取与升速过程相同
63 ;R4,存储数据指针,初始存#24H (#24H,表示升速阶段;#26H,表示恒速阶段;#29H,表示降速阶段)
64
003A 65 TIM:
003A 7820 66 MOV R0,#20H ; 取状态计数器
003C 06 67 INC @R0 ; 计数器加一,正转一步
003D 8690 68 MOV P1,@R0 ; 送输出口
003F C2AF 69 CLR EA ; 关总中断
0041 08 70 INC R0 ; 指针指向绝对坐标值
0042 06 71 INC @R0 ; 绝对坐标值加一
0043 B60007 72 CJNE @R0,#0H,TIM1 ; 判断绝对坐标的低八位(21H)有没有进位,如果有,则向22H进位
,
0046 08 73 INC R0 ;
0047 06 74 INC @R0 ;
0048 B60002 75 CJNE @R0,#0H,TIM1 ; 判断绝对坐标的中间八位(22H)有没有进位,如果有,则向23H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -