KID_FL7 EQU 006H
; |
KID_FL8 EQU 007H
;八楼
KID_OPD EQU 008H
;开门
KID_STD EQU 009H
;关门
KID_ERR EQU 00AH
;报警
KID_CLR EQU 00BH
;清除
DISPDLY EQU 7FFFH;047FH
DATA
ENDS
STACK
SEGMENT STACK 'STACK'
DB 100 DUP(?)
STACK
ENDS
CODE
SEGMENT
'CODE'
;代码段
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOVAX,DATA
MOVDS,AX
;初始化段址寄存器
CALL
INIT
;调用初始化子程序
RING:
NOP
;循环介入点
CALL
MTRCTL ;调用电机控制子程序
CALL
MTRSTP ;调用电机走拍子程序
CALL
DISP
;调用显示子程序
CALL
LDISP
;调用 LED 子程序
CALL
KBDCHK ;调用键盘检测子程序
;判断-
循环 跳转至 RING 否则继续
MOV AH,01H
INT 16H
JZ
RING
MOVAH,4CH
INT 21H
;程序结束,返回 OS
;子程序定义区
INIT PROC NEAR ;
初始化子程序 //相关变量置零 (定义时已完成初始化)
MOVDX,P1CTL
;初始化 8255(1)
(方式 0: A 输入,B&C 输出)
MOVAL,80H
OUT DX,AL
MOVAL,0
MOVDX,PC1
OUT DX,AL
MOVDX,P2CTL
;初始化 8255(2)(方式 0: A&B
输出 | A&B 清零)
MOVAL,80H
OUT DX,AL
MOVAL,0
MOVDX,PA2
OUT DX,AL
MOVDX,PB2
OUT DX,AL
MOVBX,OFFSET DCACHE;
若已经走完 更新显示缓存为 No X(0DH,0EH,0FH,X)
MOVBYTE PTR [BX],0DH
INC BX
MOVBYTE PTR [BX],0EH