ORG 0000H
LJMP MAIN
ORG 0013H ;INT1中断入口
LJMP PD ;转向中断服务程序
W1 EQU 50H
W2 EQU 51H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0030H
MAIN: MOV P1,#0FFH ;P1设置为输入
CLR P3.7
SETB EA
SETB EX1
CLR IT1
LOOP: SJMP $
MOV R0,W1
MOV R1,W2
CJNE R0,#0,BJ ;判断R0,为1转BJ,否P3.7为0即停止或不报警
LJMP K2
BJ: CJNE R1,#1,K2 ;判断R1,R1为0停止或不报警,为1报警
SETB P3.7
LCALL DELAY ;调用延时
MOV R1,#0
K2: CLR P3.7
LJMP LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PD: MOV A,P1 ;读取P1的值
ANL A,#0F0H ;屏蔽P1口低4位
PD_A: CJNE A,#10H,PD_B ;判断DCBA是否为0001,否转PD_B,是置W1为1
MOV W1,#1
LJMP FH
PD_B: CJNE A,#20H,PD_C ;判断DCBA是否为0010,否转PD_C,是置W1为0
MOV W1,#0
LJMP FH
PD_C: CJNE A,#40H,K1 ;判断DCBA是否为0100,否W2置0,是W2置1
MOV W2,#1
FH: RETI ;中断返回
K1: MOV W2,#0
LJMP FH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY: MOV R2,#60
MOV R5,#50
DEL0: MOV R6,#91
DEL1: MOV R7,#100
DJNZ R7,$
DJNZ R6,DEL1
DJNZ R5,DEL0
DJNZ R2,DELAY
RET
功能是能遥控设防和撤防,且具有报警功能
2272的ABCD为状态的编码
当ABCD为1000为设防状态 ,为0100时为撤防状态,无论设防还是撤防有人经过为0010
在设防状态下如果有人经过就报警
在撤防状态有人经过不报警
2272的VT端是解码有效确认,,输出端(长低) 解码有效变为高电平(瞬态)
2272的ABCD具有锁存。
VT变为高时,检测ABCD的值
报警延时一分种
现在出现的问题是似乎进不去中断,,高手帮看看怎么修改