ORG 0000H
LJMP MAIN
ORG 0003H
LJMP PINT0
ORG 0200H
MAIN: 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口清零
CLR P1.2
LP: JNB P1.0,LA ;监测输入信号,是否有输入信号
LA: ACALL DELAY ;延时消抖
JNB P1.0,ALARM ;再次监测输入信号,若有输入信号转入报警子程序
AJMP LP
DELAY:MOV R1,0AAH
LD2:MOV R2,0BBH
LD1:NOP
DJNZ R2,LD1
DJNZ R1,LD2
RET
ALARM:SETB P1.2 ;开始报警使运行正常绿指示灯熄灭,红灯和声报警启动
CPL P3.0
CPL P3.1
;10S钟定时:
MOV 51H,#14H ;10S循环次数
MOV TMOD,#01H ;定时器T0定时 方式1
MOV TL0,#0B0H ;置50ms定时初值
MOV TH0,#3CH
SETB TR0 ;启动T0
L2:JBC TF0,L1 ;查询记数溢出
SJMP L2
L1:MOV TL0 #0B0H
MOV TH0 #3CH
DJNZ 51H,L2 ;未到10S继续循环
SETB P3.0 ;10s到关闭报警
CLR P3.1
CLR P1.2 ;报警结束,正常运行绿指示灯亮
LJMP LP ;循环,继续工作
2. 外部中断INTO服务程序:
PINT0: CLR EX0 ;外部中断0服务程序开始,屏蔽外部中断
PUSH PSW
PUSH ACC
JNB P3.2,LN ;监测是否有中断输入
LN: LCALL DELAY ;延时消抖
JNB P3.2,LN1
AJMP LN2 ;无中断输入,中断返回
LN1: SETB P3.0
CLR P3.1
CLR P1.2 ;使报警结束,绿指示灯亮
POP ACC
POP PSW
SETB EX0 ;开放外部中断0
LCALL LP ;在中断继续检测是否有输入信号
LN2: RETI
END
用户名就是我qq号
你把他发给我吧,谢谢啦,,也拜托把这个程序翻译成c语言参考一下,,谢谢了,烧程序要用C语言烧
可以告诉一下咋错的吗?
追答结构混乱。
SETB EX0 ;开放外部中断0
LCALL LP ;在中断继续检测是否有输入信号
---------调用子程序。
---------但是,LP,并不是子程序
LN2: RETI
END
还有一些。