; 外部中断0初始化程序
; 低优先级电平触发方式
INT0initb: ;操作控制位
SETB EA
SETB EX0
RET
INT0init: ;操作字节
ORL IE, #81H
RET
; 低优先级电平触发方式单开
INT0inits: ;single open 单开
MOV IE, #81H
RET
; 高优先级电平触发方式
INT0initp: ;p 高优先级
;SETB EA
;SETB EX0
;SETB PX0
ORL IE, #81H
ORL IP, #01H
RET
; 高优先级电平触发方式单开
INT0initps: ;single open 单开
MOV IE, #81H
MOV IP, #01H
RET
; 低优先级下降沿触发方式
INT0initf: ; PLF 下降沿 failling edge
;SETB EA
;SETB EX0
;SETB IT0
ORL IE, #81H
ORL TCON, #01H
RET
; 低优先级下降沿触发方式单开
INT0initfs: ;single open 单开
MOV IE, #81H
MOV TCON, #01H
RET
; 高优先级下降沿触发方式
INT0initpf: ;p 高优先级
;SETB EA
;SETB EX0
;SETB PX0
;SETB IT0
ORL IE, #81H
ORL IP, #01H
ORL TCON, #01H
RET
; 高优先级下降沿触发方式单开
INT0initpfs: ;single open 单开
MOV IE, #81H
MOV IP, #01H
MOV TCON, #01H
RET
外部中断1初始化方法
; 外部中断1初始化程序
; 低优先级电平触发方式
INT1init:
;SETB EA
;SETB EX1
ORL IE, #84H
RET
; 低优先级电平触发方式单开
INT1inits: ;single open 单开
MOV IE, #84H
RET
; 高优先级电平触发方式
INT1initp: ;p 高优先级
;SETB EA
;SETB EX1
;SETB PX1
ORL IE, #84H
ORL IP, #04H
RET
; 高优先级电平触发方式单开
INT1initps: ;single open 单开
MOV IE, #84H
MOV IP, #04H
RET
; 低优先级下降沿触发方式
INT0initf: ; PLF 下降沿 failling edge
;SETB EA
;SETB EX1
;SETB IT1
ORL IE, #84H
ORL TCON, #04H
RET
; 低优先级下降沿触发方式单开
INT0initfs: ;single open 单开
MOV IE, #84H
MOV TCON, #04H
RET
; 高优先级下降沿触发方式
INT0initpf: ;p 高优先级
;SETB EA
;SETB EX1
;SETB PX1
;SETB IT1
ORL IE, #84H
ORL IP, #04H
ORL TCON, #04H
RET
; 高优先级下降沿触发方式单开
INT0initpfs: ;single open 单开
MOV IE, #84H
MOV IP, #04H
MOV TCON, #04H
RET
外部中断程序框架
;外部中断0入口地址
ORG 0003H
LJMP INT0PRO ;中断跳转使用LJMP
;外部中断1入口地址
ORG 0013H
LJMP INT1PRO ;中断跳转使用LJMP
;外部中断0程序
INT0PRO:
CLR EA ;保护现场
PUSH ACC
PUSH 02H ; 保护R2
PUSH PSW
;...
SETB EA
;... ;中断程序
CLR EA ;恢复现场
;...
POP PSW
POP 02H
POP ACC
SETB EA
RETI ;中断返回使用RETI
;外部中断0调用子程序
INT0PROs: ; subroutine 子程序
CLR EA ;保护现场
PUSH ACC
PUSH 02H ; 保护R2
PUSH PSW
;...
SETB EA
LCALL SRT0 ;调用子程序
CLR EA ;恢复现场
;...
POP PSW
POP 02H
POP ACC
SETB EA
RETI ;中断返回使用RETI
SRT0:
;外部中断1程序
INT1PRO:
CLR EA ;保护现场
PUSH ACC
PUSH 02H ; 保护R2
PUSH PSW
;...
SETB EA
;... ;中断程序
CLR EA ;恢复现场
;...
POP PSW
POP 02H
POP ACC
SETB EA
RETI ;中断返回使用RETI
;外部中断1调用子程序
INT1PROs: ; subroutine 子程序
CLR EA ;保护现场
PUSH ACC
PUSH 02H ; 保护R2
PUSH PSW
;...
SETB EA
LCALL SRT1 ;调用子程序
CLR EA ;恢复现场
;...
POP PSW
POP 02H
POP ACC
SETB EA
RETI ;中断返回使用RETI
SRT1:
示例
P3.2口脉冲输入计数
ORG 0000H
LCALL MAIN
;外部中断0入口地址
ORG 0003H
LJMP INT0PROs ;中断跳转使用LJMP
MAIN:
MOV R2, #0H ;R2 计数
LCALL INT0initf
MOV A, #14H ;用A和C演示保护、恢复现场
SETB C
SJMP $
; 初始化:低优先级下降沿触发方式
INT0initf: ; PLF 下降沿 failling edge
;SETB EA
;SETB EX0
;SETB IT0
ORL IE, #81H
ORL TCON, #01H
RET
;外部中断0
INT0PROs: ; subroutine 子程序
CLR EA ;保护现场
PUSH ACC
PUSH PSW
SETB EA
LCALL SRT0 ;调用中断子程序
CLR EA ;恢复现场
POP PSW
POP ACC
SETB EA
RETI
;中断程序
SRT0:
INC R2 ;R2计算脉冲数目
CLR C ;中断程序中修改A、C
MOV A, #0H
RET
END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix