精品
ORG 0200H
1.主程序
MAIN:MOV R0,#00H
MOV IE,#81H ;CPU开放中断,INT0允许中断 SETB IT0 ;外部中断为边沿触发方式 MOV SP,#30H ;指针入口地址 SETB P3.0 ; 红灯不亮 CLR P3.1 ; 喇叭不响
MOV P1,#0FFH ;使P1口全部置1 MOV P2,#00H ;P2口清零 MOV A,#3FH
MOV P2,A;数码管初始化显示0 CLR P1.2 ;绿灯亮
JCE: JNB P1.0,FD ;检测外部触发信号 FD: ACALL DELAY ;延时消抖
JNB P1.0,BAOJING ;再次检测外部触发信号,若有就转入报警子程序 AJMP JCE
2.消抖延时子程序 DELAY: MOV R1,#0AAH LOD2: MOV R2,#0BBH LOD1: NOP
DJNZ R2,LOD1 DJNZ R1,LOD2 RET
3.声光报警子程序
BAOJING:SETB P1.2 ;开始声光报警使正常工作指示灯熄灭
MOV A,#00H INC R0
CJNE R0,#10,LOP MOV R0,#00H
LOP: MOV A,R0
MOV DPTR,#TAB
MOVC A,@A+DPTR;查段码表
感谢下载载
精品
MOV P2,A;送P2口显示
TAB: DB 3FH,06H; 数码管段码表
DB 5BH,4FH DB 66H,6DH DB 7DH,07H DB 7FH,6FH
MOV 50H,#14H ;1S循环次数 JNB P1.3,L7 JNB P1.4,L8
L7: MOV 51H,#05H
AJMP L9
L8: MOV 51H,#0AH;10秒循环次数
L9: MOV TMOD,#01H ;定时器T0,工作方式1
MOV TL0,#0B0H ;置50ms定时初值 MOV TH0,#3CH SETB TR0 ;启动定时器T0
L2: JBC TF0,L1 ;查询记数溢出
SJMP L2
L1: CPL P3.0 ; 红灯亮
CPL P3.1 ;喇叭响 MOV TL0 ,#0B0H MOV TH0, #3CH JNB P3.2,L10 DJNZ 50H,L2 CPL P3.0 CPL P3.1 MOV 50H,#14H
DJNZ 51H,L2 ;未到10S继续循环 CLR P1.2 ;报警结束,正常工作绿指示灯亮
L10: SETB P3.0 ;10s到关闭报警
CLR P3.1 ; 关喇叭 LJMP JCE ;循环,继续工作
4.外部中断DINT0服务程序
感谢下载载
精品
DINT0: CLR EX0 ;外部中断0服务程序开始,屏蔽外部中断
PUSH PSW PUSH ACC SETB P3.0 CLR P3.1
CLR P1.2 ;使报警结束,绿指示灯亮 POP ACC POP PSW
SETB EX0 ;开放外部中断0 RETI;中断返回 END
感谢下载载
精品
感谢下载!
欢迎您的下载,资料仅供参考
感谢下载载