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

📄 m3967.asm

📁 MOTOR DRIVER M6219控制程序设计
💻 ASM
字号:
;model: AM3100 AB36 TEST (MOTOR DRIVER USE ML3967)
;editer: antony zhang
;date:  2004/oct/8
;H/W:TB41
;***************************************************
; AB36 test start here
;***************************************************
;MOTOR DRIVER LINK 
                  RESET           EQU      P1.0
                  VREF_SW1        EQU      P1.1
                  VREF_SW2        EQU      P1.2
                  STEP            EQU      P1.3
                  DIR             EQU      P1.4                              
                  MS1             EQU      P1.5
                  MS2             EQU      P1.6
                  SLEP            EQU       P1.7
;------------------------------------------------
                  MOTOR_GO_STEPS  EQU      20H
		  MOTOR_GO_STEPS1 EQU      21H                 
		  DELAY_BUF       EQU      22H
;---------------------------------------------------
                  LED_BUF         EQU      4000H
;=====================================================

                  ORG            0000H		           
                  AJMP           MAIN
                  ORG            001BH
                  AJMP           IT1P
                  ORG            0030H
;------------------------------------------------
MAIN:             MOV            TMOD,#20H
                  MOV            TL1,#0FEH
                  MOV            TH1,#0FEH              
                  SETB           ET1
                  SETB           TR1
 	          SETB           EA
		  LCALL          MOTOR_INIT
LOOP_1:
		  LCALL          MOTOR_POSITIVE_COMMAND
                  MOV            MOTOR_GO_STEPS,#1
		  MOV            MOTOR_GO_STEPS1,#250
                  LCALL          QUARTER_STEP_COMMAND
		  LCALL          MOTOR_TEST2
		  LCALL          DELAY_1S

                  LCALL          MOTOR_NEGATIVE_COMMAND
                  MOV            MOTOR_GO_STEPS,#1
		  MOV            MOTOR_GO_STEPS1,#250
                  LCALL          QUARTER_STEP_COMMAND
		  LCALL          MOTOR_TEST2
		  LCALL          DELAY_1S
		  LJMP           LOOP_1
;*****************AB36 motor test start here******************
MOTOR_TEST:       LCALL          MOTOR_INIT
                  LCALL          EIGHTH_STEP_COMMAND
                  LCALL          MOTOR_TEST1
		  LCALL          QUARTER_STEP_COMMAND
		  LCALL          MOTOR_TEST1
		  LCALL          HALF_STEP_COMMAND
		  LCALL          MOTOR_TEST1
		  LCALL          FULL_STEP_COMMAND
		  LCALL          MOTOR_TEST1
		  RET                  
MOTOR_TEST1:                 
		  MOV            MOTOR_GO_STEPS,#1
		  MOV            MOTOR_GO_STEPS1,#250
MOTOR_TEST2:
		  LCALL          MOTOR_ACTION_COMMAND
		  LCALL          MOTOR_POSITIVE_COMMAND
		  LCALL          MOTOR_STEPS_COMMAND
		  RET
;------------------------------------------------------------------
MOTOR_INIT:
                  MOV            P1,#00H       
                  MOV            MOTOR_GO_STEPS,#0
                  MOV            MOTOR_GO_STEPS1,#0                
                  RET
;------------motor step command----------------------------------------
FULL_STEP_COMMAND:
                  CLR           MS1  /*MS1=0 MS2=0 FULL STP */    
                  CLR           MS2   
                  LCALL         MOTOR_CURRENT_HI
                  RET
HALF_STEP_COMMAND:
                  SETB          MS1  ; MS1=1 MS2=0 HALF STEP
                  CLR           MS2
                  LCALL         MOTOR_CURRENT_HI
                  RET
QUARTER_STEP_COMMAND:
                  CLR           MS1  ;MS1=0 MS2=1 QUARTER STEP
                  SETB          MS2
                  LCALL         MOTOR_CURRENT_MIDDLE
                  RET
EIGHTH_STEP_COMMAND:
                  SETB          MS1  ;MS1=1 MS2=1 EIGHTH STEP
                  SETB          MS2
                  LCALL         MOTOR_CURRENT_LOW
                  RET
;-----MOTOR CURRENT COMMAND-----------------------------------------------
MOTOR_CURRENT_LOW:
                  SETB         VREF_SW1
                  SETB         VREF_SW2
                  RET
MOTOR_CURRENT_MIDDLE:
                  CLR          VREF_SW1
                  SETB         VREF_SW2
                  RET
MOTOR_CURRENT_HI: 
                  CLR          VREF_SW1
                  CLR          VREF_SW2
                  RET
;-----------------------------------------------------------------
MOTOR_ACTION_COMMAND:
                  SETB        RESET
		  SETB        SLEP
		  RET
;-------------------------------------------------------------------
MOTOR_POSITIVE_COMMAND: 
                  SETB        DIR
		  RET
MOTOR_NEGATIVE_COMMAND:
                  CLR         DIR
		  RET
;---------------------------------------------------------------------
MOTOR_STEPS_COMMAND:
                  MOV       DELAY_BUF,#150		  
                  MOV       R5,MOTOR_GO_STEPS
ST_LOOP1:	  MOV       R4,MOTOR_GO_STEPS1
ST_LOOP:          LCALL     MOVE_ONE_LOOP	
		  DJNZ      R4,ST_LOOP
		  DJNZ      R5,ST_LOOP1
		  RET
;------------------------------------------------------------------------
MOTOR_ADD_CAREER: DEC       DELAY_BUF                 
                  MOV       A,DELAY_BUF	  	 
    	          CJNE      A,#0,NEXTT
		  ADD       A,#01H
		  MOV       DELAY_BUF,A	
NEXTT:
                  RET
;---------------------------------------------------------------------------
MOVE_ONE_LOOP:    
                  MOV        R3,#1
M_LOOP1:	  MOV        R2,#200       
M_LOOP2:	  CPL        STEP          
                  LCALL      MOTOR_ADD_CAREER
		  LCALL      MOTOR_DELAY
		  DJNZ       R2,M_LOOP2
		  DJNZ       R3,M_LOOP1
		  RET
;----------------------------------------------------------------------
DELAY_1S:         MOV        R1,#100
DE_LOOP:          MOV        R0,#250
DE_LOOP1:         DJNZ       R0,D_LOOP1
                  DJNZ       R1,D_LOOP1
		  RET                                        
;-----------------------------------------------------------------------
MOTOR_DELAY:
                  MOV       R1,DELAY_BUF
D_LOOP:		  MOV       R0,#1
D_LOOP1:          DJNZ      R0,D_LOOP1
                  DJNZ      R1,D_LOOP
		  RET
;-------------------------------------------------------------------------
IT1P:             CPL      P3.5
                  RETI                 
;*************AB36 TEST PROGRAM END HERE****************************************
                  END

    
                  

⌨️ 快捷键说明

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