图7 连续转动单元子程序框图
(6)8253和8255初始化子程序、菜单显示子程序请参考程序清单。 【实验程序】
DATA SEGMENT IRQ EQU 0DH IMR1 EQU 0DFH IMR2 EQU 20H PA55 EQU 280H PC55 EQU 282H CTL55 EQU 283H P0_53 EQU 290H CTL53 EQU 293H INTA0 EQU 20H INTA1 EQU 21H
MES0 DB 0DH,0AH,'***** STEPPING MOTOR CONTROL SYSTEM ! *****',0DH,0AH,0DH,0AH DB 'PRESS 1 TO SPEED SET!',0DH,0AH DB 'PRESS 2 TO DIRECTION SET!' ,0DH,0AH DB 'PRESS 3 TO TURN REQUIRED STEPS!' ,0DH,0AH DB 'PRESS 4 TO START RUNNING!',0DH,0AH DB 'PRESS 5 TO EXIT!',0DH,0AH,'$'
MES1 DB 0DH,0AH,'***** SPEED SET *****',0DH,0AH,0DH,0AH DB 'PRESS A FOR 0.05 R/S !',0DH,0AH DB 'PRESS B FOR 0.15 R/S !',0DH,0AH DB 'PRESS C FOR 0.25 R/S !',0DH,0AH DB 'PRESS D FOR 0.75 R/S !',0DH,0AH DB 'PRESS E FOR 1.25 R/S !',0DH,0AH DB 'PRESS F FOR 3.75 R/S !',0DH,0AH DB 'PRESS G FOR 6.25 R/S !',0DH,0AH DB 'PRESS H FOR 18.75 R/S !',0DH,0AH DB 'PRESS ESC TO CANCEL !',0DH,0AH,'$'
MES2 DB 0DH,0AH,'***** DIRECTION SET *****',0DH,0AH,0DH,0AH DB 'PRESS 1 TO RIGHT !', 0DH,0AH
10
DB 'PRESS 0 TO LEFT !',0DH,0AH,'$'
MES3 DB 0DH,0AH,'***** STEPS(<1000) SET *****',0DH,0AH,0DH,0AH DB 'PRESS ESC TO CANCEL !',0DH,0AH DB 'PLEASE INPUT STEPS:','$'
MES4 DB 0DH,0AH, 'RUNNING .....',0DH,0AH
DB 'PRESS ESC TO STOP!',0DH,0AH,'$' INTSEG DW ? INTOFF DW ? INTIMR DB ? FLAG1 DB 0 FLAG0 DB 0
NUM DB 11001100B
CNTFF DW 0B71BH,3D09H,249FH,0C35H,753H,271H,177H,7DH DATA ENDS
STACK SEGMENT PARA STACK 'STACK' DB 256 DUP(?) STACK ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START:
MOV AX,DATA MOV DS,AX MOV DX,CTL53 MOV AL,00110110B OUT DX,AL MOV DX,P0_53 MOV AL,1BH OUT DX,AL MOV AL,0B7H OUT DX,AL MOV DX,CTL55 MOV AL,10000000B OUT DX,AL MOV DX,PA55 MOV AL,0 OUT DX,AL MOV AL,11001100B MOV DX,PC55 OUT DX,AL CLI
MOV AH,35H MOV AL,IRQ INT 21H MOV AX,ES
11
MOV INTSEG,AX MOV INTOFF,BX PUSH DS
MOV AX,SEG INTPROC MOV DS,AX LEA DX,INTPROC MOV AH,25H MOV AL,IRQ INT 21H
MOV IN MOV AND OUT POP STI MAIN:
LEA MOV INT LP0:
MOV INT CMP JE CMP JE CMP JE CMP JE CMP JE JMP LP1:
CALL JMP LP2:
CALL JMP LP3:
CALL JMP
DX,INTA1 AL,DX INTIMR,AL AL,IMR1 DX,AL DS DX,MES0 AH,09H 21H AH,8 21H AL,'1' LP1 AL,'2' LP2 AL,'3' LP3 AL,'4' LP4 AL,'5' EXIT LP0 AA MAIN BB MAIN CC MAIN
12
LP4:
CALL DD1 JMP MAIN EXIT: CLI
MOV AL,INTIMR MOV DX,INTA1 OUT DX,AL MOV DX,INTOFF MOV AX,INTSEG MOV DS,AX MOV AH,25H MOV AL,IRQ INT 21H STI
MOV AH,4CH INT 21H INTPROC PROC PUSH AX PUSH DS PUSH DX PUSH CX STI
MOV AX,DATA MOV DS,AX CMP FLAG1,0 JE KK ROR NUM,1 JMP YY KK:
ROL NUM,1 YY: MOV AL,NUM AND AL,00001111B MOV DX,PC55 OUT DX,AL NOT FLAG0 ;INC FLAG0
MOV DX,INTA0 MOV AL,20H OUT DX,AL POP CX POP DX POP DS POP AX
13
IRET INTPROC ENDP AA PROC PUSH AX PUSH BX PUSH DX PUSH DI MOV AH,9 LEA DX,MES1 INT MOV INT CMP JZ SUB MOV ADD MOV MOV MOV MOV OUT XCHG OUT KK0:
POP POP POP POP RET AA ENDP BB PROC
PUSH PUSH MOV LEA INT MOV INT CMP JZ SUB MOV XX: POP
21H AH,8 21H AL,1BH KK0 AL,'A' AH,0 AX,AX DI,AX
BX,OFFSET CNTFF AX,WORD PTR [BX+DI] DX,P0_53 DX,AL AH,AL DX,AL DI DX BX AX AX DX AH,9 DX,MES2 21H AH,8 21H AL,1BH XX AL,'0' FLAG1,AL DX
14