📄 10.asm
字号:
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
DATA SEGMENT
SU DB 00H
LEI DB 00H
SHIJIAN DW 0000H
DIANJI DB 80H
ZHUAN DB 00H
DATA ENDS
STACK SEGMENT STACK'STACK'
STT DB 100 DUP(?)
TOP EQU LENGTH STT
STACK ENDS
INTQ0 EQU INTREEUP0
INTQ1 EQU INTREEUP1
INTQ2 EQU INTREEUP2
INTQ3 EQU INTREEUP3
IOCONPT EQU 0FF2BH ;定义8255端口地址
IOAPT EQU 0FF28H
IOBPT EQU 0FF29H
IOCPT EQU 0FF2AH
TCONTRO EQU 0043H ;定义8253各端口地址
TCON0 EQU 0040H
TCON1 EQU 0041H
TCON2 EQU 0042H
INTPORT1 EQU 0060H ;定义8259各端口地址
INTPORT2 EQU 0061H
DAPORT EQU 0020H ;定义0832端口地址
ORG 10E0H
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,TOP
MOV DX,IOCONPT ;8255控制字
MOV AL,80H
OUT DX,AL
MOV DX,IOBPT ;程序开始灯全灭
MOV AL,00H
OUT DX,AL
MOV DX,DAPORT ;程序开始电机停止转动
MOV AL,80H
OUT DX,AL
MOV DX,TCONTRO ;8253控制字
MOV AL,37H ;0通道方波BCD
OUT DX,AL
MOV AL,0B7H ;2通道方波BCD
OUT DX,AL
MOV DX,TCON0 ;通道0初值10000
MOV AL,00H
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV DX,TCON2 ;通道2初值100
MOV AL,14H
OUT DX,AL
MOV AL,00H
OUT DX,AL
CLD
MOV DX,INTPORT1 ;初始化8259,ICW1
MOV AL,13H
OUT DX,AL
MOV DX,INTPORT2 ;ICW2
MOV AL,08H
OUT DX,AL
MOV AL,09H ;ICW4
OUT DX,AL
MOV AL,0F0H ;OCW1
OUT DX,AL
MOV AX,0H
MOV ES,AX
MOV DI,0020H ;写0号中断矢量
LEA AX,INTQ0
STOSW
MOV AX,SEG INTQ0
STOSW
MOV DI,0024H ;写1号中断矢量
LEA AX,INTQ1
STOSW
MOV AX,SEG INTQ1
STOSW
MOV DI,0028H ;写2号中断矢量
LEA AX,INTQ2
STOSW
MOV AX,SEG INTQ2
STOSW
MOV DI,002CH ;写3号中断矢量
LEA AX,INTQ3
STOSW
MOV AX,SEG INTQ3
STOSW
STI
WAITING: NOP
NOP
NOP
JMP WAITING
INTREEUP0: CLI
PUSH DX
PUSH AX
PUSH ES
CMP SU,00H
JE MAN
CMP SU,01H
JE ZHONG
KUAI: MOV SU,00H
CALL XIANSHI
MOV DIANJI, 0FFH
MOV AL,DIANJI
MOV DX,DAPORT
OUT DX,AL
MOV ZHUAN,0FFH
MOV SHIJIAN,0000H
JMP TUI0
MAN: MOV SU,01H
CALL XIANSHI
MOV DIANJI,0D0H
MOV AL,DIANJI
MOV DX,DAPORT
OUT DX,AL
MOV ZHUAN,0FFH
MOV SHIJIAN,0000H
JMP TUI0
ZHONG: MOV SU,10H
CALL XIANSHI
MOV DIANJI,0E0H
MOV AL,DIANJI
MOV DX,DAPORT
OUT DX,AL
MOV ZHUAN,0FFH
MOV SHIJIAN,0000H
JMP TUI0
TUI0: MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
POP ES
POP AX
POP DX
STI
IRET
INTREEUP1: CLI
PUSH DX
PUSH AX
PUSH ES
CMP LEI,00H
JE ZI
CMP LEI,01H
JE SHUI
ZHENG: MOV LEI,00H
CALL XIANSHI
MOV AL,DIANJI
MOV DX,DAPORT
OUT DX,AL
MOV ZHUAN,0FFH
MOV SHIJIAN,0000H
JMP TUI1
ZI: MOV LEI,01H
CALL XIANSHI
MOV AL,DIANJI
MOV DX,DAPORT
OUT DX,AL
MOV ZHUAN,0FFH
MOV SHIJIAN,0000H
JMP TUI1
SHUI: MOV LEI,10H
CALL XIANSHI
MOV AL,DIANJI
MOV DX,DAPORT
OUT DX,AL
MOV ZHUAN,0FFH
MOV SHIJIAN,0000H
JMP TUI1
TUI1: MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
POP ES
POP AX
POP DX
STI
IRET
INTREEUP2: CLI
PUSH DX
PUSH AX
PUSH ES
MOV AL,80H ;程序结束灯灭电机停
MOV DX,DAPORT
OUT DX,AL
MOV AL,00H
MOV DX,IOBPT
OUT DX,AL
MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
POP ES
POP AX
POP DX
STI
IRET
INTREEUP3: CLI
PUSH DX
PUSH AX
PUSH ES
INC SHIJIAN
CMP LEI,00H ;正常风则不变动
JE EOI
CMP LEI,01H
JE ZIRAN
SHUIMIAN: CMP SHIJIAN,0008H
JNE EOI
CMP ZHUAN,0FFH
JNE SHUI1
NOT ZHUAN ;8秒到转的变停
MOV AL,80H
MOV DX,DAPORT
OUT DX,AL
MOV SHIJIAN,0000H
JMP EOI
SHUI1: NOT ZHUAN ;8秒到停变转
MOV AL,DIANJI
MOV DX,DAPORT
OUT DX,AL
MOV SHIJIAN,0000H
JMP EOI
ZIRAN: CMP ZHUAN,0FFH
JE ZI1
CMP SHIJIAN,08H ;8秒到则开始转
JNE EOI
NOT ZHUAN
MOV AL,DIANJI
MOV DX,DAPORT
OUT DX,AL
MOV SHIJIAN,0000H
JMP EOI
ZI1: CMP SHIJIAN,0004H
JNE EOI
NOT ZHUAN ;4秒到则停止
MOV AL,80H
MOV DX,DAPORT
OUT DX,AL
MOV SHIJIAN,0000H
JMP EOI
EOI: MOV AL,20H ;复位中断服务寄存器
MOV DX,INTPORT1
OUT DX,AL
POP ES
POP AX
POP DX
STI
IRET
XIANSHI PROC NEAR ;LED灯显示子程序
CMP SU,00H
JE S1
CMP SU,01H
JE S2
CMP SU,10H
JE S3
S1: CMP LEI,00H
JE S11
CMP LEI,01H
JE S12
CMP LEI,10H
JE S13
S11: MOV DX,IOBPT ;3快正常
MOV AL,0CH
OUT DX,AL
JMP S
S12: MOV DX,IOBPT
MOV AL,14H ;6快自然
OUT DX,AL
JMP S
S13: MOV DX,IOBPT
MOV AL,24H ;9快睡眠
OUT DX,AL
JMP S
S2: CMP LEI,00H
JE S21
CMP LEI,01H
JE S22
CMP LEI,10H
JE S23
S21: MOV DX,IOBPT
MOV AL,09H ;1慢正常
OUT DX,AL
JMP S
S22: MOV DX,IOBPT
MOV AL,11H ;4慢自然
OUT DX,AL
JMP S
S23: MOV DX,IOBPT
MOV AL,21H ;7慢睡眠
OUT DX,AL
JMP S
S3: CMP LEI,00H
JE S31
CMP LEI,01H
JE S32
CMP LEI,10H
JE S33
S31: MOV DX,IOBPT
MOV AL,0AH ;2中正常
OUT DX,AL
JMP S
S32: MOV DX,IOBPT ;5中自然
MOV AL,12H
OUT DX,AL
JMP S
S33: MOV DX,IOBPT
MOV AL,22H ;8中睡眠
OUT DX,AL
JMP S
S: RET
XIANSHI ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -