首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

设计一个基于单片机的声光报警电路。要求:利用按键触发外部中断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
返回列表