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

📄 motor_control.lst

📁 c语言编写51单片机键盘扫描程序
💻 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 + -