梯形,即是三角+方波。简单。
特点在于,没什么特点
STACK1 SEGMENT STACK
DB 128 DUP(?)
STACK1 ENDS
DATA SEGMENT
SHIZHONG DB 127
SHIZHONG1 DB 63
GBZ DB 0F0H
DBZ DB 1H
BIAOZHI DB 0
BIANLIANG DB 0
BIANLIANG1 DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
;CLI
MOV DX,DATA
MOV DS,DX
MOV DX,0
MOV ES,DX
;++
MOV SI,003CH
MOV AX,OFFSET IRQ7
MOV ES:[SI],AX
MOV SI,003EH
MOV AX,SEG IRQ7
MOV ES:[SI],AX
; 中断服务子程序装入结束
;8259初始化 ++
IN AL,21H
AND AL,01111111B
OUT 21H,AL ;开0号中断
;8259初始化完毕
;8253初始化 ++
MOV AL,10110101B ;2号通道先低后高方式2 BCD进制计数
OUT 43H,AL
MOV AL,90H ; 低字节
OUT 42H,AL
MOV AL,11H ; 高字节
OUT 42H,AL
;out 1 出1ms
; 8253初始化结束
MOV BX,0
;=================================== 主程序
JJ:
STI
JMP JJ
;[=================================== 主程序 结束
IRQ7: PUSH AX
PUSH BX
PUSH CX
MOV AL,0
CMP BIAOZHI,AL ;0代表低 1代表中间 2代表下落
JE DIDIANPING
MOV AL,1
CMP BIAOZHI,AL
JE ZHONGJIAN
MOV AL,2
CMP BIAOZHI,AL
JE XIALUO
DIDIANPING:
MOV AL,BIANLIANG
INC AL
MOV BIANLIANG, AL
MOV BL,SHIZHONG1
CMP BIANLIANG,BL
JNG NICKD
MOV AL,1
MOV BL,0
MOV BIANLIANG,BL
MOV BIAOZHI,AL ;改变标志为0
JMP EOI
NICKD:
MOV AL,BIANLIANG1
INC AL
INC AL
; INC AL
INC AL
MOV BIANLIANG1,AL
OUT 00H,AL
JMP EOI
;===========================================
ZHONGJIAN: MOV AL,BIANLIANG
INC AL
MOV BIANLIANG, AL
MOV BL,SHIZHONG1
CMP BIANLIANG,BL
JNG NICKZ
MOV AL,2
MOV BL,0
MOV BIANLIANG,BL
MOV BIAOZHI,AL ;改变标志为0
JMP EOI
NICKZ:
MOV AL,BIANLIANG1
OUT 00H,AL
JMP EOI
;===========================================
XIALUO: MOV AL,BIANLIANG
INC AL
MOV BIANLIANG, AL
MOV BL,SHIZHONG1
CMP BIANLIANG,BL
JNG NICKG
MOV AL,0
MOV BIANLIANG,AL
MOV BIAOZHI,AL ;改变标志为0
JMP EOI
NICKG:
MOV AL,BIANLIANG1
DEC AL
; DEC AL
DEC AL
DEC AL
MOV BIANLIANG1,AL
OUT 00H,AL
JMP EOI
EOI: MOV AL,20H
OUT 20H,AL
POP CX
POP BX
POP AX
IRET
CODE ENDS
END START
【作者: St.Nicholas.Von.Lee】【访问统计:】【2007年01月8日 星期一 10:19】【注册】【打印】
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=6025960