📄 aexp15-1.asm
字号:
;*-----------------------------------------------------------*
;* Aexp15-1.asm 采用定时中断技术的步进电机速度控制实验 *
;* 步进电机速度控制程序source file *
;* 本实验中步进电机的步频是18.2步/秒 *
;* Copyright (c) 2002 by HUST *
;*-----------------------------------------------------------*
stack1 segment
db 100 dup(?)
stack1 ends
data segment
psta db 05h,14h,50h,41h
input_mes db 'if you want to quit,press SW2 !',0Dh,0Ah,'$'
int_off dw(?)
int_seg dw(?)
num dw (?)
data ends
code segment
assume cs:code,ds:data,ss:stack1
ok :
mov ax,data
mov ds,ax
mov ax,stack1
mov ss,ax
mov dx,303h ;8255初始化
mov al,81h
out dx,al
mov al,09h ;关闭74LS373
out dx,al
call new ;保存原中断向量,设置新中断向量
mov num,0
mov si,offset psta
lea dx,input_mes ;输出提示
mov ah,09h
int 21h
lop: mov dx,302h ;检测是否按下SW2?
in al,dx
and al,01h
jz quit
jmp lop
quit: mov dx,303h ;关74LS373
mov al,81h
out dx,al
mov al,09h
out dx,al
call renew ;恢复原中断向量
mov ax,4c00h ;程序退出
int 21h
new proc
push ax
push bx
push dx
push ds
mov ax,351ch ;保存原中断向量
int 21h
mov ax,es
mov int_seg,ax
mov int_off,bx
cli ;关中断
mov ax,251ch ;设置新中断向量
mov dx,seg int_pro
mov ds,dx
mov dx,offset int_pro
int 21h
sti ;开中断
pop ds
pop dx
pop bx
pop ax
ret
new endp
renew proc
push ax
push bx
push dx
push ds
cli
mov ax,251ch ;恢复原中断向量
mov dx,int_seg
mov ds,dx
mov dx,int_off
int 21h
sti
pop ds
pop dx
pop bx
pop ax
ret
renew endp
int_pro proc far
push ax
mov ax,data
mov ds,ax
cli ;关中断
mov al,[si] ;送步进电机相序代码
mov dx,300h
out dx,al
inc si
inc num
cmp num,04h
jl L1
mov si,offset psta
mov num,0
L1:
mov dx,303h ;pc4=0,开74LS373
mov al,08h
out dx,al
pop ax
sti ;开中断
iret
int_pro endp
code ends
end ok
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -