发布时间 : 星期四 文章8086改造机床进给系统更新完毕开始阅读e404855ce518964bcf847cfd
MOV SI, 60H MOV [SI], BX
MOV [SI+2], AX
MOV AX, DATA MOV DS, AX
MOV DX, 2003H
MOV AL, 80H OUT DX, AL MOV DX, 2800H MOV AL, 13H OUT DX, AL MOV DX, 2801H MOV AL, 60H OUT DX, AL MOV AL, 01H
OUT DX, AL MOV AL, 0E0H OUT DX, AL MOV DX, 2800H MOV AL, 0A0H OUT DX, AL STI
CALL CB
HTL
2>直线插补子程序
CB
PROC
PUSH AX PUSH BX
;中断类型码送SI
;将中断偏移量送到[SI][SI+1]中
;将中断段基址送到[SI][SI+1]中
;恢复DS
;初始化8255A
;定义8259A ICW1
;定义8259A ICW2
;定义8259A ICW4
;定义8259A OCW1
;定义8259A OCW2
;中断打开
;调用插补程序
PUSH CX PUSH DX PUSHF
;保护现场 MOV AH, 0H
SAHF MOV AX, M MOV BX, M+2
SUB BX, AX JGE B1
NEG BX B1: MOV AX, M+1
MOV DX,
M+3
SUB DX, AX JGE B2
NEG DX
B2: ADD DX, BX MOV CX, DX MOV AX,
F
XH: CMP AX, 00H JC
B4
MOV 5, 0H
CMP M+2, M
JC B3
OR
5, 00H
B3: OR S,
00H CALL HF
SUB
AX,
DX CALL TIME
JME
B6
B4: MOV 5, 02H
;标志位清零
;取起点终点的X坐标
;取终点相对于起点横坐标的绝对值Xe
;取起点,终点的Z坐标
;取终点相对于起点的Z坐标的绝对值Ye
;计算总进给步数
;将偏差值送AX ;判断向哪个方向走
;跳向Z向
;写X电机状态字(X/Z 正/反)
;调用环分子程序,X电机走一步
;计算偏差值
;调用延时程序
;写Z电机状态字(X/Z,正/反)
CMP M+3,
B5
M+1
JC OR B5: OR
S, S,
00H 01H CALL HF
ADD
AX,
BX CALL TIME B6: DEC CX
LOOP
XH POPF POP DX POP CX POP BX POP AX
RET CB
ENDP
3>三相六拍环分子程序 HF
PROC
PUSH AX PUSH BX PUSH
DX
PUSHF
MOV BL, S AND BL, 01H
CMP BL, 0H
JNZ
FR
MOV BL, S
AND BL, 02H CMP BL, 0H
JNZ
ZPZ
;调用换分子程序,Z电机走一步 ;计算偏差值
;调用延时子程序
;总步数减1
;出栈,恢复现场
;压栈;保护现场
;送电机操作字给BL ;判断正反转
;调转至反转
;判断XZ电机
;调转至Z电机正转
XDZ:CMP C, JNZ LEA
L SI,
0H ;判断是否为第一次跳动
XT 01H
;送通电代码首地址给SI
L1: MOV C, MOV BX, MOV DX, XT+5 2000H
;通过8255A给电机送通电代码
MOV AL, [SI] OUT DX,
AL
CMP [SI], BX
JZ L2 INC SI JMP
L9
L2: LEA SI, XT
JMP
L9
ZDZ:CMP D, 0H LEA
DI,
ZT
L3: MOV D, 01H
MOV BX, ZT+5 MOV DX, 2000H
; MOV AL, [DI] OUT DX,
AL
CMP [DI], BX
JZ L4 INC DI JMP
L9
L4: LEA DZ, ZT
JMP
L9
FR: AND BL, 02H CMP BL, 0H
JNE
ZDE
;判断通电代码是否用完
;指针自增1
;判断是否为第一次转动 ;送通电代码首地址给DI
通过8255A送通电代码给电机
;判断通电代码是否用完
;指针自增1
;判断用哪个电机