微机总原理图.docx
《微机总原理图.docx》由会员分享,可在线阅读,更多相关《微机总原理图.docx(16页珍藏版)》请在冰豆网上搜索。
微机总原理图
;8253端口地址
IOCON8253EQU0136H
IO08253EQU0130H
IO28253EQU0132H
;8255端口地址
IOCON8255EQU013EH
IOA8255EQU0138H
IOB8255EQU013AH
IOC8255EQU013CH
DATASEGMENT
ORG1000H
FLAGLDB?
FLAGTDB?
FLAGDDB?
LEIXINGDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETFLAGL
MOVBL,0
MOV[SI],BL
MOVDI,OFFSETFLAGT
MOVBL,0
MOV[DI],BL
MOVFLAGD,BL
;8255初始化
MOVDX,IOCON8255
MOVAL,91H
OUTDX,AL
;8253通道0初始化
LING8253:
MOVAL,00110111B
MOVDX,IOCON8253
OUTDX,AL
MOVAL,00H
MOVDX,IO08253
OUTDX,AL
MOVAL,04H
OUTDX,AL
;判断是否是风速按键按下
QD:
MOVDX,IOC8255
INAL,DX
ANDAL,0FH
CMPAL,1
JECHECK_R
JMPQD
CHECK_R:
CALLCHECK
JMPQD
MAINENDP
CHECKPROCNEAR
MOVDX,IOC8255
INAL,DX
ANDAL,0FH
CMPAL,1
JESPEED_R
JMPCHECK
RET
ENDP
SPEED_R:
CALLSPEED
JMPCHECK_R
STYPE_R:
CALLSTYPE
JMPCHECK_R
;风速控制子程序
SPEEDPROCNEAR
PUSHAX
COM:
CMPBYTEPTR[SI],0
JEL0
CMPBYTEPTR[SI],1
JEL1
CMPBYTEPTR[SI],2
JEL2
L0:
MOVDX,IOB8255
MOVAL,01H
OUTDX,AL
;L0亮
LL0:
LOOPL0
MOVBX,[SI]
ADDBX,1
MOV[SI],BX
RUN_1:
MOV[DI],0FFFFH
CALLRUN;电机弱转
CHECK_0:
MOVDX,IOC8255
INAL,DX
ANDAL,0FH
CMPAL,1
JECOM
CMPAL,2
JESTYPE_R
CMPAL,4
JEZT
JMPRUN_1
ZT:
JMPTING
L1:
MOVDX,IOB8255
MOVAL,02H;L1亮
OUTDX,AL
LL1:
LOOPL1
MOVBX,[SI]
ADDBX,1
MOV[SI],BX
RUN_2:
MOV[DI],0AFFFH
CALLRUN;电机中转
CHECK_1:
MOVDX,IOC8255
INAL,DX
ANDAL,0FH
CMPAL,1
JECOM
CMPAL,2
JESTYPE_R
CMPAL,4
JEZT
JMPRUN_2
L2:
MOVDX,IOB8255
MOVAL,04H
;L2亮
OUTDX,AL
LL2:
LOOPLL2
MOVBL,0
MOV[DI],BL
RUN_3:
MOV[DI],05FFFH
CALLRUN;电机强转
CHECK_2:
MOVDX,IOC8255
INAL,DX
ANDAL,0FH
CMPAL,1
JEZC
CMPAL,2
JEZS
CMPAL,4
JEZT
JMPRUN_3
ZC:
JMPCOM
ZS:
JMPSTYPE_R
POPAX
RET
SPEEDENDP
STYPEPROCNEAR
;类型控制子程序
PUSHAX
PAR:
CMPFLAGD,0
JEL3
CMPFLAGD,1
JEL4
CMPFLAGD,2
JEZF
ZF:
JMPL5
L3:
MOVLEIXING,0
MOVDX,IOB8255
MOVAL,08H
OUTDX,AL;L3亮
LL3:
LOOPL3
MOVAL,FLAGD
ADDAL,1
MOVFLAGD,AL
RUN_Z:
CMPBYTEPTR[SI],0
JEYRZ;正常风
YRZ:
MOV[DI],0FFFFH
CMPBYTEPTR[SI],1
JEYZZ
YZZ:
MOV[DI],0AFFFH
CMPBYTEPTR[SI],2
JEYQZ
YQZ:
MOV[DI],05FFFH
CALLRUN
CHECK_3:
MOVDX,IOC8255
INAL,DX
ANDAL,0FH
CMPAL,2
JEL4
CMPAL,1
JEZ1
CMPAL,4
JEZB
JMPRUN_Z
Z1:
JMPSPEED_R
ZB:
JMPZT
L4:
MOVDX,IOB8255
MOVAL,10H
;L4亮
OUTDX,AL
LL4:
LOOPLL4
MOVAL,FLAGD
ADDAL,1
MOVFLAGD,AL
MOVAL,10110111B
;睡眠通道2初始化
MOVDX,IOCON8253
OUTDX,AL
MOVAL,04H
MOVDX,IO28253
OUTDX,AL
MOVAL,00H
OUTDX,AL
RUN_S:
MOVDX,IOA8255
INAL,DX
ANDAL,1
CMPAL,1
JERUN_R
JMPCHECK_N
UN_R:
MOV[DI],0AFFFH
CALLRUN
MOVDX,IOA8255
INAL,DX
CMPAL,1
JERUN_R
JMPCHECK_N
CHECK_N:
MOVDX,IOC8255
;检查有无新键
INAL,DX
ANDAL,0FH
CMPAL,2
JEL5
CMPAL,1
JEZ4
CMPAL,4
JEZU
JMPRUN_S
ZU:
JMPZT
Z4:
JMPSPEED_R
L5:
MOVDX,IOB8255
;自然风
MOVAL,20H
;L5亮
OUTDX,AL
LL5:
LOOPLL5
MOVAL,FLAGD
MOVAL,0
MOVFLAGD,AL
MOVAL,10110101B
;自然通道2初始化
MOVDX,IOCON8253
OUTDX,AL
MOVAL,03H
MOVDX,IO28253
OUTDX,AL
MOVAL,00H
OUTDX,AL
RUN_I:
MOVDX,IOA8255
INAL,DX
ANDAL,1
CMPAL,1
JERUN_R2
JMPCHECK_N2
RUN_R2:
MOV[DI],0AFFFH
CALLRUN
MOVDX,IOA8255
INAL,DX
CMPAL,1
JERUN_R2
JMPCHECK_N2
CHECK_N2:
MOVDX,IOC8255
;检查有无新键
INAL,DX
ANDAL,0FH
CMPAL,2
JEZ3
CMPAL,1
JEZ4
CMPAL,4
JEZD
JMPRUN_I
Z3:
JMPL3
ZD:
JMPZS
POPAX
RET
STYPEENDP
;电机转动程序
RUNPROCNEAR
PUSHCX
MOVDX,IOC8255
MOVAL,30H
OUTDX,AL
CALLDELAY
MOVAL,60H
OUTDX,AL
CALLDELAY
MOVAL,0C0H
OUTDX,AL
CALLDELAY
MOVAL,90H
OUTDX,AL
CALLDELAY
JMPLL
DELAY:
MOVCX,[DI]
DALA:
LOOPDALA
RET
LL:
POPCX
RET
RUNENDP
;判断停止键是否按下
PCHECK:
MOVDX,IOC8255
INAL,DX
ANDAL,0FH
CMPAL,4
JETING
TING:
MOVDX,IOB8255
MOVAX,0
OUTDX,AX
CALLRUNT
JMPSTART
RUNTPROCNEAR
;电机停止子程序
PUSHCX
PUSHDI
MOVDX,IOC8255
MOVAL,00H
OUTDX,AL
CALLDELAY
MOVAL,0H
OUTDX,AL
CALLDELAY
MOVAL,00H
OUTDX,AL
CALLDELAY
MOVAL,0H
OUTDX,AL
CALLDELAY
JMPLLP
DELAYP:
MOVCX,[DI]
DALAP:
LOOPDALAP
RET
LLP:
POPDI
POPCX
RET
RUNTENDP
CODESENDS
ENDSTART