?? aexp15.asm
字號(hào):
;*-----------------------------------------------------------*
;* Aexp15.asm 步進(jìn)電機(jī)綜合控制實(shí)驗(yàn) *
;* 步進(jìn)電機(jī)方向/速度/起動(dòng)控制程序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 ;關(guān)閉LS373,置PC4=1
OUT DX, AL
MOV CH, 50 ;正走步數(shù)送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 ;循環(huán)次數(shù)送CL
MOV SI, OFFSET PSTA ;正走相序表指針?biāo)蚐I
L2: MOV DX, 300H ;相序表內(nèi)容送PB口
MOV AL, [SI]
OUT DX, AL ;步進(jìn)電機(jī)走1步
push cx
mov cx, 0ffh
dl10: MOV BX, 0FFF0H ;延時(shí)1
DL1: DEC BX
JNZ DL1
dec cx
jnz dl10
pop cx
INC SI ;指針加1
DEC Ch ;正走步數(shù)減1
JZ REW ;50步已到,則反走
DEC Cl ;50步未到,則檢測(cè)循環(huán)次數(shù)
JNZ L2 ;循環(huán)次數(shù)不到8次,則繼續(xù)送數(shù)
JMP L1 ;已到8次,則重新賦值
REW: MOV CH, 200 ;反走步數(shù)送CH
L3: MOV CL, 08 ;循環(huán)次數(shù)送CL
MOV SI, OFFSET PSTA+7 ;反走相序表指針SI
L4: MOV DX, 300H ;相序表內(nèi)容送PB口
MOV AL, [SI]
OUT DX, AL ;步進(jìn)電機(jī)走1步
push cx
mov cx, 0ffh
dl20: MOV BX, 0FFFH ;延時(shí)2
DL2: DEC BX
JNZ DL2
dec cx
jnz dl20
pop cx
DEC SI ;指針減1
DEC CH ;反走步數(shù)減1
JZ QUIT ;200步已到,則停止
DEC CL ;200步未到,則檢測(cè)循環(huán)次數(shù)
JNZ L4 ;循環(huán)次數(shù)未到,則繼續(xù)送數(shù)
JMP L3 ;循環(huán)次數(shù)已到8次,則重新賦值
QUIT: MOV DX, 303H ;8255A命令口
MOV AL,81H
OUT DX,AL
MOV AL, 09H ;關(guān)閉LS373,置PC4=1
OUT DX, AL
MOV AX, 4C00H ;程序退出
INT 21H
CODE ENDS
END BEGIN
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -