外部中断

外部中断

硬件控制

外部中断矢量
中断源名称中断源地址RAM中断矢量ROM
INT0P3.2 (0B2H)0003H
INT1P3.3 (0B3H)0013H
外部中断控制寄存器
地址A8HAFHAAHA8H
名称IEEAEX1EX0
地址B8HBAHB8H
名称IPPX1PX0
地址88H8BH8AH89H88H
名称TCONIE1IT1IE0IT0
外部中断控制位
位地址名称作用
AFHEA总中断允许位。EA=1,开中总中断。即允许cpu中断。
88HIT0外部中断0触发方式选择位。IT0=1,电平触发,IT0=0,下降沿触发
8AHIT1外部中断1触发方式选择位。IT1=1,电平触发,IT1=0,下降沿触发
89HIE0外部中断0中断请求标志位。由中断源置1,在cpu处理中断后自动清零。
8BHIE1外部中断1中断请求标志位。由中断源置1,在cpu处理中断后自动清零。
A8HEX0外部中断0允许位。EX0=1,开中断,即允许cpu处理外部中断0
AAHEX1外部中断1允许位。EX1=1,开中断,即允许cpu处理外部中断1
B8HPX0外部中断0优先级选择位,PX0=1,高优先级。
BAHPX1外部中断1优先级选择位,PX1=1,高优先级。

软件控制

外部中断0初始化方法
; 外部中断0初始化程序
;谨慎使用低电平触发方式,cpu清零IE失效,IE只由中断源电平决定。
; 低优先级电平触发方式
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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值