📄 bjdj.asm
字号:
;FILENAME: BJDJ.ASM
;内容: 步进电机控制
P55A EQU 88H ;8255A口输出
P55C EQU 28AH ;8255C口输入
P55CTL EQU 28BH ;8255控制口
DATA SEGMENT
BUF DB 0
MES DB 'K0-K6 ARE SPEED CONTROL', 0AH, 0DH
DB 'K6 IS THE LOWEST SPEED', 0AH, 0DH
DB 'K0 IS THE HIGHEST SPEED', 0AH, 0DH
DB 'K7 IS THE DIRECTION CONTROL', 0AH, 0DH, '$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, CS
MOV DS, AX
MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET MES
MOV AH, 09
INT 21H
MOV DX, P55CTL
MOV AL, 8BH
OUT DX, AL ;8255C输入, A输出
MOV BUF, 33H
OUT1: MOV AL, BUF
MOV DX, P55A
OUT DX, AL
PUSH DX
MOV AH, 06H
MOV DL, 0FFH
INT 21H ;有无键按下
POP DX
JE IN1
MOV AH, 4CH
INT 21H
IN1: MOV DX, P55C
IN AL,DX ;读开关状态
TEST AL, 01H
JNZ K0
TEST AL, 02H
JNZ K1
TEST AL, 04H
JNZ K2
TEST AL, 08H
JNZ K3
TEST AL, 10H
JNZ K4
TEST AL, 20H
JNZ K5
TEST AL, 40H
JNZ K6
STOP: MOV DX, P55A
MOV AL, 0FFH
JMP OUT1
K0: MOV BL, 10H
SAM: TEST AL, 80H ;K7是否为1
JZ ZX0
JMP NX0
K1: MOV BL, 18H
JMP SAM
K2: MOV BL, 20H
JMP SAM
K3: MOV BL, 40H
JMP SAM
K4: MOV BL, 80H
JMP SAM
K5: MOV BL, 0C0H
JMP SAM
K6: MOV BL, 0FFH
JMP SAM
ZX0: CALL DELAY
MOV AL, BUF
ROR AL, 1 循环右移
MOV BUF, AL
JMP OUT1
NX0: CALL DELAY
MOV AL, BUF
ROL AL, 1 ;循环左移
MOV BUF, AL
JMP OUT1
DELAY PROC NEAR
DELAY1:
MOV CX, 05A4H
DELAY2:
LOOP DELAY2
DEC BL
JNZ DELAY1
RET
DELAY ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -