×
单片机 > 单片机程序设计 > 详情

汇编语言实现中断嵌套的典型程序

发布时间:2020-05-27 发布时间:
|
设计一个基于单片机的声光报警电路。要求:利用按键触发外部中断0,蜂鸣器发音,发光二极管点亮,声光报警延迟1S后停止(利用定时器TO延时)。蜂鸣器由P1.2控制,发光二极管由P2.0控制。设计硬件电路并给出其完整的程序。

/*典型错误一*/
/* ORG 0000H
 AJMP MAIN
 ORG 0003H
 AJMP INTE0
 ORG 000BH
 AJMP INT120
 ORG 0030H
MAIN:   MOV R0,#00H
 SETB IT0
 SETB EX0
 SETB EA
 MOV TMOD,#01H
 MOV TH0,#4CH
 MOV TL0,#00H
 SETB ET0
HERE:   AJMP HERE
INTE0:  CLR P1.2
 CLR P2.0
 CLR EX0;可有可无
 SETB TR0
 RETI
        ORG 0080H
INT120: MOV TH0,#4CH
 MOV TL0,#00H
 INC R0
HERE0: CJNE R0,#14H,HERE0;典型错误1
;此程序已经在定时器T0中断内部,利用
;此程序等待T0中断,中断无从进入。所以
;程序在此行成死循环,即停在此处。声光
;报警启动但停不下来。
 SETB P1.2
 SETB P2.0
        CLR ET0
 RETI
        END
*/
/*典型错误二*/
/* ORG 0000H
 AJMP MAIN
 ORG 0003H
 AJMP INTE0
 ORG 000BH
 AJMP INT120
 ORG 0030H
MAIN:   MOV R0,#00H
 SETB IT0
 SETB EX0
 SETB EA
 MOV TMOD,#01H
 MOV TH0,#4CH
 MOV TL0,#00H
 SETB ET0
HERE:   AJMP HERE
INTE0:  CLR P1.2
 CLR P2.0
 CLR EX0;可有可无
 SETB TR0
 RETI
        ORG 0080H
INT120: MOV TH0,#4CH
 MOV TL0,#00H
 INC R0
 CJNE R0,#14H,HERE;典型错误2
;此程序已经在定时器T0中断内部,利用
;此程序等待T0中断,中断无从进入。所以
;程序在此行成死循环,即停在此处。声光
;报警启动但停不下来。和上例一样。
 SETB P1.2
 SETB P2.0
        CLR ET0
 RETI
        END
*/
/*正确答案*/
        ORG 0000H
 AJMP MAIN
 ORG 0003H
 AJMP INTEX0
 ORG  000BH
 AJMP INTT0
        ORG  0030H
MAIN: MOV R0,#00H
 SETB EX0
 SETB IT0
 MOV TMOD,#01H
 MOV TH0,#4CH
 MOV TL0,#00H
        SETB EA
 SETB ET0
HERE: CJNE R0,#14H,HERE
 MOV R0,#00H
 SETB P2.0
 SETB P1.2
        CLR TR0
 AJMP HERE
INTEX0: SETB TR0
 CLR P2.0
 CLR P1.2
        RETI
INTT0:  MOV TH0,#4CH
 MOV TL0,#00H
 INC R0
        RETI
        END  

关键字:汇编语言  中断嵌套 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式