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

📄 stepping_motor.asm

📁 步进电机起/停,正/反循环控制程序 1.按下一次开关SW2,步进电机顺时针旋转,按下一次开关SW1则停止 再按下一次开关SW2,步进电机反时针旋转,再按下一次开关SW1则停止 重复上述操作,
💻 ASM
字号:
;***********************************************************************  
;  Aexp15-6.asm  步进电机起/停,正/反循环控制程序                         * 
;  运行步骤:1.按下一次开关SW2,步进电机顺时针旋转,按下一次开关SW1则停止     *
;            再按下一次开关SW2,步进电机反时针旋转,再按下一次开关SW1则停止  *          
;            重复上述操作,则会出现同样现象                               *
;          2.按下任意键,退出                                            *
;***********************************************************************
code  segment
      assume cs:code,ds:code
      org 100h
start:jmp  begin
pstb      db 05h,15h,14h,54h,50h,51h,41h,45h                                          	                     ;反向加电数据表
psta      db 45h,41h,51h,50h,54h,14h,15h,05h                                 ;正向加电数据表
status  db 0                                                                 ;初始化方向状态标志变量为0 
delaytime dw (?)					                     ;延时变量参数
message   db 'press SW2 to clockwise to start and press SW1 to stop!'       ;系统提示信息
          db  0ah,0dh                           
          db  'then press SW2 to counterclock to start and press SW1 to stop,' 
          db  'and so on!',0ah,0dh       
          db 'if you want to quit,please hit any key!',0ah,0dh,'$'  

begin:mov  ax,cs
      mov  ds,ax		;取程序数据段地址
      mov dx,offset message     ;显示系统提示信息       
      mov ah,9
      int 21h                         
      
         
      mov al,81h                       ;初始化8255  
      mov dx,303h		                  ;取8255的控制端口的地址
      out dx,al 		                  ;初始化8255的A口,B口和C口高四位为输出模式,C口低四位为输入模式
            	
wait: mov al,08h                       ;打开74ls373      
      mov dx,303h 		                  ;置pc4=0,打开数据缓冲器74LS373
      out dx,al      
                             
      mov  ah, 0bh		       ;检测任意键
      int  21h			       ;调用DOS 21H 功能0BH 进行键盘判断
      cmp  al, 00h
      jne  over       		  ;检测到按下键盘任意键退出       
      mov dx,302h                   ;判断开关SW1的状态,取8255的c端口的地址
      in al,dx                      ;读c端口的值                             
      test al,01h            ;当按下开关sw1时,pc0口为低电平;检测pc0口状态
      jnz  wait              ;  
l1 :  in al,dx               ;循环检测直至按下开关    
      test al,01h
      jz l1                     
      xor status,01h            ;将方向状态值取反
      cmp status,01h             ;进行方向状态值比较
      je l2                     ;判断变量status是否为01h,是取正向数据;否取反向数据 
      mov si,offset pstb                           	;取反向加电数据表地址
      jmp l3
l2:   mov si,offset psta                                                      ;取正向加电数据表地址 
      jmp l3
l0:   pop si  
l3:   push si
      mov cx,08h		;设置数据表循环参数

loop:  mov  ah, 0bh		       ;检测任意键
      int  21h			       ;调用DOS 21H 功能0BH 进行键盘判断
      cmp  al, 00h
      jne  over       		  ;检测到按下键盘任意键退出
       mov dx,302h                       ;取8255的端口C的地址
       in al,dx                    ;读端口C的值                     
      test al,02h                  ;检测PC1口状态 
      jnz l5      
l4:   in al,dx
      test al,02h
      jz l4                     ;循环检测直至放开
      jmp stop      
l5:   mov delaytime,0ffffh	;设置延时变量参数值,采用的是软件
      mov ah,03h		;设置循环延时参数
l6:   mov bx,delaytime		       ;进行软件延时,可根据主机频率
l7:   dec bx 			    ;调整延时变量参数值和循环延时参数
      jnz l7
      dec ah
      jnz l6	
      mov al ,[si]           ;送加电数据
      mov dx,300h	         ;取8255的端口A的地址
      out dx,al		      ;输出加电数据到端口A
      inc si			   ;改变加电数据地址
      dec cx			   ;修改数据表循环参数
      jnz  loop	   ;判断数据表循环是否结束
      jmp l0         		;进行新的一轮循环      
stop:
      mov dx,303h		;取8255的控制端口的地址	
      mov al,09h                
      out dx,al                 ;置pc4=1,关闭数据缓冲器74LS373
      jmp wait

over: mov  dx,303h                  ;置PC4=1,关闭74LS373
      mov  al,09           
      out   dx,al 	                     ;返回DOS
      mov ah, 4ch		;DOS功能调用
      int 21h         ;返回DOS 
code  ends
      end start                 

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -