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

📄 23_stepm.asm

📁 可作为接口实验的参考教材
💻 ASM
字号:
;=======================================================
;//************************************************************
;文件名: SMotor  FOR  8088

;功能: 步进电机控制实验

;接线: 用导线对应连接步进电机模块的A、B、C、D到8255模块的PC0~PC3;
;      用导线连接8255模块的CS_8255到CPU模块的200H;
;//*********************************************************** 

       C8279    EQU   239H
       D8279    EQU   238H
       C8255    EQU   203H
       P8255C   EQU   202H
       
CODE    SEGMENT
        ASSUME CS:CODE,DS:CODE
START:
        PUSH   CS
        POP    DS
 INI:   MOV    DX,C8255
        MOV    AL,80H
        OUT    DX,AL
        MOV    DX,C8279
        MOV    AL,00H
        OUT    DX,AL
        MOV    AL,2AH
        OUT    DX,AL
	    MOV    AL,90H
	    OUT    DX,AL
        MOV    AL,0D1H     ;清除
        OUT    DX,AL
        	
WAIT1:  IN     AL,DX       ;读8279状态字,判是否有键按下
        MOV    AH,AL
        AND    AL,80H
        JNZ    WAIT1
        MOV    AL,AH
        AND    AL,0FH
        CMP    AL,00H
        JE     WAIT1
        LEA    BX,STEP      ;取码 表头      
 RUN:   CALL   CHKKEY
        CALL   DISPLAY
        MOV    CX,08H
 LOOP3: MOV    DX,P8255C
        MOV    AL,[SI]
        OUT    DX,AL
        INC    SI
        CALL   DELAY
        LOOP   LOOP3
        JMP    RUN
        
CHKKEY  PROC   NEAR
 RDKEY: MOV    DX,C8279
        IN     AL,DX
        MOV    AH,AL
        AND    AL,80H
        CMP    AL,80H
        JE     RDKEY
        MOV    AL,AH
        AND    AL,0FH
        CMP    AL,00H
        JE     TORET
        MOV    AL,40H
        OUT    DX,AL
        MOV    DX,D8279
        IN     AL,DX
 CHK:   CMP    AL,0FH
        JE     QUIT         ;判是F键,退出     
        CMP    AL,0AH       ;判是否大于A键
        JNC    DIRE
        MOV    DELAYTIME,AL
        JMP    TORET
 DIRE:  CMP    AL,0BH
        JNE    NEXT
        MOV    DIRDSP,40H
        LEA    BX,STEP
        JMP    TORET
 NEXT:  CMP    AL,0CH
        JNE    TORET
        MOV    DIRDSP,46H
        LEA    BX,STEP
        ADD    BX,07H
 TORET: MOV    SI,BX
        RET
CHKKEY  ENDP

DELAY   PROC   NEAR
        PUSH   CX
        MOV    CX,0AH
        SUB    CL,DELAYTIME
  LOOP1:PUSH   CX
        MOV    CX,03FFH
  LOOP2:NOP
        LOOP   LOOP2
        POP    CX
        LOOP   LOOP1
        POP    CX
        RET
DELAY   ENDP

DISPLAY PROC   NEAR
        PUSH   BX
        MOV    DX,D8279
        MOV    AL,DELAYTIME
        LEA    BX,LED
        XLAT
        OUT    DX,AL
        MOV    AL,DIRDSP
        OUT    DX,AL
        MOV    CX,6
        LEA    BX,DSP
  LOOP4:MOV    AL,[BX]
        OUT    DX,AL
        INC    BX
        LOOP   LOOP4
        MOV    DX,C8279
        MOV    AL,0C2H
        OUT    DX,AL
        POP    BX
        RET
DISPLAY ENDP

QUIT:   MOV    DX,C8279
        MOV    AL,0D2H
        OUT    DX,AL
        JMP    $
        
LED     DB 3FH,06H,5BH,4FH,66H
        DB 6DH,7DH,07H,7FH,6FH
DSP     DB 5EH,79H,79H,73H,6DH,0EDH

DELAYTIME   DB  01H

STEP    DB  08H,0CH,04H,06H,02H
        DB  03H,01H,09H,01H,03H
        DB  02H,06H,04H,0CH,08H
        
DIRDSP  DB  40H

CODE    ENDS
        END START

⌨️ 快捷键说明

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