> 文章列表 > 中断嵌套实验

中断嵌套实验

中断嵌套实验

使用汇编语言,要求:

外部中断1可以嵌套外部中断0

没有中断时,8个LED发光二极管以0.1s的速度闪烁。

有外部中断0时,8个LED发光二极管以0.1s的速度流水点亮。(中断子程序0)

有外部中断1时,会打断外部中断0,8个LED发光二极管会常亮10秒(中断子程序1)

允许外部中断0和外部中断1,外部中断触发方式设置(IT0,IT1),中断入口设置,设置中断优先级。

程序段: 

      org   0000hjmp   StartORG	0003HJMP	INT00ORG   0013HJMP   INT11ORG   0100H
Start:	MOV 	SP,#60HSETB	EA SETB	EX0SETB  EX1ClR   IT0CLR   IT1SETB  PX1CLR 	A  
Loop:	CPL  	A  MOV	P0,A  LCALL DELAY JMP  	LoopDELAY: MOV 	R6,#200
D1:      MOV 	R7,#248   DJNZ 	R7,$      DJNZ 	R6,D1RET ;----中断子程序0程序示例------
INT00:MOV 	R1,#9MOV	A,#0ffHLOOP1:		 MOV	P0,A   LCALL	DELAY		SETB	C RLC	A DJNZ 	R1,LOOP1RETI 
;----中断子程序1----
INT11:MOV A,#00HMov P0,AMOV R1,#9
LOOP1:		  LCALL	DELAY		DJNZ 	R1,LOOP1RETI

注释:

1.org:汇编起始地址命令

org伪指令规定程序存放的起始地址。如果不用org,则汇编得到的目标程序将从0000H地址开始。

例如:

ORG 2000H

Start:Mov A,#00H

即规定标号START代表从地址2000H开始存放程序。

2. 中断允许寄存器IE

 3.TCON寄存器:IT1,IT0选择外部中断请求是什么方式。

 4.流水灯点亮

INT00:MOV 	R1,#9MOV	A,#0ffHLOOP1:		 MOV	P0,A   LCALL	DELAY		SETB	C RLC	A DJNZ 	R1,LOOP1RETI 
;1111 1111
;1111 1110
;1111 1100

5.我不知道DELAY可以延时多久,所以我不知道R1应该置多少。

;----中断子程序1----
;需要常亮10秒
INT11:MOV A,#00HMov P0,A;全亮MOV 	R1,#9;循环10秒(这里R1该置多少?)
LOOP1:		  LCALL	DELAY		DJNZ 	R1,LOOP1RETI

6.关于外部中断1触发方式设置不同的方式,带来的影响?

IT1=0,电平触发方式

IT1=1,跳沿触发方式

???

学习这篇文章:

(2条消息) 电平触发和边沿触发的区别_下降沿触发_Pilgrim2017的博客-CSDN博客

 电平触发:高或低电平保持的时间内触发

边沿触发:由高到低或由低到高这一瞬间触发

在数字电平变化的电压上升沿或下降沿到一定阈值时就产生触发,即边沿触发。

当电压达到数字电平的高或低电压一段时间后(一般是最小脉冲宽度的三分之一),才产生触发是电平触发。

边沿触发的话,电平保持多久都只产生一次。

电平触发的话,只要一直保持对应的电平,就会不断触发。

比如:按下开关,边沿触发的话,应该只会触发一次中断。

而电平触发的话,会不断响应。(个人理解,不知道对不对)