📄 m3967.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 + -