📄 thso1.asm
字号:
CL EQU 22H
CH EQU 23H
FLAG EQU 30H
ORG 2006H ;HSO中断向量地址
DW HSO_INT
ORG 2080H
LD SP,#60H
DI ;关中断
CLRB INTPEN ;清中断挂号寄存器
ORB INTMAS,#08H ;允许HSO中断
LDB IOC0,#05H
LDB HSOCOM,#30H ;允许HSO.0触发负电平
;中断方式,启动HSO.0
ADD HSOTIM,TIMER1,#0030H
NOP
NOP
LDB HSOCOM,#31H ;允许HSO.1触发负电平
;中断方式,启动HSO.1
ADD HSOTIM,TIMER1,#0100H
NOP
NOP
LDB FLAG,IOS0 ;保存HSO当前状态
EI ;开中断
SJMP $
HSO_INT:PUSHF ;HSO中断子程序
LDB CL,IOS0 ;读当前HSO状态
LDB CH,CL
XORB CL,FLAG ;与原状态比较
LDB FLAG,CH
JBC CL,0,HSO1 ;HSO.0无跳变转HSO.1
JBS FLAG,0,LOW0
LDB HSOCOM,#30H ;允许HSO.0触发正电平
;中断方式
ADD HSOTIM,TIMER1,#800H
NOP
NOP
SJMP HSO1
LOW0:
LDB HSOCOM,#10H ;允许HSO.0触发负电平
;中断方式
ADD HSOTIM,TIMER1,#800H
NOP
NOP
HSO1: JBC CL,1,EXIT ;HSO.1无跳变转EXIT
JBS FLAG,1,LOW1
LDB HSOCOM,#31H ;允许HSO.1触发正电平
;中断方式
ADD HSOTIM,TIMER1,#800H
NOP
NOP
SJMP EXIT
LOW1:
LDB HSOCOM,#11H ;允许HSO.1触发负电平
;中断方式
ADD HSOTIM,TIMER1,#400H
NOP
NOP
EXIT: POPF
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -