⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motor.lst

📁 步进电机的单片机控制
💻 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 + -