?? aexp15.asm
字號:
;*-----------------------------------------------------------*
;* Aexp15.asm 步進電機綜合控制實驗 *
;* 步進電機方向/速度/起動控制程序source file *
;* Copyright (c) 2002 by HUST *
;*-----------------------------------------------------------*
stack segment stack
db 256 dup(?)
stack ends
DATA SEGMENT
PSTA DB 05H, 15H, 14H, 54H, 50H, 51H, 41H, 45H
mess db 'Press SW2 to start step-moter !',0dh,0ah,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:data,ss:stack
BEGIN: MOV AX, data
MOV DS, AX
mov ah, 09h ;顯示提示信息
mov dx,offset mess
int 21h
MOV DX, 303H ;8255A初始化
MOV AL, 81H
OUT DX, AL
MOV AL, 09H ;關閉LS373,置PC4=1
OUT DX, AL
MOV CH, 50 ;正走步數送CH
WAIT1: MOV DX, 302H ;PC口
IN AL,DX
AND AL,01 ;查SW2是否按下(PC0=0)?
JNZ WAIT1 ;未按下,等待
MOV DX, 303H ;8255命令口
MOV AL, 08H ;打開LS373,置PC4=0
OUT DX, AL
L1: MOV CL,08 ;循環次數送CL
MOV SI, OFFSET PSTA ;正走相序表指針送SI
L2: MOV DX, 300H ;相序表內容送PB口
MOV AL, [SI]
OUT DX, AL ;步進電機走1步
push cx
mov cx, 0ffh
dl10: MOV BX, 0FFF0H ;延時1
DL1: DEC BX
JNZ DL1
dec cx
jnz dl10
pop cx
INC SI ;指針加1
DEC Ch ;正走步數減1
JZ REW ;50步已到,則反走
DEC Cl ;50步未到,則檢測循環次數
JNZ L2 ;循環次數不到8次,則繼續送數
JMP L1 ;已到8次,則重新賦值
REW: MOV CH, 200 ;反走步數送CH
L3: MOV CL, 08 ;循環次數送CL
MOV SI, OFFSET PSTA+7 ;反走相序表指針SI
L4: MOV DX, 300H ;相序表內容送PB口
MOV AL, [SI]
OUT DX, AL ;步進電機走1步
push cx
mov cx, 0ffh
dl20: MOV BX, 0FFFH ;延時2
DL2: DEC BX
JNZ DL2
dec cx
jnz dl20
pop cx
DEC SI ;指針減1
DEC CH ;反走步數減1
JZ QUIT ;200步已到,則停止
DEC CL ;200步未到,則檢測循環次數
JNZ L4 ;循環次數未到,則繼續送數
JMP L3 ;循環次數已到8次,則重新賦值
QUIT: MOV DX, 303H ;8255A命令口
MOV AL,81H
OUT DX,AL
MOV AL, 09H ;關閉LS373,置PC4=1
OUT DX, AL
MOV AX, 4C00H ;程序退出
INT 21H
CODE ENDS
END BEGIN
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -