📄 23_stepm.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 + -