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

📄 aexp15-1.asm

📁 微机接口技术的入门必备试验代码 试验平台msdi
💻 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 + -