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

📄 控制步进电机角度(单步正确全速有问题).asm

📁 关于proteus的仿真实例
💻 ASM
📖 第 1 页 / 共 2 页
字号:
KB17: NOP

NOKEY4:
      LJMP JIAN_ZI
KEYWORK:MOV R0,40H
       MOV @R0,QU_JIANZHI          ;得到键值  查表得各值
       LCALL   DELAY
       MOV A,40H
       INC A
       MOV 40H,A
       CJNE A,#2CH,WAITFREE
       ACALL time1s
       MOV R6,28H
       MOV R5,29H
       MOV R4,2AH
       MOV A,28H    ;显示百位的数字 (扫描的数)
       MOV DPTR,#TABLE
       MOVC A,@A+DPTR
       MOV 50H,A
       CLR A
       MOV A,29H    ;显示十位的数字
       MOV DPTR,#TABLE
       MOVC A,@A+DPTR
       MOV 51H,A
       CLR A
       MOV A,2AH    ;显示个位的数字
       MOV DPTR,#TABLE
       MOVC A,@A+DPTR
       MOV 52H,A
       CLR A
       MOV 28H,A
       MOV 29H,A
       MOV 2AH,A
       MOV A,2BH
       CJNE A,#12,LOOP  ;送显示部分
      LJMP DISPLAY0
LOOP:  CLR A
       MOV 28H,A
       MOV 29H,A
       MOV 2AH,A
       MOV 2BH,A
       MOV 40H,#28H
       LJMP MAIN

WAITFREE:
       MOV A,P1
       MOV QU_JIANZHI,#00H
       ANL A,#0FH
       XRL A,#0FH
       JNZ WAITFREE
       LJMP JIAN_ZI    ;转JIAN_ZI 循环
       RET
 ;*******************************************

;******************************************************
;******************运算**************************

YUNSUAN:MOV R7,#12H  ;运算(十进制转十六进制)
        MOV R3,#100
        MOV A,R6
        MOV B,R3
        MUL AB
        MOV R1,B
        XCH A,R5
        MOV B,#10
        MUL AB
        MOV R2,A
        ADD A,R4
        ADD A,R5
        MOV R0,A
        MOV A,#00H
        MOV R6,A
        MOV R5,A
        MOV R4,A
        MOV R3,A
        MOV R2,A
        CLR C
        MOV A,R1  ;双字节除以单字节(结果存在R1)
        SUBB A,R7
        JC DV50
        SETB OV
        RET
  DV50: MOV R6,#8
  DV51: MOV A,R0
        RLC A
        MOV R0,A
        MOV A,R1
        RLC A
        MOV R1,A
        MOV F0,C
        CLR C
        SUBB A,R7
        ANL C,/F0
        JC DV52
        MOV R1,A
  DV52: CPL C
        MOV A,R3
        RLC A
        MOV R3,A
        DJNZ R6,DV51
        MOV A,R1
        ADD A,R1

        SUBB A,R7
        JC DV54

  DV54: CLR OV
        MOV A,R3
        MOV B,#0AH
        MUL AB
        mov R5,A
        mov r4,b
        cjne r4,#00h,de
    de: cjne r5,#00h,main0
        ljmp main
  main0:MOV A,31H        ;判断正反转
        CJNE A,#10, MAIN4
        mov p3,#01H  ;电机工作部分
        acall time2ms
        dec r5
        cjne r5,#00h,main1
        cjne r4,#00h,zhuang
        ljmp fu_wei
 zhuang:acall pan
        ljmp main1
           
        
  main1:mov p3,#03h    ;正
        acall time2ms
        
        dec r5
        cjne r5,#00h,main2
        cjne r4,#00h,zhuang1
        ljmp fu_wei
 zhuang1:acall pan
        ljmp main2
  main2:mov p3,#07h
        acall time2ms
        
        dec r5
        cjne r5,#00h,main3
        cjne r4,#00h,zhuang2
        ljmp fu_wei
 zhuang2:acall pan
        ljmp main3
  main3:mov p3,#05h
        acall time2ms
        dec r5
        cjne r5,#00h,main0
        cjne r4,#00h,zhuang3
        ljmp fu_wei
 zhuang3:acall pan
        ljmp main0
  MAIN4:MOV P3,#05H       ;反
        ACALL time2ms
        dec r5
        cjne r5,#00h,main5
        cjne r4,#00h,zhuang4
        ljmp fu_wei
 zhuang4:acall pan
        ljmp main5
        LJMP fu_wei
  MAIN5:MOV P3,#07H
        ACALL time2ms
        dec r5
        cjne r5,#00h,main6
        cjne r4,#00h,zhuang5
        ljmp fu_wei
 zhuang5:acall pan
        ljmp main6
        LJMP fu_wei
  MAIN6:MOV P3,#03H
        ACALL time2ms
        dec r5
        cjne r5,#00h,main7
        cjne r4,#00h,zhuang6
        ljmp fu_wei
 zhuang6:acall pan
        ljmp main7
        LJMP fu_wei
  MAIN7:MOV P3,#01H
        ACALL time2ms
        dec r5
        cjne r5,#00h,main4
        cjne r4,#00h,zhuang7
        ljmp fu_wei
 zhuang7:acall pan
        ljmp main4
        LJMP fu_wei
 ;************************************************ ;减法的补码
 pan: dec r4
      dec r5
      mov r5,#00h
       ret 
;************************************
    ting:mov p2,#00h    ;电机停止
        ljmp  main
        ret
;*********************************************
 fu_wei:clr a       ;复位清零  回到主程序
        mov r0,a
        mov r1,a
        mov r2,a
        mov r3,a
        mov r4,a
        mov r4,a
        mov r6,a
        mov 28h,a
        mov 29h,a
        mov 2ah,a
        mov 2bh,a
        ljmp main
;****************************************************88
WRI:    PUSH    ACC
        CLR     RS
        SETB    RW
WRI1:   MOV     P0,#0FFH
        SETB    E
        MOV     A,P0
        CLR     E
        JB      ACC.7,WRI1
        CLR     RW
        MOV     P0,COM
        SETB    E
        CLR     E
        POP     ACC
        RET
;******************************************以上是写指令子程序
WRD:    PUSH    ACC
        CLR     RS
        SETB    RW
WRD1:   MOV     P0,#0FFH
        SETB    E
        MOV     A,P0
        CLR     E
        JB      ACC.7,WRD1
        SETB    RS
        CLR     RW
        MOV     P0,DAT
        SETB    E
        CLR     E
        POP     ACC
        RET
;******************************************以上是写数据子程序
;*************************************
;*                                   *
;*          延时513 us              *
;*                                   *
;*************************************
;
;513微秒延时程序
DELAY:          MOV     R2,#0FEH
DELAY1:         DJNZ    R2,DELAY1
  RET
;
;
;
;*****************************************************

time2ms: mov r7,#50
time2ms1:mov r6,#220
         nop
time2ms2:djnz r6,time2ms2
         djnz r7,time2ms1
         ret

;*****************************************************
;*************************************
;*                                   *
;*             延时10ms             *
;*                                   *
;*************************************
;
;10毫秒延时程序
;延时1S
;*****************************************************

time1s:                 mov    r5,#08h			;1001.401ms
time1s_1:               mov    r6,#0f4h		;125.173ms
time1s_2:               mov    r7,#0ffh		;511us
                        djnz   r7,$
                        djnz   r6,time1s_2
                        djnz   r5,time1s_1
                        ret
;*****************************************************
DL10MS:         MOV     R3,#14H
DL10MS1:        LCALL   DELAY
                DJNZ    R3,DL10MS1
          RET
;***********************表
TABLE: DB  30H,31H,32H,33H,34H ;01234
       DB  35H,36H,37H,38H,39H ;56789
END              ;程序结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -