📄 motor.lst
字号:
A51 MACRO ASSEMBLER MOTOR 04/19/2008 12:02:54 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN motor.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE motor.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0000 1 org 0000h
0000 2100 2 jmp stop
0100 3 org 0100h
0100 4 stop:
0100 4390FF 5 orl p1,#0ffh ;步进电机停止
0103 6 loop:
0103 30B23F 7 jnb p3.2,for2 ;如果p3.2 按下正转
0106 30B345 8 jnb p3.3,rev2 ;如果p3.3 按下反转
0109 30B430 9 jnb p3.4,stop1 ;如果p3.4按下停止
010C 80F5 10 jmp loop ;反复监测键盘
010E 11 for:
010E 7800 12 mov r0,#00h ;正转到tab取码指针初值
0110 13 for1:
0110 E8 14 mov a,r0 ;取码
0111 900160 15 mov dptr,#table ;
0114 93 16 movc a,@a+dptr
0115 60F7 17 jz for ;是否到了结束码00h
0117 F4 18 cpl a ;把acc 反向
0118 F590 19 mov p1,a ;输出到p1开始正转
011A 30B41F 20 jnb p3.4,stop1 ;如果p3.4 按下停止
011D 30B32E 21 jnb p3.3,rev2 ;如果p3.3按下反转
0120 3157 22 call delay ;转动的速度
0122 08 23 inc r0 ;取下一个码
0123 80EB 24 jmp for1 ;继续正转
0125 25 rev:
0125 7805 26 mov r0,#05h ;反转到tab取码指针初值
0127 27 rev1:
0127 E8 28 mov a,r0
0128 900160 29 mov dptr,#table ;取码
012B 93 30 movc a,@a+dptr
012C 60F7 31 jz rev ;是否到了结束码00h
012E F4 32 cpl a ;把acc 反向
012F F590 33 mov p1,a ;输出到p1开始反转
0131 30B408 34 jnb p3.4,stop1 ;如果p3.4 按下停止
0134 30B317 35 jnb p3.3,rev2 ;如果p3.3按下反转
0137 3157 36 call delay ;转动的速度
0139 08 37 inc r0 ;取下一个码
013A 80EB 38 jmp rev1 ;继续反转
013C 39 stop1:
013C 3157 40 call delay ;按p3.4 的消除抖动
013E 30B4FD 41 jnb p3.4,$ ;p3.4 放开否?
0141 3157 42 call delay ;放开消除抖动
0143 80BB 43 jmp stop
0145 44 for2:
0145 3157 45 call delay ;按p3.2 的消除抖动
0147 30B2FD 46 jnb p3.2,$ ;p3.2 放开否?
014A 3157 47 call delay ;放开消除抖动
014C 80C0 48 jmp for
014E 49 rev2:
014E 3157 50 call delay ;按p3.3的消除抖动
0150 30B3FD 51 jnb p3.3,$ ;p3.3 放开否?
0153 3157 52 call delay ;放开消除抖动
0155 80CE 53 jmp rev
0157 54 delay:
0157 7928 55 mov r1,#40 ;步进电机的转速20ms
0159 56 d1:
0159 7AF8 57 mov r2,#248
015B DAFE 58 djnz r2,$
A51 MACRO ASSEMBLER MOTOR 04/19/2008 12:02:54 PAGE 2
015D D9FA 59 djnz r1,d1
015F 22 60 ret
0160 61 table:
0160 03090C06 62 db 03h,09h,0ch,06h ;正转表
0164 00 63 db 00 ;正转结束
0165 03060C09 64 db 03h,06h,0ch,09h ;反转
0169 00 65 db 00 ;反转结束
66
67 end
A51 MACRO ASSEMBLER MOTOR 04/19/2008 12:02:54 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
D1 . . . . . . . . C ADDR 0159H A
DELAY. . . . . . . C ADDR 0157H A
FOR. . . . . . . . C ADDR 010EH A
FOR1 . . . . . . . C ADDR 0110H A
FOR2 . . . . . . . C ADDR 0145H A
LOOP . . . . . . . C ADDR 0103H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
REV. . . . . . . . C ADDR 0125H A
REV1 . . . . . . . C ADDR 0127H A
REV2 . . . . . . . C ADDR 014EH A
STOP . . . . . . . C ADDR 0100H A
STOP1. . . . . . . C ADDR 013CH A
TABLE. . . . . . . C ADDR 0160H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -