background image

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