thso1.asm

来自「MCS96的源程序。用来给96单片机使用」· 汇编 代码 · 共 61 行

ASM
61
字号
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 + =
减小字号Ctrl + -
显示快捷键?